author | Wes Kocher <wkocher@mozilla.com> |
Wed, 17 Aug 2016 16:53:20 -0700 | |
changeset 309864 | 97a52326b06a07930216ebefa5af333271578904 |
parent 309839 | a70835fe9f55c040d4d044b5c55f658d2e399dae (current diff) |
parent 309863 | 298b62dd02244956ed90f80b029ac9e53352e934 (diff) |
child 309906 | ba84914a7e70aa4d61aa1b8ca4796fae7172dfa7 |
child 309919 | 11c94ec980d60a48be403d003798d64269e785ef |
child 310050 | df38e89c572044e53ef457b0446adf92b40745dd |
push id | 30571 |
push user | kwierso@gmail.com |
push date | Wed, 17 Aug 2016 23:53:32 +0000 |
treeherder | mozilla-central@97a52326b06a [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 51.0a1 |
first release with | nightly linux32
97a52326b06a
/
51.0a1
/
20160818030226
/
files
nightly linux64
97a52326b06a
/
51.0a1
/
20160818030226
/
files
nightly mac
97a52326b06a
/
51.0a1
/
20160818030226
/
files
nightly win32
97a52326b06a
/
51.0a1
/
20160818030226
/
files
nightly win64
97a52326b06a
/
51.0a1
/
20160818030226
/
files
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
releases | nightly linux32
51.0a1
/
20160818030226
/
pushlog to previous
nightly linux64
51.0a1
/
20160818030226
/
pushlog to previous
nightly mac
51.0a1
/
20160818030226
/
pushlog to previous
nightly win32
51.0a1
/
20160818030226
/
pushlog to previous
nightly win64
51.0a1
/
20160818030226
/
pushlog to previous
|
--- a/browser/base/content/aboutDialog.js +++ b/browser/base/content/aboutDialog.js @@ -37,17 +37,17 @@ function init(aEvent) catch (e) { // Pref is unset } // Include the build ID and display warning if this is an "a#" (nightly or aurora) build let version = Services.appinfo.version; if (/a\d+$/.test(version)) { let buildID = Services.appinfo.appBuildID; - let buildDate = buildID.slice(0,4) + "-" + buildID.slice(4,6) + "-" + buildID.slice(6,8); + let buildDate = buildID.slice(0, 4) + "-" + buildID.slice(4, 6) + "-" + buildID.slice(6, 8); document.getElementById("version").textContent += " (" + buildDate + ")"; document.getElementById("experimental").hidden = false; document.getElementById("communityDesc").hidden = true; } if (AppConstants.MOZ_UPDATER) { gAppUpdater = new appUpdater();
--- a/browser/base/content/abouthealthreport/abouthealth.js +++ b/browser/base/content/abouthealthreport/abouthealth.js @@ -145,17 +145,17 @@ var healthReportWrapper = { Cu.reportError("Unexpected remote command received: " + evt.detail.command + ". Ignoring command."); break; } }, initRemotePage: function () { let iframe = document.getElementById("remote-report").contentDocument; iframe.addEventListener("RemoteHealthReportCommand", - function onCommand(e) {healthReportWrapper.handleRemoteCommand(e);}, + function onCommand(e) { healthReportWrapper.handleRemoteCommand(e); }, false); healthReportWrapper.updatePrefState(); }, // error handling ERROR_INIT_FAILED: 1, ERROR_PAYLOAD_FAILED: 2, ERROR_PREFS_FAILED: 3,
--- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -49,17 +49,17 @@ Cu.import("resource://gre/modules/Notifi ["TelemetryStopwatch", "resource://gre/modules/TelemetryStopwatch.jsm"], ["Translation", "resource:///modules/translation/Translation.jsm"], ["UITour", "resource:///modules/UITour.jsm"], ["UpdateUtils", "resource://gre/modules/UpdateUtils.jsm"], ["Weave", "resource://services-sync/main.js"], ["fxAccounts", "resource://gre/modules/FxAccounts.jsm"], ["gDevTools", "resource://devtools/client/framework/gDevTools.jsm"], ["gDevToolsBrowser", "resource://devtools/client/framework/gDevTools.jsm"], - ["webrtcUI", "resource:///modules/webrtcUI.jsm",], + ["webrtcUI", "resource:///modules/webrtcUI.jsm", ] ].forEach(([name, resource]) => XPCOMUtils.defineLazyModuleGetter(this, name, resource)); if (AppConstants.MOZ_SAFE_BROWSING) { XPCOMUtils.defineLazyModuleGetter(this, "SafeBrowsing", "resource://gre/modules/SafeBrowsing.jsm"); } if (AppConstants.MOZ_CRASHREPORTER) { @@ -736,17 +736,17 @@ function gKeywordURIFixup({ target: brow accessKey: gNavigatorBundle.getString("keywordURIFixup.dismiss.accesskey"), callback: function() { let notification = notificationBox.getNotificationWithValue("keyword-uri-fixup"); notificationBox.removeNotification(notification, true); } } ]; let notification = - notificationBox.appendNotification(message,"keyword-uri-fixup", null, + notificationBox.appendNotification(message, "keyword-uri-fixup", null, notificationBox.PRIORITY_INFO_HIGH, buttons); notification.persistence = 1; }; try { gDNSService.asyncResolve(hostName, 0, onLookupComplete, Services.tm.mainThread); } catch (ex) { @@ -2845,17 +2845,17 @@ var BrowserOnClick = { case 1 : // Pre-populate params.location = location; } } catch (e) { Components.utils.reportError("Couldn't get ssl_override pref: " + e); } window.openDialog('chrome://pippki/content/exceptionDialog.xul', - '','chrome,centerscreen,modal', params); + '', 'chrome,centerscreen,modal', params); // If the user added the exception cert, attempt to reload the page if (params.exceptionAdded) { browser.reload(); } break; case "returnButton": @@ -5200,17 +5200,17 @@ var gHomeButton = { }, updateTooltip: function (homeButton) { if (!homeButton) homeButton = document.getElementById("home-button"); if (homeButton) { var homePage = this.getHomePage(); - homePage = homePage.replace(/\|/g,', '); + homePage = homePage.replace(/\|/g, ', '); if (homePage.toLowerCase() == "about:home") homeButton.setAttribute("tooltiptext", homeButton.getAttribute("aboutHomeOverrideTooltip")); else homeButton.setAttribute("tooltiptext", homePage); } }, getHomePage: function ()
--- a/browser/base/content/content.js +++ b/browser/base/content/content.js @@ -1189,17 +1189,17 @@ var PageInfoListener = { if (val.primitiveType == content.CSSPrimitiveValue.CSS_URI) { addImage(val.getStringValue(), label, strings.notSet, elem, true); } else if (val.primitiveType == content.CSSPrimitiveValue.CSS_STRING) { // This is for -moz-image-rect. // TODO: Reimplement once bug 714757 is fixed. let strVal = val.getStringValue(); if (strVal.search(/^.*url\(\"?/) > -1) { - let url = strVal.replace(/^.*url\(\"?/,"").replace(/\"?\).*$/,""); + let url = strVal.replace(/^.*url\(\"?/, "").replace(/\"?\).*$/, ""); addImage(url, label, strings.notSet, elem, true); } } else if (val.cssValueType == content.CSSValue.CSS_VALUE_LIST) { // Recursively resolve multiple nested CSS value lists. for (let i = 0; i < val.length; i++) { addImgFunc(label, val.item(i)); }
--- a/browser/base/content/pageinfo/pageInfo.js +++ b/browser/base/content/pageinfo/pageInfo.js @@ -638,17 +638,17 @@ function addImage(imageViewRow) //******** Link Stuff function openURL(target) { var url = target.parentNode.childNodes[2].value; window.open(url, "_blank", "chrome"); } -function onBeginLinkDrag(event,urlField,descField) +function onBeginLinkDrag(event, urlField, descField) { if (event.originalTarget.localName != "treechildren") return; var tree = event.target; if (!("treeBoxObject" in tree)) tree = tree.parentNode;
--- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -4656,18 +4656,18 @@ childNodes: [null, this.tabContextMenu, this.tabContainer], firstChild: { nextSibling: this.tabContextMenu }, getElementsByAttribute: function (attr, attrValue) { if (attr == "anonid" && attrValue == "tabContextMenu") return [this.self.tabContextMenu]; return []; }, // Also support adding event listeners (forward to the tab container) - addEventListener: function (a,b,c) { this.self.tabContainer.addEventListener(a,b,c); }, - removeEventListener: function (a,b,c) { this.self.tabContainer.removeEventListener(a,b,c); } + addEventListener: function (a, b, c) { this.self.tabContainer.addEventListener(a, b, c); }, + removeEventListener: function (a, b, c) { this.self.tabContainer.removeEventListener(a, b, c); } }); ]]> </getter> </property> </implementation> <handlers> <handler event="DOMWindowClose" phase="capturing">
--- a/browser/base/content/utilityOverlay.js +++ b/browser/base/content/utilityOverlay.js @@ -538,17 +538,17 @@ function isBidiEnabled() { return true; // now see if the system locale is an RTL one. var rv = false; try { var localeService = Components.classes["@mozilla.org/intl/nslocaleservice;1"] .getService(Components.interfaces.nsILocaleService); - var systemLocale = localeService.getSystemLocale().getCategory("NSILOCALE_CTYPE").substr(0,3); + var systemLocale = localeService.getSystemLocale().getCategory("NSILOCALE_CTYPE").substr(0, 3); switch (systemLocale) { case "ar-": case "he-": case "fa-": case "ug-": case "ur-": case "syr":
index f4642caeddd0d6a6766edb1f8017a05564c41fa1..92370ee7aa3cebc210eaea98e99ef927b692e1c5 GIT binary patch literal 46222 zc%0mrV}Bja(}$xbCr%ohjosL`lV5DxwoYuLF&j3v+1NTcv2Ek-|83k4_OrY5XlHh2 zzSnM)vZ53+0zLu+1O&2-w74n+1SHD;1_1V-#jF0M^xp(yDWV_(0a2fT_-_2|-yYsc zTH6%@f++ld15&>TBlw>Y*G)ppP0i85&C}S$9Ky-i+QE&<!Q73Mor#5s$L?o<A_PPe zl8m^By4U*ohi4n5w#Fvn*CR^G<NnQ2YU_pnQxnM*@*d02(64K0T(W!TA7J0!E0JS^ z{UkKflMo1a<1q9=7M4NoGQ1Uw^|#8?hVtp(d-|^|zE^Kj;*yePhrcT?i3>XaE-ATL zm`fi1jor8z(Yf+j(P3#SM7FmQBUqme=lp-RG{}zHA@jNbB?y>~YuNf~gqz5AF1M*z zs3WK?M}{o&S~AdU!wuj9S@Y5xXhrq8RPEM8?W8F*L+jtinGJt*@1PT{qj4KRTg0M& z9S0xgDZ{Q1kkz7#>cJDDhlGwe2?JPf<6gyJ>rpHe0nXUm<}B1<+gjVFmR}PJra6O# zrT{`QU*NisUt5nZqBEDy77(rOr{oq@Smx?WSi+~J>Jwi=&ZG?*z*Lo9%#E1J*OH}z zG!yQoqMx6<#A_C&G$QcDL7V8)L~I*(eJkXnyKc!sFQPR#fN!idgeOEgcX-4|-tE!^ zNrxboHFMhj-Rm&my~B)5I_eLD8`|tJJS2IC0w-;;0w4_YMv#0U)xd~Vl57aW$~FJb zKF;~Wx@O=GxRYSe(Cyzr-_GC#hm?f$ddd3yr15VcDJCzV$U2XFU=Va{-702fi<>W@ zfSkwd%9IdLRzxqvw6iQhZiHdx#h@A(h$4b0G&e|5Su-~-NHkgsw4`)#Sw!pM?fJEO zM9MsLKlJCHpccUw5(h>`q`)&WC!`DW^#lR+&Q0uBKD1kkzW;~{SVjucWP`=waQgu0 z0wgr*Xhv)hMV&#$Na69L=x|JBXZ2&E#AGm)Ym?$XL?gLv&{=~@_~T)O8A>2dR<&wl znl1p+CBg_<8wmz0rE+20kipNP!ZAYcGoEP~;q*rTJnWQzyNPI_E=}E{McRtkZb4DT zHB~MYeSxF{n9N277h}X*%@Q#WHT1O<uQactN8STz>syndP|<}fu;c)=fU{;ZW6B_O zXc@<2@>1X*qG}U#Yh6H%2yK{36g4?xR1*;cXdsy!3THGbh%%s;yX589+`H#8&ewg$ zmgf?S>ra^Y!UrjG$@j&TDo<P50C`+N6Eq%-(BOIegBO|^v2T!-d*+lukoduzB@mQ8 z)5l{~iS7IY$uMzLys&7hq@v&NGQ${}$0-1`@U5-rnE=vciR4?R-M0qiKBjbGpw*06 z1q*@-%vdH|k}5ePJ&JMBTRLNs0}B14A_L#82JdDhYc*uAbz#5*&J`h_fF6U`_A{TO z&~2pihSM7;%>08roG*5{f>fMrcBEk4e!v0|E1cEHO$-AlPNBl8WtIEL-(d{z90_HF zg@{Y0(u_~D6y<BuckDw7;ZhRvhjDR45{B^ia1x5HnP37To=6kuSflvNzhq1m?~VZ7 zE0Q6I+q=Y6ij*8F-P9NdQ7b;ieE1D9xZf)Hxn%ip>uVgGR)?fHgU0<iz4mn^m_ow1 z6wpWd$z?i8MnosNB?Uw<T?@-onyn~)C*5IFN5V&l;tWw98=E+G!d*9#PoL>?BT?c< zB15CVlJAUj;QZc00k6$VIC@Mo(4ulyMXOZoOK(SD>qp3sdfHqIHxC&{c}C7wKvn_+ z5*Y)~lw26eBn}v@q0A?%;HFIMrA}z^;K&6H8S!}B`*=ard<`>$wO=qrGk2o#p+;@j z18x_nUF0u5$ymNRmo4gU#YF2Aj$f=M`nj1zY9zI)ikd`dLsiMf0d5s6Iv5B9-*B;f zv4{qK!X_#{mI!^T!iXQl4V^qfZztSY#vUSFxZ#Xt)iN~&jEdASj3N$F#tc@*lG`CR zHb=39qj1cTNt^GwqoEhdJpSlurW|23il~uaC1;>VF=QyQH(lfO_#LK(H=GQG-c*10 z&2Cgu3)_eoW90pu8O-r|G`Pe86TkAye;+lj`N(OnGj;h(&(@XY-fzGoXZB8cT(~Dl z^gAcPa}EKGF$Ousb)=G?y|gGA5p=jlhg|YVL7{u~-#-kA-%Vu_zlTYCli|n4uSV-J z$+p8n(xe3?a<D<MIss^f$0MH^GFS}=23U&0XsVJXtXSj&5QU;)s`{i+!D1tLSSbYk z@HVVgCGDt)#!nEDXS?wVCI>Enx~PNI)fXtm={RYv{tun3Kwc!{@V=Y%8#dzV?xljS z?)k&?**kb$#t;v2HydMPmu~|W7zjT?);V=}X{?KR`wHAJ%iIRiP=o<}QC*lN!r#a` zmPVwbob><Yvj@R{js-f5Zn!9<qQ$z}3?jHipc*Sk+)zRSu|wCen3$y2q#3CzU9jR} z3HhUV^4rZ;`U_MMe+UgGdVJ`$f7n)hGZFRxEvZ7Jy77?d&}P(-c+Q-3O`@d4Q)y&Z zLcPrSoO9U9NU{+hr-xv~9<MZrO*C3*RrO=<>$;;pWiX8kCSJ4jqqvUi=}qz@MD-LT zDugD|C^2gz5fm)0%Sojf`)Lo;KSEat9$5*QjdVB^w{2=-iN~-{$AXkXD_9pCPhexx zInl~Unm1d;9&kpF$NK2RSob1ce^TA2kzSDi1Uobb(Woc2^Y6@mGph&Cg?aGlP!etb z5r_Hiz;r8ZG6PkE)`Mz{=1cO=?>|K1g^{)LJF7-(*aNs`+hiY{Z1?pgLoTlS6F(5r z(5H73Ck`@IA=455NYQDvAlswLHP_!tod1g1)8Ymas>&K_-EOrjei*(FFpB+m`cEQ% zJT^Yz`F1OR{8i2gtcCgyC7W@;g8(QT^;{x_wp<BAP?cFvJ79y=+#IY*w_e8<=W&NS zDgrrv2LKtAj9!1FB4Dy7eOHHN6y=MMr0g?RJz2V}5#dFdcc++Fx0Oc=x}sn}GzMjQ zAoB2rPae%JG0ImV^NO!>&QH0Q9*hWge(OPHg_}PDMyA4+45k30TEIhc#%8g<?Egqg zCbbi)e$%RfO-VnjTtlF~!<s&n^{NR%7c$Z;46+BIZ&yGdhW<xm!pEt&+5h(_DV;l_ zDd1i6k|xlmjV_|^Cc1?ru+5_w;oi}z^zvGlxR9g(NQs0c(k-b~S5z8@o@`|Q&73du z25+F$TfH!rDOF{F-0lr#3fs5}>jsA?F>)!7_rDkullJym{2!(WuEH1aBjVI<43DQ9 zIGHdkv%I%dv6AVsV<u5f=J0rbMJVb9pE@9Bz4JHS>_tn;`b%`FsZ|T0j2Ng@N)Tx4 z8G`khOyd-c(j>WgIR?~aZo4Mu*ta1jbQQ|%GgPp)xlz)8B=Qa=e+Sh&$9y~gWy(Ms zxK;lQ_x1TWzU~A>3EsmxGOylm`Qj>_nh6icL<~VIMHVSmR0dPoaTX_1q9}!=Nx0QU z=4DFA$h37!v~`OdTSJ``@S4=3XyK*=h06p>hrxw9E|}NOpMH-Q9S;Mc(K1s)B|Q(d z<VNPuV9!?3uN|eF$3T{n-J^>@=$H>=vRhFi%AG?{(vsnc?&6HnE|T{pr;B6Daqlf` zxK0JUXVD7wT)Mi?SqvmK=?ccsgU*-9E{|axHv7LD;Sm9uOQBkRWY|f4etdcP9$*YE z@%}5Qu#ch8nnB~$&kNy`m54&Bd*~1wtlkbhbA=F=U5Zr6D?wcJ^cJ~eDHv;~S6tau ztCQW%;mEJZ;35)sUIWQ<5i20bq2QdK&QSPpgIhs{ik;Os5*|t(ZNvaL4Ix$jUBhj@ zK~hRPF-v>$*2K-i77IuT&x&s=N(iUNHNJ7rR5UBqq^nX^>R4F1&}O}j<^^<)elRCh zJfU)NkBORNy9$`d^_#*wNU>#nJY?A9%%eaOjjvhEs&-IiNOPX}@yidA7D;is-<il> z_m<1O{dVE&1y+Tmc7x2ROZur#IzaK*aY*;$_@g<YlI6LXWwF>8ZFl7qM)wT899^8_ z$GFREDS~lN?79xMo*`MaeKD$@#Ge*LT$<D-_`O~BG}st7>Ezr0$=U%S1DQyK)kM_a zdCoApGw%|yXcTlCa`<*PioE_XG8n=6==qlCfPH8A8KY&*La?Y7=l<Q?=M=B#Z%P<) ztZXyvWP7pt)S#@${xFMTL@I&87zmwVc-iKI5){d@Gh-9x{o0(`!)TD>P6oE_FMIkj z!oP3j2$(E{y0yE@1gYu-mUd9BY|-{Ib}O9m_C&4>Z+u^S`UlkE<!@-*OcR1H8_S)a z$Iq`qFBgu2ua6mbf<oS+NAGDDh5)DsQ{xKYmesDKBRadSN;rjjg(%*C_;L66&5Wr> z=+#Vx1IOZAQniD+T9m0Cl+0Jqu}oS3&<Gu75r)*aNDaiLM|gB+4!aBptjy}sIcQ?^ z{u9X(tH!klL0;q7BZ(_xslGy-e=5vhws!1-M}ZY)Zkqi7P**J=Qx&%hM*~XlTX!lG zM+Hd(lp%{+h|CQl`4c>hWBqI~<lv&XL=)QNrTZuMxwl?-Ja4k7{7h=%Aji|U#nikl z82a}tacJ!wlV=W`s4bo7OjqN9ds^<GbfJ&@%gT2jqy|wWtcrhdZ<g=tus4;TU*%tm zm3>&(^|cMt)dajPe&TwpoP8@MRepl0;rx8$6loM$wGro_ELBO>CEd`Y(9$QjYgH~@ z2%9)c;l+3)q-5bVC<cZwWdw`R0MW_GsqLw4hW6enBr)({_X!AaVGNv+epF*B-@6d3 zc^EWk3F}~wJh9ejlsumY#n}g&8?V<m(3pV6va|<Y+5zf%T(AjDbNJRA2$>!PYTyol zRi?ZJkiFL!q>PuqPbkb@IcqmNtx2=2$!09y8jQx82-q0Zyesr|=p&)MyTUnTSHJ(n zXxRr@BDBfg?4Nw2o5FXf598yAQDfR$Rpp8QAc%V$QSt}fuPPDcY-Mw^@ZHLhbh_KD zVweF4ll))%o1+a|@;<)&Pd0iS+ikuVUaaN&K3%5aya@{3r!{w`eGepj-63|gMGW*! znYAtEsBm#3kEn|Ir#E52O1NQRux|Asn|ccSTY8>+pIIqruhPA7`2>afG^SW``)Lu^ zx?u*=F#zr`1oV+@FNG%aVmlm0Gt`Wv>AVsMQ!^McM)~6Sn-8WjH|c3yOt(gKOZDAR zdjeYvoE_jxB#!ehX^TzB1h-=~8q!fJmKrJxS9@VV%2boE(mLmqd#V)r0m8ZmYaIUN ztLS|@%<nuBa!8b<35wbd;L4HihSwF*`}+$oVvlUkS7Fz%rvi?46^HlEJ)tSp(C=6& zh-A;^vvos%*QkrF=b^!?uCosRom|bUSIe}A`mg8Z)@UaHT!!PL?X7N{me5_AE9mX? zBC)K_>#lJ3qOaU=QuqCOWw{spbnghuShsEOfTrF`?r!P*YZfqY@GYbUd4QA@DKxTE z89|L$!m-+|>c1F@%ylXacMgP~bQs*jY>K!>*h*qm#5cH#@Uj@vHDgOFD(P~^;!8F7 z=<T#JUh~knqNMa#iQn~Wib7ai8>sgyQ^)-B{^(qE&=Dnw5t!*Y$IPh!C=j>zSq$h? zjOXHDiwvYvWwm@!O>98NH5HZ1C4Uze?eXQ=d=f4c#NB`Td?h)r!_^Hw5R6^8S2&ug z5=Wv#6%wF5`#k_Ls#kK}x2^(yem#nY9%avY3W7BLg%95mf9j?ORC^HIDCb2#fvJPM zcp0jSbL;r4m61c6_V?FwFEP_ssAKoX7T6h?<m1^Dv~|b05|@W7I&hHnkiEx&Ew9q5 z6L`HvY&h;4Y*KdYG-!8le)Ulv_%J--18q8l+Vw#4j<JRK)u`#%wz)2=-mX(!utENL z3)K(g3GqSRdII?6&!U=ow~2xj-F__N7qeSfkd&zm$Ht1ahy1qhUngH|Vd=@B(^13a zOF-hc(wtL7Kfq=IghkEgvBAbUh#3d}_gnaPSfz%_gJd;L97e?nte_~Vlq8_Fr4cXZ z{%)AuxSM!s#Ar4kh#{SYPP~eR%$P5Wc+b1yLcvL|THjZMz^yZl9f3So_VUEnhVA4K z*QpCTudZHmx)9NPa*~)Po^&1gSo$~)vWCS}tva9g@4H71NzV?%9Rl_T6I{TwnqT+f zT?=^cJU?r9!vng$JsMjzES=)%JU7u2yLH%5@EPjOg3k9THm&yy6mXwE`7u}bc~&0r z$H_XSj)!t%{j)DcF0Q^N9Ce(fcd3l1(o=8RR_Hb&(CVYl(Ehz><?+kh*I%q90|!1a zj3VXvjJ`=pFs8LWe8py`dHwl9`o44ktp-!_HvlO$TDX`k7%#Uk3;}z(Z-cf%v-6v+ zjzpaA?i7S1P=&TTSIjDo9k#HOI(He?TsSt?NI?;u9Uq3iN<}81Awlugy&^NHSyBp~ zlS}RQmO7$nZcT{-7XYD!Gm)Ygm!bja{yTuw#unr29?^=d9##L_i^)5l{FePZ{eR_@ zkH4pm+Z1+RzaQS;9hdS9`~_EhXcoz(9dp+)nb4&i&stt?cn4fP3H2u=Xm9-I!PaZ} zA6~$XXzt9S*rxx7adr2bwY_6QQ`@8-IK|QH>5SX!z#!ltfn?`of!>_#IakQX?_vwj zbRP}>Gv1l7_i6Q&`U_NyNW$H|3;`XF`Tp)(tNL|ugZL)+@xgVzx^gQ;%o=ZK_=Q|| z5}452BfI@_ybJgo!QVM0FT9f4lt4p+B|@bzI6q05VKkB)A;;-e8I+$SRpd|8D|J7z z0k?Z0u*~<jnY$H+T<aRaa62>@l37w~UW#>6ueus>)y~;DXslIpa(DlU$El<|KUVm| zy=Mvo0;%9*|NQf;po86>rM*5Om&roPsEZ@It*E$D$K>8jif6*kNQ1%ci%QB6<MfFX zW-Jc%lvMV6_D5O~a?Bog+!9UBBB;g51;@nh``l{y?{2N5yad@hU1ST(vgg{XXNv%H ziv4=Y*{8R7P;&n2e<k?1@yrg&2<vSW#oVQAO5iUB*O~l-ujkKJCnFCe=s?O}H&>s> z$O9yzL$-w6g8sYWm(RCj)TwM&FG^4OQ*FC}UwNT+u&3ppQ@*Gl^NJ_S7k6j9XRTe1 z56c?l0c1!wI7fh-DF8cEejh5vRS`5UZ)KnqVpP^Ta!ZVMUW5n6&t~dZB>FpeWn5u7 z>eGxQ`r=%2Y5MhD9}LsJ2AEbt@RY#H<xw{D!s5ChH7J|9ML==UKV3iq5X+nFm`&&O zwMVVZ?@>EpJw#op`&*oxedg>0BK-$H5N+S{qNuwe3?)Rc`FGlcDGmZm&Y3=sFFuRU z<%A!k=NJ0@BW(Y;=&fE^?GHo91Bz6*^qeMWGzi`yYx~mqM%o59GeYNM{ID&_>3s25 z#xS(=HGzrIo)6vUR$IYQ-5uelS1}ClOU6z=>r$E8wLWK}U$=l!V!!Y-49gdxfcx$W zzj$Ze0E;I6$DJo+>Xq)6;Jt)=y)Wu~KZggy+$|etm+q{nt*cd`ab#bq{MX(s|Lep4 zg8IidgN3g@t<Av=dhbgTAyXWpGt@|aP(q~V_h0f4qmf;J;H>qydONMW(N!k)77Aq^ z7if#iZ?P-U(R1febefV@aV@TyZPzhFh^%e#Q#lU&L%NPU18We(TQ;m|jV}YTp*6zP zy_q6T3tI6cn}$0*Qi|7>sDx*b$bS$e{!ofE!~Vv|O_l%E#)>+koC%I=Z3&T$UTtt^ zx_pM|SQ2gCjg?P0LWfjH$80XQs4w^2naLemtO8d@vnJA0$p1ojj?v0F>i2*zkKeA& zm!uOqa2CJHF0m$pa|Y?6=~j(d5Vf;Ku!oC9pj>|@_+<tL6!x32Xgzt_Zyrin#Q1r4 zBj*iB>|i4NdVgIAi<x+zed>-d?KzxIzJq^T9BTEyFBU~E+-;VQ$EOf%SbeQY5Nc!> zY+V}<3g-+T&K~WC8?jW{c)n2jZ}SfNs51X8j%AlU&l%eAU8(LM&~?`C`zz$;J6^~s zwlRp}n%{4W`ra=Uf#UWjEOM-f(q+h;%;f1eEyH-}p(IwfZftMz#y8~{SDMx^y4d3A zJzPGVsG_iMC3FVp8~$L(fc+28d3=I{-dxZjvnKv8TUdU>2dguye04e?pOowSQ?FN8 zd7eOq*H5avRVq8Ua=ii2#_7qZ2vtt9iK_Fsxq21e!!0h_{ILawrw{g0g#;}~edm{q zG)P^`1gS%XdP8d%90;RbSx}W@ROBeXEfK<k71XqMD2AX$DD{jCSl2H&OWG;Ml)n)9 z6#(0XZLyVxOFjBH;Ek`V>v!LB_H4sQid(R$jmVzB1=VBUA*^6qnJ0-qwHOSxt8=XP zc1T(q^!5Hjtmis>X|%uB`{*dh7Z$xj>g0FJ_t~o!1G)%&!5P)~31d?3#Gsz7On{=k zfeIJwlrDH@Yxo|?s^Osh&h;;@4A;=_OFz0wy$39QLLtpiU-J);N{gnT&{~a~W}b9s z#$jpc$DWGv@{c|v`S=nsGU9GY9OvM&>^9s|5=JS8h;@#%Uv4vOy^fr%`Fk<<23Vvp z*RWfK@$ya5)T~HekNhR4&KH;(|NX)QF~lVbKu}9z*Ie=8k7cM!%G$T+V@g2d%t6mW z)EA_9zz5qU=73`=9Ui!zS#NsE5Xp^LWHD-)DeQ2bj+>9yIbr!!B8vtAluaSe+<2z5 zKoxP@&I#~+6JH5?2>SQNb|``g6}Tp7&H9$E0qNP@O?uQDBLUoFORm%%+vcFw*aN&~ zju?;v1IYZe&taNSXkzI{gsDf~i}Kc;n$V3>LfqB|5gg~%-4m)^;OQ67&#<@^fD@tj zSAzeFYs?brFTE<uO8FFBq$94JNqhE-wPgRJVAQYB8F~A^fu|fFBnUc;U3cX-T*cWb zeRlwUAqOf#5747^Ts_f!ZRmD0Ym8<8Q%ABhktIRdW5G%~Ybk={x-uB1d=?H@G@|RO zWw7hZzSVhfN8it5a1V9bUIp2$qvlz7`}q(|Q7!NRH6!HOF%!xnZ0wS}JYunn_Yh7M zMNBCXV1o1*PYeft?9Pu|r8Uxo4^}RPCO?_?HDxoav|gUevE4^84E;wnI7$+ep?_Ev z(FZ)#7k0VO3gJXeHdOZqVJ;lbf?)o@w0X<B3%vRoVAS_S;^FP-8M)qRCDqTN$G5^s z;THx+;6rl7?sKcVaJP1a<TA5*Tak<s`=+BBG-ep;JM3sJcP6CYr5%w7ecZhT9vU(* zfAup9{_pRh{bPp&|BN|(=DlBY#vxWJPZ9=`_do6R8&T03t(umLRs)W^q>fz$k#4H4 zb~TuXQwfnltI&Vlk}1{*TT!Gj-3?=f)yNGZ?AEGel_9REnq2ZwH9Pv4u#v@Yi_cNw z95fmzSU+xwWBbdttTtAl&scTmuhipzR)j)>n#6orM7Tux@|R-(UL<(knpo<2rRXwI zL^5I9a~F89P2nKvpks*`nz3*zh#MnC<!avRJfu(jw`qqknJTd;6geH`>c-Ic!Jh;@ zX!^TI4XkrLB!0RZJ@I1-G1L^2s4>%CEI0{PFU;}C8$2!ju`s=&dgPp{Uv_wcZeVmp zV7LND+io930+%QXHlaf%jqB+<p+k?n_mzW<E218&#%|!U`(^yifcuP~k50P(*T>JV z?W30TfG-@9*G?qDx>vtu!H$=nmzw1yWeFWXE-~J0u`SDbLF!?n(sUe&d$ZL{Zmf@0 z6X+ioW}v$Xiw!FTgQ0x3RPL8~8GePZ9NVz$f>53cn<Z-)NIghGZoL*8>VCrg_!0J+ z=h+*-*Nz_WGzlAk<RO5!82p&G_C2lH{d2c)54<CLLjUK2^zK`i4dbUTdZ5WX?RKgj z`2LruWDZlrJY@QP`mNDBA|iL^lLWQbsPD<Iwwtc?={?b${q82UcyR~IyyEV*=&lEa zvA_CS%}bGANs1-9bKs|>I0ZLry4N@OOxxI$LDF5*I+mNOf>cR3!Oi;7mxZktfdHpT zGUnlUYe?w#O`n`{{y_mvVl!9kcoua##Yv|->G&JTTuWUtsi(NRa}3L&)zibkwkM?- z|1C6bgW(o+$FJD|4|;Tdb4l1CS83jX;%SqOisqN9@}u^Pu}>x|FN0lcH+Fmr7t}KL zXr4QM_Db4*RXBE^VL5z#P`Dqw%QrWBj6DvM>)F_Jm#(`<dLAado~GMf9q|pe>?0JZ zJ0Zb0>EsoK=_9WRC53q%{R@M7K27hRnMewH1&ez`X_aGP#9$B%u6m@7p_t;7ML+%B zC-0qS7%MKNhARR3YlTM6WBpNLCn|Ye8@jJ8?W=)@AS^PG<J=R=jp;yN?MiQw?WGTq zr-5r?x9<}v=_P3W1d8NCQVtQv>z4T|IU)9lX)4X$n}2S3!*xo9GyPB*pxA<Z<%CI4 zX#6!vGlHA<HQqRYFlhL;YWOQ~;$K*RkA_$IIoz#tes$9o#4-)Exm5{s_~?#ooAHcx zw~Ns;U@m=(2x<{Fn7>*mK37=B7Y~sW(o~hd9k_0Z`&c><>2}tRiYG-(DWcDsEo_>G zJiE`_W6!e=Cv0nQ9t6tuV-hZy?rih@&}KCCmB=Ne4@X9CI9rQmzUO!HHoFU;s7`&c z4d2}Gm1RSh@u#s1%tHdyz@q!b(}#0M$522P{W^(~E*uKVdGTHehYNN|>%|mQlP=EP z7A|9Nck#|(bnJCT(_f-P7ENaWyjD2n=$a+`7}498EdN;lx2NlFp}PdHEx4`G$#Xl+ zG<@hW(**wUyqBMPX^l*X{PAz$opqhjQ%i`|&mr`qk`=X%4YozG>SWC}L|;)D(~TF` zs9)fW<)<(GfBmXCelL)}=~X}Q{T{g0ezj;*rtNqXHc!heHZ*^M^oH8?HsVjn0PA<y zQzwzKBuT}>nnA`YANwCJ0YNF7YMB;8;><x257`aY?42L}6cuQRmw-T*q0U};1?2^_ zDeY^V_h)IK8AemjHM6wdxf0<$-h({NfP?%$lyoP8B!`{yy3BoBL*MK=e)o<#o*>9- zJ(P0QsIE8>p@zA&o?`17AgeTJ1P1bQ5~)MuhaEfHn`B<N;wF8rJ$gE@`3vp!9^MSK zBXV+xJG5S}DOZXnU(cRrN9Fs&-)Bs{H{KyvRMVE_<UvzA95q7VI-OA>T<w5ejd80j z;cH8R%hx1iYOrn$=T%)>n5*SW6|-Lw;@zDLbAsycNv@A;)H}zsf`$s7pogHVJQ|j` z-M>J06eXp`(^jtq>G;4$`oMS=1jM!nzD<!vJ)d(Dg-hST(aW@&Ub()TN-8O#XNs?9 z%g^1H(i|?`08Vop)SuraDcr@^-8qdTWx6V?&L>^czzY}~&Ql_aT*h0Mcn-OYH)XyK zM>US#0&sQh=>vKGFs2K3I3rpO6AWYIcMU@!`W75Qvi@%P9v7zfV`+r#2iPcvz8uBh zB5sGcEp8ah@my?H0<s69vF&AN7r6?WBMANP)T8E3Ils<&sEbo*2(*LH_AM=}YO2ko z=NX*tHy#C<%=hE4WYM0F`>xJN*2(xJL^DVFirv*K^O=Pk*BJZG?yse3W#b|xY4`EZ z^smBdi`1L&Bh$X!BYRSalBj^A^E8dskHaNn<%O-0(x(g4ihLd!9NQkS6%k{A!gmKg z!oFsys9;yVH_NgtA+Crc@1#UW+Z2iw!x`GId7oNK9kSMR*VH?vqcg~eac?Swe;#e) zg(0Bnu$uJ0-``(mTN8U-dVYT7BMHQ7Mt!`7(p!GsQ0MdRM?^bluozUVlbT*1kGz8E zt+>Lu+S2z;9ecvTDdx-FiE25F(+;g#cF%KdA(V||(sA}zk5SU}_)$`%<bQ%fDVRnp zk@=H&k>MalNfV0CwcaO_oIj_&p7{xy4})Tg$+&o;Y?_P6l=wczsLmkoKXrLgo&_Hl z**jFEI8MRU(k_!eSE0h52}em)JCipR(HzKxx#1Ewy&oF@V9m><AS(yRzRV6(p}QHm zswa}?6CST*f*{d$sxh?iM4ezPbGx!RP2|{~n{Y(+y+4Cu8%)9E=#KT|f4abbH>3uj z^*U<x`x(gMnrd&(bm|PzCVKs|Q9_YjR9)A3uwugTWAmtjxmFye*4A|<!H?e1#`<$p z{4(O}g75M3HF3`i2y*1t$la{)h3ghJ2dFfOR4`?bnL^Yz#dBhOfpFueW3Pid<6UNQ zHLuH$TAmLgj-E-B^tY>yxOfch(JL|+q@^`;*X7w7REEDUtt8d;{C(Pz#pFVtzTdnM z{WR~np1sqal{V)wV}eWfSD9U1Yp{p)Jvhyfy#q89vAG(fG(IWc{*s1F6+z?uCYm*P zt4q7P>;|s{{-Gv;W+e1JY;_7&c#?!TJ7itijPklXOHyWV7+??ut~lHbIeu}H)W7db z!@+)bo!&XNAg%aq|HDSz9y~c6zlVkVor~pzhx41b9ibZb_U3ct#%<A`+asM0eVn}b zQ?oV=9|Jt&s@Imy+c<$Q6ZD$M!FyN^l}l|mqDvSuR}nP8kVSlYScI%~al%Ti5vPel znSkeRF4y~Uf%hes(6^&jt8ZkLN-S9Ptc^G?4pF}RcjCiFNj)|D3=Y}jclR21Km2<e z7<tG!o&-D^m@n4rHx@BJ*H2@dXs5Q1Bu-xxld?_%KO}bQ7HF%r#^3RbktBHmrDIE) zPG`1rE0OKgS;T{hB`y>VYXPq!`^&ujM2=EmFXr1UxISCY1?d|<JdE(g))wv;p}-7B zCi9GYmx^a#8r3MO;h<FD^&7>~v46g41|u_~Zfn}k%Cb(EDgTUX9QNZXcZ5SbtXzba zj`R5m#)f_q&$31-^K$psXJeq0?5$z5p(?^#<&sWQq`Y5gvNH}nJ!}GdD_QelCD`=+ z8P4HgHc9_|t{$t$#Q~amQQ&A1VwQzZ&j&6@iW+n?1vmP<0ldg~|F|S%zFw13ELhz3 z+Q1{As8}L*Kjs?eg|7Ct_V*hGx*o5djiFf=MxbrSoewZ8pdU&Cz$W_{nbj7>#r^11 zmjx}&_~z|))cAhjzlp<Hcunz=N;ZSQ#-nS&x1$Z+rnl|eyN95!o!C1Cq3ckFJfRu) z7)$0i-`qQ_z?O@f^fiQ-2YU<0p1ipe))ExwqiKw1ND10!QGvG6jn?-Rv2Cw!Ih==m zKE*`(&Af$?^LR?d7<sWcdOb(>D|e543AcZ7mY>g~u(E^ky#m}G5HdVp0rL%!G(>)* z>QNlb`=UR+{)R0WtnAhwO(Sp4wA4orw|(0#t<APz*<!thvTdNei1|1-j;wGfq%M2I z(K$ATQ((BD_=d}sAjB3b#3px)4S$O@Fb`u~7&4xKc1RBsQ8(KAigF$ynBcw(|IW7s z^gvXRE>;U^Vv%PjQQG`M<I3~SgI4^S&qHPZ`tQK|?kPZs{{#2u@kIPoj|M9Dk!|fd z$KMuCLccqK)$a^jN9`Dv?ZsAVYT?X_?}48ahWg;2{}jCfZ*tOOFae-!pL{)}%1VoW zN6<=~wIj6|NPn~*z2$SyKk?wP#T`<DVHjQUllkPQ$n^Iv_Z2|CuGh)ti2U^7-xNgW zy<Eu6k^O)99FysUiyDF566d5Z&J;0*g9a33H||ju$CTUN?{h|XV4An!M$yukr#7XY z=V&a@U@EZm@KhV;^P{9k`V&f}I1AMp`R9D>1LwO6{&4S$fzvG}@f#cF2<sH*W250{ z@0tFwAJ6YWRvj_4k|C4q-uF<UT?+QUsC|8m=Ff4n2jQpzKe?)V+hC8rY#XQgL*$g* zjO{|et>DO6GTrj&`kADlok9&|o;8%OC0inHgXXDd4vXr!+s=0hc`uLki}v*WoXegN z{Z7f3Zt5d#+vf}^%pMpifo{R8ET+2+j~E3ZKNU?!V<f80!0~3U^XHd-X+s+E`BRoy z;l7s69CPYo)UZ@iGp@yXUOe91LwWIEiV{E-*(G<f47rZzg)9nsiB!c>4B4U53*#Wb zyVYH{6-Z0$Vm-lsXT$u4g6)2H`VcDcifrIF7*mly>OWBQLeqb#xfJXu(`rw9;1@*~ z)Ii8n(A*Jx=ooa=TXYkFLeHmE;83go7V0gZ?uWlu_WCsea{pHEtE|Q;*-R621_N+Q z$MJ?j?OQ+~&;IrlSEK(sO#cA?lJZXr_?Fb2p6n<6-uKcp!}q^jGyI(YQsUPH+3i$% z{xwdL0fottR1A;cW6PP=BWCZz7-8^b83{5awbf{+G@Xz{CG}Ly&FbC<BUzhm$7Efu zmbbRyh3FuK-WC*XQhbb)e#sswAr}-%u`^hY{Zs`wS94YTAN{H4x-+=ljZOnMbnKu2 zEUBm<C7{;Il@crEW_KT?Znwxm1d5_+<3XXy7)_<e<%*!yoW=NwCT>b*-Wg@LgkHm2 z1fB%UK@6OLpWo{Gw6zPKS2dG+*IxXq3*u(UK93ou)llbq_Hy@oKY7Ic37~orEm%Rm zhwVr0k0;b^FXIH>4LG<+?6Et&c3$tRX2hX8Ymje94KKoXnjHDQBX|5g>t-uCo5E*G zf`6lIQf%eE5nI9XgHaCZTfXl4d?Wg9#_zbz8V^i=SHQ=_YCmS(kZ*m)6Fk2Ta3(O@ zNvPPx!t%nu@r6((wd3Q9ZNvv&cc4@0|6ZR#)zhYRDm-bt1Ty2h&1<M4cxvun5^N<1 z7lI`L!RvN~Ev*Jk)Ttkm0{js&xbbd3>w*boxJqJ9{}abmGCK>Bv!omxqp`6=czdTE z!(w@X>R=DaTL(_#kh67S1<P<Z6I7{`KHrA|dUNSss7o0*##s7D|7c9_39gs9zwwO; zJ>y*qjHS)Ce;37#&5^QWcHJ8N3QPF>a@-DMwmSK|nwt$b1X<l-V0io4dl^$3YqcO{ zy`2hjVMS|sM`eMBpVOqcd3wi)xD5V6$3akRe_A|W8opO8@qO;-mXQ#<5Y~~Zt-}<O zNSawKHb?w}D#6!Bg6DI@D*m27xs~-SYn8W)I%sPlvy=ZR>)o17uKz<(Vgp+}K_jFf zYF$93F7jiB-8;}bWC?5Ff>FH_ICiA6gwvmUKh3=sg{zQpQ{KRyksGbh>-e5#=1va< z0Ew{MYMo82-j)CDzGi<pA|5s{q$122YV)qH;b_V!4;a*Euj|1Id=gQ&rW{oDr1J%8 zkTRN80sTLbYC1PV^8})4;!S-Osx_cHJA(1H<iNkLpT(4J6izOW1S0%&@dErCr##~i zc(%1NJ{CScHF7)?aCj_1@*DnK8a2^5I?_rlV)baRUv9_FT?3PM|LIpMW;Gjo6b->` zxgiI>ZhWsoW?p!1)kQ|1(Z|X~^nY@3gw=nC3uoXPW&QarLP)504Lp3`@^<zMKz?KA zW51Zh;K-4MU&Z1+jLx~jIs3rdz!tr}zQM!cCzIH*8cKE2@t~@emn%H1%^lPGgx0<= z6N*+b&b@O_tZohC`2ck=+KcZ@PJ7Z$m#&fqzYbR`o<={W0qyIG<!kz_sy?pM8&aU2 z1h46DzEC{4dcNb)of}6{a^Mf{*m;~pSkRHs1ANb3HuSlxRMrz*d2NQ+)RkTHOV15| zZ_}n3eb@byAp$!pmzcxveePm9`Kt`})Ix@D4{dP+6jRq?y|>MAp+YyWQLbVMdsrq9 z9)DyjVl}eoRP&yCK5YbV&cE9tGoS3OwaaG3PRMy$xt>z8X0&A+?2<uL21r}MqSqWY z%nbj+471O-OmA)9yJqL1{ZnrFM@kBvb?e4O@vwi7LgH}Z0Xa>v*Rm{kd;95%pPGO} zz9%y9*+z#8EWzE5Xz87Ii(xpJD-;KK?}4^ms@iAzRe1kitWNw%K8%wm8b-ERSoItH zf}*q1gQ8C-37%{2H|Q4r9NJ@d^oEwyStBl8FAy8n6ne21RQ6zwt}OQ(#yJ%fV$tZs zG8tw0;r|rFkzjkvnG-LLJzgE24gSr3O))iF>AQ)FES9F3Xuq<qP+DBOebw=XAn0$G zRf$9O<ALgT(pXEbG~9JA%Wzkio9tB-1<>e5;*=A%BPe$+Nz`ep9a+$6ra6^J=1)@? zyjXQT{JB5epEAoLp86J7ydX;t*mU)8RWd7^<y(XIi;Ji*#m79k%;=Nnh5q+GIxCyu zRvdHf<iK)ba?e+u>Qf66*7X-g*zOuTE@zw>RlmbCb>esa_I4aV48@{@HwCD*7wf7o zO>0Tv{AFR$(Z^p_VuQ%U{qe;#75lJ#yqW1V8oY&+iHNzS^H+b_5exUZ(LTX59!m@D z54sIiiTq|u8S;$Jsc*oerJ=9QyygW?W%K(2?qrUmz*xqNy)vph8?YLL%m>ySFk^lf zI7;i&WAe=6dEuS0Hr2B0?s^dzz^xYkkzayGC+O}GiVF7U;JVD|TeJ<MmkUEYnrpTx z@z2a2S!*Tn^}tzP<!;c5rW&w}oQy&2<t3Cdj9CbNT1d&$Q#b!*^aS}{yfW8wD><+x zkksXONeMh6Ci6V>7RN1eeTgY>Rmw<=G0M{imw26O(;0q29h8&w;fn38^Ibm@N@CHo z*Lmw#-blAD%s~g<Xm9FzF!wL@QCAXo68$Cmc2u+}Ihtn;x7t_xOH7P_E`7|e^a!-m zKd+l{<x>MWTGdi57zmEYSx`G5$$g6bZ>7kR*qW12CZixlLn_)~#fhwlMt3NbKRMOD z9KoaSv-?U7k)6(4<*DSHzVNChQ2{J(JvHxxTrJ&%g*)g<fb7s_LUPq{0Pr5A0$^QO z5G>h<G{*m4>U%;H4LKv1GZ!xnp~*-BlJAp?Wc)d2l6HHwg;@0{0n((Q_mJ3&ioc?8 zMf}BKDMg<g!|h-TuZ=C1qW-57qV(00SibJ)miF+rzC=~pQk8$?Qd@LkI#IXns?8v| z)HL!Bb>)RJ@1Zgw@nBa$XZzSQyVZ>3P$Ypq%%8QPDys_>Kek+b?Q_rSx})P<fbPwW zPbI-AJ-d9PF8oKd*{|~s$1W8weOB?7ATl_;m_36`zjb?aFSWm$&jXGh14j}2$Mk)h zPH%I&migLf3JnD!m9&43JB9Dv*J63iO<(n5nn=%F;H3@EAkB_{NXsRC48||(8*ps? zSPXxguDuc7+!^Wa^gepfWKnZ+0`{HCa}jKJhsjbGlkuBhr<D=WRX$+P^stPsxyGP9 zt56t$;vK+*sq*5RBeL@7&yf~Hg_r{svDlPVs4|*EWwnZNbUprnTzaGC9KHw|iwH5x zhPVU_lTO#z5};M<SU#U(z$MHQXiM^Ko1-ayGpM^q{PP{YdYvjE@TSh|?#T~z^y9in z@5ZL$#ck=RxR~ej&WFB=f_NMF3l&qha3}j$ZpU}28IGo%>bfoH_dPPFcSca}`*{1! zj6m;4x5B79FUFEv2dX8N*lhQ0PJE-W{OLGo$s&^Y9=GHO4JS&UjVD_iZT@d{2{DMQ zksN|vCgM@a%khoO&~W3he~CBUp3Dx>T24G6!VG2%_j@TCCgb0?vWaR3PVNAotYmv< z5JyD&TV?nAiRESaZw_)K7Fm(bIICs04|cYvH}1Tc8xkr=SW9OV$0x{W%XnnKoQL9T zCea{%vLK1%xD}_|#*y28J+n&p-bE_O7h9!rne&4^?!@8h3&w_SUBl?KE7>BSnlLP} z18^g;)m!cFjvVq=GEUIUiooZlS&}8l`0x!E(lx;AV<zxr;Qs5SOrT0Ee$R0t79H{I zaCD}IE08p+I*<HuGN|F1h{D#@T2lQyaomqpdu{@}6zz`52HEf6LHc4KD~47S%97=i z@5ZWh6H>?;HnI(jjtd{X$~7oec4<Fzm*Vc#*!zjv(>G|@>U9OW^oq()4}Ohfsxb3S zTWeNu>j`uIMQn0U{yt((EKR`}cKN-N{2JGLcVe-w7tYc&YFsS8{C$7rTB_X3sc@Vi zdRjuH*fg-~;wC(Ku<ggsnW@!=E1+EPVN)HA>>Q42?n7LY-^U{v&ugpI*J}*@)<;^S z?G|G!@!W5=b0*dfwYTVMDETW06bs=IGwM|7SLc9Y0JX@xRmD&8zM&iqUWW*)#2|P~ zi_YNR94Zf-9cz-!{OSv0E4mdIur@W(2H=ruP570n_nU>I8(m_@E@Kk%MFvJk3EIh2 z+q6fPv5kmL_Ug9P7yH+Qv`#-_$46nRoW`FrHn1d~jnGcGx#JKLzqfa9Mk~Nhj)YA1 zYCf-!hXGG3?bB@gVQn;45bDi`t{nMK32j+N2vE_Y_uYqb?j+Qul9zU_J))-F)&Rml zxyL%eUZ?HfOBY|=n+Ua+5Rx5(-dy6W+8^OEmg-0uJ62{nPj1-#h6F)wLivos_*ins zdw8t5S&Xu#sqwtO;8|)zZ?QTyMKyCWZ7^&UDq0IqjNc(J!YZZ@Bi>KcT=jgN5JuB+ zORYI{{pauG%++8cXrWcB1-9nb^nO&!8!?>yxFbM%CW<w8??&#>M6tYpdVJ)a8eEZb zz};T5`4xC;?QnA8)g$)SD5V4WjjWBWxfhMa_;1fjSQa`4cr<7I&-c?6)ZjhGzx;!} zzW49TWb*1Kztsjy6=ZcBU~%-3^e7I=jibDh=oFIhyv&$(>N9&{DmfDy%{Ju3jotew zV3BGtWohLr$QCPn#5aH<(yJ%{kYMFSvCfS>D1rFSuL;NKJxF6=Z|Ih@vs{t}M-N+* z6T=AYFT5Y#)?2c%?274}bZQfPNldpNaiGoBaKeqmGjd8c5r|etd<;psbW{~vNl=Dc zP>f|R_v?0Jg?PKA%T;Ffc;juMa<p^2J*?Lyte{MRu%Uz>T}BduMwPSy_tZA<AqlvP z#{C(7v9;OyoNlRMLxLpwpY&l9RlR>lZ@5f!QS1qIzrt18!}rU|RY+2%t9|^w^30g4 zyv83M8|l-k2*25f`iw>6P_T?~iw4mql8?)9g2Ql1T8_8Y5&KXR10spSxPyxdIC7S- zc~(p;iiQv^nM=Mgmq>B;Y_LdZGxelNadOt%*zR*4I;9_8mz!?0RKn3tnmeQVLr{rV ziqDt@YZHts1*9D=)rs+WvxEaNs55Pr@ETz<?3!$f+|JsCon6Vsf7sDYMPlk-QnVza zvAbi+QW0&M>Y}7JYVWoD>y-+=1i>%8dD`n9k<^XWDaikkp4n%{(&zS=u#(!k;K7`r z%)1&-a-H+h*^lvH$0K~dc1j&k#V^E^q;*3grc*ywHtyuCJ==yQt0mcfhO8w?KC=rZ z#|djIEMnMx)i<?+!QV>QEY^0MExZdu%Sr<9h12?DWW&nLehZ#dS>=wwYDyI8^qoBY zPbbCqrnyfun-l=wRHmIRy4Ie{gVG4C&1l~1nvqAb*Gwz$hW3zSKvIKV%JcAyq2~$z z!}>KpQ2VK^(~2Szv&dKfuWH3wK3yz9Jq$>8v;f_+D?zCtO}RL>%llucrGy>(<2VR4 zFL`y7&}3b1rh$E!Z$i7{7~(T0sHB;Hllsf>OY!QR>@()#vV;JH)gy~VtCh)8Lr{WX z=AxLZ6gJW$Ol59^$w_Ej3dwOKjdsEjG_4=wF}*&Pe6tY0aafzi8e2Ql>WbKo#oBkJ zwmR3d3`-MqcIOIAk8HDZ(GUj$1UQ4$3<n*mO*y!d9yrY0za3!1g~fd2nLR2^1m9S8 zSXMW;M|ZYFdLHY<vi|aZm#Lk)COj;{ou3ac*CpdRv~LOyL9??RRHxQs4OgMnLUyCO zKXW(>hAnl(g&N%|z?(|QGjIg>Pz_oNQ~dbJ$rlu{)<4LSA(CjobTv2XT5>ALM6HMJ zjZ+9+jmu4VuvY=0DIshGL_ntlU{R@u1?fBPE$WUbmvY9b<7)y80zU$3J59Jy9h(vl zpg{Dx40R3-?Je2F&zbm5ZnUcGzW4J*%yAOOnCQGi(tNsC^I3!|l@x;z{}E5ofJ4R^ z6m6@%xLEl<ro2)@6#q1s0<4k#y`#_+FC=j2^|)`KI{gwt+Ssk!h`lQCoJ^SzG+mP1 zGC9nX<4^X|%{Ddh94K-NRl;q<`);_*zE%tkxZCECdK?3)@XT@K7nk_u!tfj7tbE)c zNA!MySOln}+ucU?8@%Ijtli0IkL<z_eETTYUFb+j!uRnR5p>;eK?<qS)J>x~s@bZW zJMp$pH$+$MKxFH?Sy^c9u^oJ|AJ<xjJ&EJukv*a<MD)gL2rAHF17xug;t`7IPzf8S zcz&(&nRR9cDYcj$he~MYopfZp=ujtZxX@F(FvhihCoIEmZtiS*Yq+pss^TXX0}D?J z9iI-V%fAfu_Wt;Kucaw2?`M{CpX(%PDfPVwyRyS#K&tO4mu8SI;kTr=?>0jbKGJ_d zM+ZJ{*i0#ghAYxa{0yiXdjzAAQ_yX(o*!RK)l<x{79h5rKt!V5C?DVu{28KCEt=`v z1x_l)tMYk58rw<A@zl2OLM)^d@4GU+{ED&H<xZzm&hEgOw|Z&9w{POabU{%wm2e`A zuUmOpz^Dpa--d(4;K?bjJ)EFcB9&i-^CKTT$_(zyeDM$s;k23n763()>lmSx^#p@2 zQ`^f2dgE8jYnXQpoe@VG$dHPj*k&jH8)NPc5~@d?@F24q?ae=dewaKu{)YLQq6-yj zr|yiSIM;R7Jt=hSjuLP!#(#ti71wVtwpSC>nxS7Q`_mX+Bdwo{#aQl8fMZrIW+x+i zzB6!Nlf*gTLdp^K-~F#x3B7IW41*j#wh?WcBLNBxwAKcFMn01G(nT2D9r(lg^n7ft z3$C#De`h2-3N2q#JWLOBA&RPKxBv?j99*o4=KDw5x>m4V)-&wXN;A$EX%T3O!AAyK z1)ukLO-+Ce{_zIobl@3pY}#Gyp*}*oxQ*B<((|iMO4&U4y70pJLp(|wNAT{YPOKba z$_)hJ5xl@M=1U?TjX<=E+gDXo3OwLYwFe-xopUaumxwhVZ#~ZAh3H2(A0~t%j7<sT zc?n*w^K|KJCaRH%e#7(W{Hf8PD?$C%HQdAQdkWd!9WQ9b8hFd@=vh56UhO77DsE{2 zpkn-6srrxmH+83P+G{*oT1!~)NUg1^ZBZ}4aKG@NMh%M(vOhgZw(R0yf~V=kn=dD} zv(#G|7xpyoecL{e?c`shK{3pH5W~Yhi9PDJG!oVp+4>8n{N65jHOMVLl3HT=2BP8E z@%o;S=|RyCK8O<ye;5%#$*bwWKSlWIwq=rSJ|@{x`P|dx`GV*PSOpOvG%$uzd9azK zsyZHh_Bs=Jnyt~1bLE{(0jcVTazTC<C+<0L!K=0F2NX)jR0-c9L+%jB{m0AeD+Gt5 z-+QTiI9C*;akPvk2tPD?U9LiGqs}j+d8Iqf#T`*||9a{msRUxCNo-TwBk9H!*|fqs zv`zuv=M7s*jDX!|#uk#>V2&_?^?mzhNe46U*iK)z=wInGUa_6LD^lb`@&?CT6NUoh z`?uANj$~hN7mKx7SHGDSN}$XjvaT023EKi^5p?OR7wvf$Ow@6)Dy@g-ZpgPh1_kL1 zVuYTbalB7|@1bv(l{^(u@69O~CmVeFZ-&R0PZPjMYM~#MV5Vy--H>R9a5EY!5#MD; zdO!=Xt$jmI!AkhM&P!)#QT|GrOD~Qb?>mqxLhax7grM$DWV?e|1QyQ=3`TSxW&)iC z_Dj5C)0%3<kCM6B(XyXMza($Q%2L}|TZfvn{-l)p!oN7`b^0v3&~O6D*5u+pZ&2K_ z{hpJdUC~87e{xsRJ3iS+Le^|BvS5-6_;hKYAGNWs?R^DU0hjTM`T7bHWsT{9rJ^OO zTD-CN&y`l{1GPznBt0jjn*Rr8K$*W)@_h0y?&mXKcz|ZTj!us@NL~F!svm~vZ5KFD z@D;mbwiCTZE4<t&`Hgd308CA%Pq%LrnS&o4YiIrhYVQ>((8yjnWUGd9OPOp+TI^-= zC1ksK(J;jr(3J_4-$rhC2U%I?Pq2FGB(t^v%%#(8sn2-YSB#|eBgcKk)dhQCMx}F1 zJ!8<C$sut3wYnSDcb?v8B%sl&+aPs?GU>%+vT^N>GublTz%Jg#?&3i4jmoZcy^ak( zq_}5>ky0KL1Bcd;VpORRf&du=Se}m+1PB#Ub|mk<;UMq4dLIux@;tx$@xSE4!cvlf z5<R3{#@k4j|Mz54L{GLwhYE!SUJG~q9DZ&jelL{)jSLTE26!Qz1-QP58k+&j?(rJq zzaO??bCIAl-XEp_CSQu?wCoV3biyt(HiMWyk;MgLSpWK0veNO(01beqj?|-_1KT!+ zyp%mXU9wv=-$#rl9NvA)yN1B=4GmF@(3p>%UT?$&UNI@Ebw;~kdNdp9t9-Ag(HpJ| z)N@=UEqk$WCE-|8-pIxFy&SLO(d`zmzx|r%J8FXp6)FtzJfC*kBWSfD@R6-Hx9*zY zyY9W7jin9#>;L>5&pi7=JU+7LyP9m+AX2?oyWdY|3DGpSVGKBK)bJ;s>V`H*6Gp<V zfg1l*iZoMc-xZwM%X6ri0}NE@8L;Z>nC(^k%5+rCn|^!Sjj}SA2vcY`p;+lV&THq+ zF)hVKLz4le)+j@F971f%p=R2Z145NJR5Ad%4Di!`Fjuew^^h^&XqN2nFmU|*=N4|> zZiR=onqG?6hz2TU1z)LVH>3$oLoa%moziW6icwy6xYA3+av8#}-gE72(_`$wZf2*( zP@U5HRE>_-n$f(=x4z?cc2AD-+kf&UzI^`^`0Z9^+<@63MCk_ylhJ5opYIB;EbZfl z4agPHP7x8bu>A(X=$_bP>4uZ^aZkN90nzi;;z`u*qXXi{lxVEEjdkG#yy6&Gc9--N zTrx~CxdJL*jHbTz9PD<zPOiFjSzbo(@8tBH@+W=8l{u&DWu$f%#1aBz9$;d^`j$Yc z@qhlg3-=Cz;~V912tIgrD;1`6)S{`mr>3u2k4fC*J{h;Uj5YBM2v=TO*^1e*&H7)h z)p^fbZ^O1^wj}^?<5dTE*PCwP%U?gnCq8>WTbo;8bjC|CJtG^_A&N+y*dj%i_BJ=( zDfV}QCTesVOT@i4f(HKdA%f9a!jWmh$}B2B(&I(+g9gSR8dZd}F!@pjY)miMYK48_ z1io90JdIRF$Yj1#HcZ)f@7=gl6Hp#yP>Uyjd3nc@{+)hr0ITO!YsxU?$c%R?Q(N?P zbna(=*2tC@{*%X^oy#N52Zq4$jRFqDH_dG}BSKVnm7<uQD%ezJWl&gQ(j3G9PGhkA z++1F`a!GRZa!Jyiy^b|M<d~7X`^~o`kJ(c4)_ZQiaU6c<Prl6Ax%p@iQ4fz{O#k=D zgeaZ;)2#t}3DE&Ohe(yPOBEuO7w@BRl!t9w*p7>1Nv!f1{?w63dOnD$PJ0wfXVAM2 zXEHo};a&Xe$kns>qqC7>G^Nck{g?p2RuFR6$3DpDZFdhm+|AV$@={zhH0i&f7_0$T zq;@>;Jl)8r=Xa3y8y4O+cVY9!`Q>c~Bi=Oxj&Fedi_gzbwnBCLTD{$M%lmi@Gq3{N zq}c4tK8C?@_R9%Zdb|+vGWk(k2*zBi56B+fY{IT--uC(%uxyLFZn=`LKXr-+AA24Z zdMOWr?2MF4@fxYuiCz!jaw=fW4$XVg85<RnQ*FH2D|(Jxf1gro=?rG}AlZJRS)L^Q zLtE#b#xIPZmBufP5*91yTxp=km`C#&ZS&5LeUQoh`}&S?b!CN7*_GW(pddxRSJ{J1 zgS?dUf#yI@lb{ZOSg{sJYkuIwxfPbyYGBOG|MJhzjSqq2WttZDn-;d)Qfr;^II`K4 z%p|gmYnsg*m?XX&ocS17Eo*v1kp6Jxay1<<CN&#sL!b?}jupwreIh!~eQvqRt}703 z{gwOq%A?2G+}H%8`gIs|`JPMi8YV3%Pj@XRONjQoT%<rL6T|NSFv1v$?QO!z1CheB z_iEnx5xf?{Z)1w1eO<*(=J)NAssfEzK7&{}2di_0DnyO%%J$|khN9Ngjo}l<=6yf& zGn6MLGRI?kWrcF;hrYGo@GYsKOkxKqy6E$64Ce#QKG*8&f{2M`k!Xyow0Yn0Gs~u0 zZ{vqrwq1G85I9~gaOm(Y^V`i75vWsuk*a|0Ny&Dus_AxthW>h%9rYV#aJWKmnDY`z z(#r|Z8iD4SYKu2cl^J!c%;$N0tI6#2C_3=ECv7^E7%(~@O_KKa5$%GV$V^u2A9>I> z_MjK62AyD;(FvNI_E1xYQeHvtZ(|UPXE1TNB2v=zjE9&8!txlRzS;fz+bbx`2DgyG zref?(%!h_AyJg<<lRt^Hy2rP<wM8!FVccA>+3Q#XE)ZSsQbt9&eYPHIrX88^E9ncC zEuh{Gzx&Mmddv4hVT@sYtAQ}q>xRJba)AT+rVCq5_Kp^qD7snw1_K!Tq@c-Md?0gg zxRUC6H3&>ZqGu2T`HM@Dq=UQ;A)si<<OC?&76*$irBo-WKpVcaTH_rvBa|(fe5GA^ zo2w4(-VrqVGbn?}(7|3p>ic!nrKZ1`P8LYm;qh!XMWn9CxuAibJcxFS1Kd3jD|49X z{fUQW2BLiG!CVQvR`voClc*vk5X|NCSd9h%U-uNN`wnsYhd$KhB^r&S_M#-C8k99< zm`Z+^?ATC<Kx5FXCLM25ii{^Jh#Dl1<lT|So_JwSC?BaqwzeC9zIg~7FT?)zS64?i zn(Z6?P;u{(8T?SGPA7AE;%<>~&j()>gh|KBJBKU1EPwA?UWz2W+(f)KhLUaZ=Gh9j zO_T_YVXon^ujumT=@BMl7uVN@FRj&h&#p@J0~x3Wil>g9?cpZ6prHq5P<G-qOh%F~ z%npr)Q=QL+>231dKZr@BhG8X><H=@I@~sWj)WIYxk|sVy;2~OdOnIyq?faS4sGPX( z!XR=*gzsg*Tx(4+_5D8C3^?-M_c1y<8v#eXjvc?(QP<*3pgHa-uE<#fJt{%e>D=oH zQ#zsTT4<PYtUdu)UJ91B8!XH(U1=*1EA*(<8X&|qL*RHB<~M>{7q{Eik;yV(^k&nu z(%BSJ8I-J^%aElIOkYM#m~6~^scdM5oa-S;#ej%6O_E;B>sV>~d}*mlH3<3G!Aagc zTVbx@asOJKTgHpLZDs^l3f8=k#dg4LV?_*bw&}BX*JM9v4g!sVBCl*$FM;myJi6bq zH;a-DQR2t6LJ6Bt*o49*(BK;jPea(O<NH3o(kN-Cgjvz+^Q|qs@qO7JsPj85pM{x& zJ&*T<lE#2#C7(0-ghC<%Z@{{0QgNMB<^%rJGu-~+Z;qaCwUAmP3><bX&iIPwy^yOr zeKrg|7av1G3fen(o~v=V(tDxGOTnqt8jfv^Tgt~$KCMO*0Y_eKLa<j9aA@@HOVt)P z?iu6!MqQeCGMDKcP}IZto1S8-K?;v<Sd+SPrWW0$Nm8>z+V#?2hX4+hbL=bSk^_FS z*5-FkuhLeU?>#)tO=CsAxLjqf>GSRTC)ihTd3dA2&0_`fQnD2&#>Xpt84vT4KqEzl zb}C~#JW;9;PV{jo5tu4FhmV83dJbph6wdNVob~fK>u1Srp2u!(Mr{E%FQ950c=^#j zAV`NaCQY=ip2tk>8xWfGkdmb_sBLD!2heT-$PU)=nhi!=JLCPF4K=Gb-$rq23Ke%# z1K8(SoDVgdDtc{Mh(6L?7$`|eQ}=rt!oZr+OgR>j%B0J66s4dUDD0dYr?Lb5Rtuo; ze|+-v%n&$UqJ@TAEQ!fU!NOKE8V!&p&$0=LO!u#hGi&G}*m^vL7eSJCV|mdXG5aFD z4uHA3$GB_p-A8A5(`<!`ZJ~_e!PPpycXo|^MThS^ILT%Z^2voQ-ZnGBO``>#tG0RF zctrNKg(RPMQ}H`55j1*2lLRdKkHMf2MOk_BYo`%9=&5GyB~C&5Ewr6W9`kY|w3R^w ztqkYX$()G5k9dp1$l!E&=lv^FP+RYjg=maXy$m*ftHp@p^ksza^9@rU{s`jE_t6eQ z9AOx>1Z!b5zxUBr$Sp-DLvnW3Lq$d-5_<U_fUVFl;mFui5y@7v1g(~bbRBFJV5yMM zi##MZpW8hIj+baF_4W-jCD+3+zqsAVWK+^ZrRhz<rVzvQs3iNy_={*dcJ9dE-;49b zdL70Xp4n{j`=?j&l;*pRO!JQ2qZDmP)mMDt{3Z{r)%nogarP7({$Or{!=)Uvd7B$5 z1tif>>wMl#bQ&2V^irTfKWK=4p-W$pTVIF*m{@Su7fvuhYEGw@NgP%=d920;?&gJT z3O!wGv^s~GJ}{6FP5LiYCZW3C$8U+4EKPfxf#*@Otv;G0G@x&}jq>twyjGp5m=x`N z{NruK(VQKPJLm~lDwd$8bsy&?i281fTB5I4OU0J7)-E92$m6hdfC-{H8)?M!5IA0f z{m8FA;&`DxXe;$+NU^)x^!h>+(tR(|Db}9)2b0M<q*JV>pCnBc$_?(6Zu%yU?IZ}h z9IhkOhKE*b{Km;;nxW=94^44ZB@e(0wKl(VW{rJCm)j>w{K@<l#z4uI94xvB1X}mV z#M5p527*R5^U<pY6+I+pTDFcERKF5+{<=sJQ071h6+*Mx-A_nRK>`{bayG5i5Ub~5 zYG1!dFa5b37o)<ya5N!ZQ~L*Pk8*GBH2%7a+VHx!zJYeV!Gt9fZ=(ZZPc%brD!6^& z%D64rRM`+k(9Q6LChAEllZ;9<-m?`NgyUf85UE0J5zY8T%CT1yaJ*tVfbBjwbMV4; z+ixrLrL{);Bc`W_P4oz-MCKCIX$?ryl26b(kE?$=eYYbish*`G(_hqNNJBBOJ6Kot zY!Io|gVTAJ?LhJR-J^`ScHB7&T1vAWgsip$K2hD^n$ZH|uFaW-$7(y^vy0mtD!JS| zUf{l!8dAW)qD$G9w3@AMW+~lp=VG3Q8SH5!UC?w_ahl$zTknxg;R@Tq2pRPO>C3eA zx_IEOouxIoA1i2~0v}uJRIA4U^#WcKjl^<X2)ur9vK_QiNe8YBRyDRUmW>D_a8moO zq@~-Dz-s^tz7!bt-E%Mcg>#HqGT}BlAaJZ5@J*FG&$oPn)J0*!l04ys8LdZ0XebO+ zm7!uwYJMcttJso8vx#4*Alm^_hajWgu}x(du_+IM<E6MhhNG*SwFhrGJj)a3*D_&> zFxm8B)@h~N?{7eQRb*-zO!9Bh=}X$tKZq=VkOCAVdKwvbT874;;Yh)*kvy}d968%U z3Xno@<#-XTqp^ThKjc$$8#tC=#I@N~a5+@Uao2>6WkuxY8)inR1&ZUfHcxN2@LN9L ze|VA$t$?L=z)?#R_(6Y{u9pHDJ@ZOLD*Wl=HG1?OQitf=2v%!rfX89_JO!ZwoaIx| zq&gNdUZCj9rpKReeI7Hp2eEjjm*l`yrV-m~{p5F?mC<{z!dgCysZ3(38-(pGN^vvk zLAs0MMsjHXKFU@!?m(K@Q!vqm=>EFTouwT2*Sej?CTz*7>aItb0u6wM)|8~AMg*>- zwxqeXglIP~P6?q^ByG>TG?Zq<GVTyKUV?dsy=PXpK7GsKncLRu?LM_=Z*PbW6W<qI z2nO~Om8n+<(~Unnpkc`N6{g4Qkf{d5Lc&Zr&s5RHwj|oXO4H}DrEP-L`+a#~lfC6U zEu}e7%5g|&+FLEQt4$thc!W9vuY*%%cDss+s}54Hx2T`Hz=y9t%C_V3z*?O<Cd<69 z=<?*VC;KuZFAFqGU*lGU)&qHsE~jI#LXR+C#%gU23{U#vw{*(1?-he)#~Q@y9Qxo5 zSd0DbInCG%tSt;Cq_jdetC*?17$MMskAKU%$cdc@EW?wnkoT2cRsv03>jX49g@4sh zvmOZcyEf<jFq%{^L`3rTcp9B>rmmoz8ZkL;OSU&Qu(wz6XQJ92p%tZaky>cj?V8*W zI9`ICSlDdOonQZyxKn=TW~1FrH5!wta80||nQ$dO>5Yld-v|>Y!+J&`befu*9-v7* zVNBeKJmq!dT**{1hiyqLDOhd#JiAhj-y`}vT68-?O%)uj882fs+sv<Q^7!&Lp)qJ7 z(4w=i;K;5~>T~CKU}b{`AAXLJa-LeP$s>;+<I1D^c;h`c<0*}$;lYQV?$L43SLwP_ z_GA!fq=z#L(?6GHkPJQASEDVb-}Ud&Tx9v70i4r-R)NWHT;If$#<DSIyuTiq#5(ij zK;RL^!1@Ae<{;+C&9J?OdE~R?zyAZ>E@wTY>_VUs2qtWa*H&H7NQt-3wL=cM7UNPf z=17(Ty(4H~q8YM9OC%sZ;YzmF*Kn#Uc(Yexq=i%gmGKJ8p#ow1L*RG`_V8C9`}pQ> zeSe#8oxf(I(N2LzN+oGhfFVpuZZ5jL<V5EY(M{b6(Osh=%~!<jV7d*`yI~06T9Tq` z<Jgiw8y2=(v8N)Eu?uPOq5yW4a@;muVRLzl#~(UQ(+i_3UknyTh~z!SD|x2yIJL5o zoRrmSBMBK!oSfs->3QCC&&}L^+qLBKIqJ1Wwm|JAgGT=eneLmhbL|R96(EGur=i#h zGz<n~yNJ+FWx@v3!uPt5+iRGSNknxmm17stES6M8BYBCm(7TVK4_t@XTt+_rd1yz+ z(@|khuhq<Q;A_o*ZyC+uYd-@Tl6Z);G0e3?rfta;IhzYX<eBv8d`tuuo;Fcy!T2vt zIu>VESFu_(j8PcdfzW4ScADdXMkB%@aJ&RN_gmlJ{@G716g{P8T7HlsK)XL;cYsR# z1Bp}<ToY>{MeH#^h9vD=8KSolJzj_DPBV+2u%(4IhOL(0ox37Pg*jO@Y2LAT!+|MO zwZVN~d6t$Jf)KHX(FF`6NW!0cuGqyFKJ(?Ie}+zd&dy1sL&aZx<uQ(*ILrF##=y{o zUOfi}AtYEfLRwK(s*v6O6=~i=SkYrzMQKwRN9*yvBGyI-t)m){PAV4N4;u8Rx(x<@ zd>{V!KFX&a=;Kg#Y&CB{t}mb`_Fz?4lc#if98ufIdK-li^uDVxGlvk%XRsdm3-DW6 zPb3Wb$kepQaH1WuQgk8}ZW=T?hbb;>+YA)bc8&*P&m@zjGhGiOFa}phgfUnG#w^%e zS;iQH)v97FheD}{85zM}Z-Ei*A#l7@D_FZ4^|mxR>Seiqa)kMn?Nqt9$)+?+I$Y`0 zY><$i$prfzk~HmgnACZc<~Mw$<LXCokqk=&QoBa-yy?Is4?K37(-$_7aTt;ShKx^V z(G6z`c^AuX<9U8h%R@4pPKN+pT3Q?6WyIf0S_sPp+W~1uJwYSE1x9OxiAE-LHj&(h z(f&dpS~bkbbP5<c<g$$3&vr1PfVQj{SR9m<0wW<1fd^g_(XK}%pbpWw65-TAob~hF ztk%v7ybPeo%|(KJS0`Z!fF9e0*jxrF(Np^|d#}dWIpq8?><9h?qXrL2Gg{*yQN12V z>g3;4I_c?>1`Qb>?~eB|<Jv4#{S08x6SDZ)kdx6moNz4a8ykdSfMwapRvlwm>^iWY z3+)g`g0EF`2plgpvl6Pk^>*ZKjO1-5N(C0oRyOwS2#SnJvY;aNB04J~Q3Uj)W<}<j zD3TD!q(hIC*P)F-_HZ3q7^D$NrsdFBk-K(}^5^$GL$%RH#$cgktT#-7hDklQe|nU~ zrM2v!<elc4NE>0r1DuWSYAv(^9mYebJ@6Qy)1aTzNQWYhKuarL^g0U~Cf01IAfxRN z#t`I3v6fC^j80BO?c_1}GJ0eZW)7iqWptr}Z49zqL91Pe#%5{`in$naK<G#BEUkEs z3z&)Bn7~I}aT{X&0`i525w(p=wl*+I;UH3t-Ls6kAgWB3#$cs@IRTCM;x*+;R+Nsk z7dwDPr@v@t?8;2eVr^j|X+$N1HcChiUV9}kv;tfq@U*TCf#ao`&@&Cs2V=Nq&m?PG zjkr3rr;NK3H>7G$Iv#i?T`RJzel!-c13VosCDqQxbW^k$T}O{zqk~a<M)KUdZ-S5i z<x@18UX)Ggco-rzD=h{MEd?sR9VxoBH~gLuLm=!N!g9Kvj#d!*7{56H3<gWccgn8N zs~AmY@TM|U460A*=?;b==Qr@j_u*{JC0>N|S{Sbh)ir|gz37TXY2`HSkr_mF4V^1t zruJjpQUrdDO=NWqSzV31mA=G_fvsi2eb->z0%~$ESPu5_2eF>}O2TspV|LEakj>in zuA@;)Qk1alYuei2rZ|g^s7sp2`w$oo<ZVv3RR%D6c@7yLYAb$xSI%Z-em+$N+{P&u znZ4>Le|e$F^%a+vVPgm!FWKd=rkh@Lb=xyO!pZY%6kVHE%S)ZigYxkr$)&4wj#hME zlkqxCmJ1Q_eIrt;(2kHRJybg7uas<?w;q|{Q(rrlfCdSdk<GH`1T-XCio~_IZ5!zn zqA(*4EeJhKyEfp&X8<WWi2UTTL8BY;=!}HCw^Tl><%k}$l#eM-L3J4uv|~UOsL@@h zk!i3U0=pPxU;-a^^Fs7Ki=E$EqDLmsm1%-qM=?$w+1NsEE+T7d=<)<=avyqZ7F39H z`f=pSIn?YS<l5Zjb&Mad*u$P)tVdkQ%|(abU2W1*1~=}SE>j^(2Na}%19^u(uloZ= zOPGv;G?D;B_hxf8PoF#6{T;O8s@L7h>2~C~<fY(zGh7`4$4fM0)OgDe$vZZ-C1`s- zGnFE(me<9BbQf>Y$+DP~<hv7gkSIM#c@z<dbb&$)&~?xw2J4ckU9aQyho^Y@><VkE z+dZHWiHc0jylEj&QYKyqu}2bUO=WBnQK(|tRS4R#Yt9ZClYTE_5NL>=P@^~WNP|Xi zcwiE_`C!mUw-&@0ip@3D)P7W`qW5xgiOk&3S18w(2<;rSYyE_VR><vD<kkvUHfm&w zaPKt)*S-PS+(s8GSX(PN#~&m(bQ5yzJmJ9`ksFKs>DSBfHs}zQJ=5v5hH1xQR0^u0 zrXWPpm0a|IMnMXsCD{sfA2BL>S}t}jUS&&Sx9Ze3HzK0ifFt3?8;<bjYfZr52+T7V z)bbEGUV5xjY55_0C(3M8o2XDx%sDA72T4k<Gx<GrhNphW)c-{~lNV)Ptb_=?Os^yT zZ)4b1DKK7e`OI_k2qB{PjZ?14aO&90(6N`14q*_2Z7<|dQDC;0z{w$UWhlmJ#?XV% zi`;jk`@IL)AvA$OjgGQ1^3>z>wgTj$ppnYi#_y-Gf)=54F`+`K7EWyyN)r^(Sbm*a zX_n%-$Fp*ed>J(|i7roK%2A(QSzW`vaGc!pUjY?>uu$W>P}2u6#Zmlg?!}Bu;ym%W z0dt`*?S5E}gV8}xPgR48kJS}<n*}dq%CQoTL-f=c9V|E;ZwEcy)q1*_C!-T0kl&NH zxp3xWs*cKV>$O)f=WA-Q7Q_~E_2f?-^@hOll5s;8y&z!sSecDl6O6&JWU8>OlO5^s z8fg`m$w+$=HAk;nJmE2R_BtYBYk=1gzws@5#(DJAGR6-PGM#3PPb=BUsH8wcbVC#& z1xvLS@4NC)#PfS~@ai$)E2Ba!%f;l%k%yu+LirJxggzq99PAvLTn1<i>};-g01bM= zp04n$H8P7e{~T7(!Zr|&?ZzsUaGRSLX(0rJ(+AO|adcrM$^dx{tl9?l${FOD$NS6r z0kpzeUqG(SM`iZXLOFT-Ti%VVu3;^o!rENA{3zIVFxpS5I@85}tD)g=-sbtb&jHuY zco`y9>Tsy&@)tF)uRbOHu{*zmjX)XLTX0x7`9iEqf{EGP9J={+{PAKv`D}T~IbLP< z3iCL0-VYQrV<paASVJbj(LWnSh^RQrbfgI;D>UzRg%aH~Zp?LDj@O}MQmjjeM(<d1 z9A-xHeD>U0A}vq1{-pyNQY4^(h#ogFXh<Pw1&Vb~bM(kQPQGw1HRD7f{U*@to}dDd z4#sjYxsfOf(m9Faw5m`6GW0Q>A=EwL%V5yxTsieXBD5RBn}MJK0=HeIwd+cp`Z^|G zCYU~q?KfzS&P0GDZA5hiXYmBWYxK+9`x()`HXL$mnc(Q_urD0PKKm4UbQZPyD8ZF? zVXd6OT6_V~ZtU!B*fvVYl#Zk8F<8L4Kyj^WA%QT?tR$V=;@6a<z!!pMN@hL?Fgp9& zBDw(W$yq#d>IDRlD-?Lc2R_VKH`{n|m9s4bc}tuc0>{fDIYd4P6;qWGo7Dz_4sb-$ zD3KbHYz(-Lg|Bp%oElU)9WU@SN73tbkn&taoJrBfM0$)KqICaQk@K4kbhAxn>P{!s z8iR)FC`1KGh$3VZ)<`LkQu4^cI&Zl1CQiR_uG`5gotEt^Mr}ZQh|nA0Wr%2=s<hE| z4kL@Pm`x>K1V)3_2%}>`mx;9<I?gajkTwPxrBsDXc!A_r#Pnb1en%9iLu@2^d=I($ z8in&u#9T@A85@;dSnKoj7OD-#jGj@B9i?h*4OJe;Iq^_5_hf4cYjY7}*@Ux4@NRe; z!f#^FAH&+X&<8|Lp@459K<G6WLDLw{htXIAPw8mCOu4+_igJ#pn?e7$h=Dyx4UQnH zW?oyyYqfCldEWA^ALRv;<9wr?08hn{w6!@t1df+Qjv8T0fz}$|53%Bt*AgO{pPHO7 z(P1y<9IQ~$4pe-CSgA0jyBI}EEopkVj<oE&s}UioHkTP1#jv|lU|}`tFJWZ7Owyo{ zQHpjwjt&=M#U6(gFt^#Hv1fwYZo7`h9(`s<;<G<2A;U8WrD9@rKxi^ZyODZ-WAag@ zX6Q$^vEs6CL_)^Xpl^;#dLq3@+A<pKpiNkwz^<?F02+fkk7f2#A;N1TYwOu#p@PT@ zxo{j^nI_zK9l_DtvFD$|UOE-62_RoC)9L_1PcF_DhPF1GQHnizo4JOcn*D0x%t};y zbpK|1N3clqYr+WfQZVUCPMkS|o6qyMZ~rdVN2YmVJ*#LPcO;v>dG6H)9Iv?X2u0Us ztJX>gzecl7rCdmjf9y8y5x{6EpGhMob3!nw;nOCQjY)$@dI6jC)!u*}P**Wt%(1pn z?{;^JaYl=*$Sb)j%P6xWWdwjS1`rv09$!4Q%#C;4%%0sdNys32`eKNl@7FChGXtCL zWI~hFF-d?lRR`25T1$s_FC8?p^H78_IPGo1k?Bi-#=uA=AwG3!6qPHWOQSnxQDk)$ z_qi{Td+PJ(;wa5KK1i_lYLFI%$|y~xQ*&J7aKspFz&CI{Q0&gzZ2OA5=xR5lfqey= z7rc;UR!X{id1@kk)FLo?EH4BWg2wh1@A<wTVtHhS2iBX=Gs%9`kvv;%JUs-Cm&0(x zUPKV8WMOaDnv9Q@Fq!|NMd;WTImgbN0O>0QCOhY~^STa*Xp`;NX-vA9F21PsG!Lre z9X4yNZg>J2@4}=+U>)~9@|s9M!|H@A0@|VCGbfjM`!~In$;q*uy$q8DjNa+;7v(eh z#9X~IRZOBvy*Q__Giao}luSb)72*g`x$;HfVNi&Y{00;Iuvh0$BU6{=*S#k0sYfV0 z_Gye;r1`q{lfU9d>VZxHW~|ZBkQaisHf)BPqKuWL+GGG`Zz;!#W-tIOOsc17OsK}P z^v*2Wo8JB|o;F1u-DvfVONhOh#tZW|93KM5%QHXkI+XHmh}O#(*sjLFk-E6*n0K%( zNj~Q!%2E-#?%fuH=|;LHL--Av>ep@cmnLJoJt!?1weHhFn4)ERgkLeBM9S5!cM*ju z(frWtV}kXz&*#r?@Ximti>c{}9&aGq-cR)CFnT5Crti7l(5JuJmCTIR%K;5iVI!I6 zOo~wK07$OBMmTkFa2Rrt5T#So5=`vHJ^KW@JaO6SR}uQSXC9~U_-7ayt5Ee-6#B+m z4l5=>i<YFWA_3fDsF}@KXx;TlCUX|&l}b3Mu4fT%F@PjhwDDIeNWpT`<5P<bPS*!l z%nP7sTaWW|LJxuC<yly8Y#J?3S%PIScz!@JpUa#O9d9F48rQa>nt=4lM#??!ZNA$x z$k_B$mnM}i145Rl^`A~gcy+yv?){`EM;x}K0m6#GqthX*12{qm)>{Fep5Nl0_rH_< zM-TP`hUt0*m-I4r;4=m`D$b-~qgyEig;I&psR_nsrYVn)VY^NWG<v`!4Kzv9=qwp3 z+&m^0i0uR#rWZ5-lPe;W!m4kg-Qs0|MixLkCJGi+Um-PEI`TB6iF$w*V&RuCu;?qM za(3!iM{N>LG{Qd5q5~EJGJw%pHziB(=$20{?AG%1ZX>oN(E1@>h4zXfN0l~>oMW@F zwzV`dTAp6ts74D#bQWV5sU62cX-&P=W};GJZMzW@oT8gaAuR<nsj~c73nD~T$de*U zla65>4x=M4FvPlpjxHnZb!5Yrl)5~ruaOCubn93;JJkclr_OJ3+ue6EdSD;Ve&s=g z@6+3>q8Bhs-^j(Cl%@UYRwD$CWwHP2E19|O26j)rh0&QQ+DKYjqfL}rELalLXs|Xv z&*I55%sqFEcCFUqg_xv8K$m=tp0~Uvq?!x&@*8FcvLl$>kG(b*AN(-N>X?gPpq=sv zL8}QWN=uLJ*~?Zt9GF#cq`*@V2&@E(gLx<Uu_yC3XJS=sIt43sAZ7aIuA~&EgKR2i zGgnt%8v@76b$<kPOJbH*wtj!2Qu>*-^(cGMXtgO9^HdwHB+RhmlI4x91_yReu(nlC zv=}<mb2MF}l4`%(lb%hN-HVLitE25OC>>pmg&|RiCdF(?h(b4uLVu_tMO4Gk@kUHq zof?0ZM^>tgm&UpJ-a9$_&?ETG=3u}W(0g>Sm%%{Ln3$R3sypxC(6v{xqG7HXaLfzX zIKPeV9S0$zlWb~YFMHo~h_}D%oit9L;+Zdfm9@F^-M*zMv6xByeQi5fTJNmaFoXMf zgp>Oz9FNW|tG<aYjv^bI7hOl?Lx*V;%J>i8kL5Vnv%B#ZY6C+B6&F5AV9nP|RIIpF zq@h@FIOnN;x4gIDvUjd5kh28sP$ByAFsW3qK%dyGePsw7FV}>qw*4?%S>OK5k=>I& zVld;z7}hpw%uJ24U2i1~hodQglC{km6W1Q>_72r1Qgg<hN(3~b=hDzAag7~c(JiM> zYdcI@+hGKO?)akF8kmIB=m8MXAw*LE(y7{&bo+nkv`ZgrM>f5H&0K|%x4j+CpT|FS z5)ohF(_u+AZQK9v-q1t}!TzhR;MzNHBfn=4&sJO9zf`3a3!6G3xo%OQNSqx{8x~pt z3$1{Mf!Xoh-2A=Yi#&ajNB;a%G`6bA-%O7`Fc|V%i!}FMhr4(@Qo&vZXqZ@2BE4o* zeOq5AEKlHG0yxy<3=_BA$<o93Gro5ptG*uCs5oy+s;XO$;^}BqLEe^(Sdvqo9_R}7 zPxZ@sB1KEm3Uvl)2F={bN%73$&)mK?1df+2<Y2wgY&Y6r_{7La@hM}>n+=B5^=)pt z<`5^&ET+O5jqBK$nD6MGc<I}?YF2c+Ytad1QcZeN(yMr?d^%(yk+&P5)(*+%Y#M$T za~s*rO7d4kbkfNLK)O*$LY#I2DIqf5*%Mj45Y$2gd-gGY_%Qjk6*eAz1l4TPCmX+n zmr<&WaP-FOxZ>8EShsULTx~Hox1MNRWQu1nsis9HannV{?bZU8+96Br8naV-x#!3J zJ|{l;XPkffnJ!0Ux@lRV0!mv8gcExR10TCnEjxhM(3ATxP7dYdan|ON$F15r;r{C{ zxs2TXhcLVLlHaqBnWINpZ2ANGn?@YNW)P;7qOcw)rt&sx+C+_~2Ox(S&`B))_^2hQ z`s$)#O39Ig+I)dmslB3rLmSpNw;QLof9w0Vc76EFlLFqXjiFj^#hI0E(V8EG<Z}+j z80w8Sm60OVTC=BlY<K@o4Q+O|Y^rCv5Xg?AG!wFr>DjT_^r)2cG&UQF_mIAvNYUv) z7V{V>ucHGNS!boIPTdJSFtFhT$jSu!-}hchD~kk+i!9GypxqP3BxUcG#rX6Tdk!C9 z-<3y^)6<-+d;IZ6i@Iuc!?;Yt)pTY<bo-ukuCk&-5=TT~$7@<{hy1x0a_0v>Ol4}4 zXTJDX8PG^FEEw$O7N#_TDpZio?Ez$H8H%Ii*UqtV(|agC{;BS<3fdU^;?2Nw<uYbs znq^;c%^i0#Jv+l=b+1cOrEJWxSPOKws14W*G$VP37gDA3gF>9aKoZ@l*ph0X$dGb9 zHtAZN-1a^*1deZjS%S5e7d#A*bFC*vM~bX()iFln`4LdGynt@D#l;v{-KesAdW`K_ zGtNe6gpnDySER=ybbjJw9zrZE+bLv8>Rb%#4Ue%(kqeuRWI+hh?nHFLNzu=u%g){@ zVl-WKdol13adziiJH%9Gs7&qV;JvS>ViZ=RjvWSA7#zpJDix6<6}CdnQaj-3rbq4E zdfx)>Hd{`0ClWpGxaszj7j%KoU<gI0(M`1X0~-ylx#M20Q;O&Q>Pvl~(V5KW)YoZ^ z??LCwShclG6CYza$QU4m*Np00GFO+26QffH53wA#o-AB{6Ef$b>bkFv+5lrYo9CNB zswCd99Vlj8YsYb(Vjz>7K335Tm1;Ynr$crR*qExjCciWUj&B4xYTL_}#R&jmiN~fU zDy(hQFvhU7w#DAr2~M6{!XO9&MK0%HjAnU#n>%m5g6B^ybTcK!MAfsVyJVt}Al3CN zGyN_0E>bgAI^0Hj{M&M^$<?DJU^T^Wq!*P*PPR@Ow)3P&PE?U_v*tyDN9Ph(^%c)- z)MH-7#$ZR^Jpi*6VzxK3pay;5kZw(osWeXQnw`;`xNiwy2%>h1o!K+TYHe=3`;F|H zJJ0f|Q+=S(xnI~?h<?ZM-T1=7Svnc5fyO4`t}6)L5<*J)#u)@2#&VJh;a)3@PoT%9 zkOut8S+*JtgbDjHHv(`hfu~dY3!oNgjuxDYgc<!IPcJNtIu`TWE$CGq$9viWY{BQA z`?(wZS1WM5vUD7_SjjogF#xN&{ru$Eh}WrkxUjs=zTK0_@M&$jB<Xgo$ylY-jnT~j zS#{D=lYY5&YV@ojJE6UE<?RTY)@p6WD}`)TY^v+IYfI1ut#$t(YLQOqiA=?By6;1} z^3tToL!@~avKfqSHD|h)M2c)or)hfySBaFrXP<#r)~?D{VF)|Fh3No@;ptkN-EV$# zw{S0|Z!nor3>vq#MxnJ$u<yEPyus)Uc4HH7VjubSIgFdnF4)#Kx=`7f-#By>VMSVu zrB=v_Z{iNt+4W!x@Dd4n_t@1#McI;MhG=I7YWJu=drv3>W42_g9Y(BodW-+|M9yZu z7JQsnvAv>z<Db1{rlB`C?*sU`kKW*qkCmV9BoCI?w%9d2ma17XNk=fF4eOgVrp8A) zYosfCPR|=L^e8gP=n#lcf?n`QFM6#EjZl+w?SXM`s5F(l6Mrt90+48rykliLrC$s@ zlHtdf0FTUI>p`ziiQ2k|#5V*$(jXE?2xtu36Vu%}HOBOSMvDJ12I;pbY%L-t_TZ`z z*{UIfHZo}UX*R6J7OFTpaQ);*DwtjSlE%V~P*ZZ<sG+isg?rk7)=cIdmg1&79T~dR z;D-iBili5ZxCBu2K3}p0?NCR<!84uKy8o8Yl+yaMA#i-dva!NE_#Zx&ln>5Kj6Pyp z5@QTXX*RbTOiqj>;L-L1iUk*A42vt9?3tZN7G<}NLT9`WL3&<Gzm%Gu1)jwFDOKs* zMx8xVmDDLDQW;u7!LgDP-oy=owT?DlY4%hK6m08~;K2^yAxySGZdWRweoglE7xg|~ zE`X$;k6#zIz3w!=9YLe}H)Y`A)YcJx6K`@Kx%Ihd#!F|^L*j8%G5NvsnfKmsBdhH& zsWZ`9Q_0y$-BQ}aoG!R5wZeE_ipgxg(zs$U%h3-c*`l>c$6})uWXl{<n+;f)Pd)b& zH`Ir~@z(_;mUw7pax|_NF`T=w%E7%eiLhv6tH#uL1&v{0X@h;cC(v{~5(b4V=^@sA zAxo-0B^_O-#}*jFx%C=*rz_b+1YLf#>IKY{^O0OV@sOfE7(u8xztv>C;Bxg;1=kW6 z_dHUehw1SuG7C8c9s^%L$ouFS4xPmWgHamgg{YQ~YPQkMHm2o6pe_m`HUja?6Upy1 z2sBJjeM|ycLg0_?#_}432!xj%HzITx4UrmP6Ne7b$d{9P6saL+%h=mUdmM&b%x_q! zD%cL-G($~EivEH$WBP!icb`euV!h>O*HkK88Fej|>i%!@DmVKT4IIL{f7i@7^NZ2+ z`g7-(dGA|q=i#Sbi1>!h8b=TA;_Si-Th#`IoJ-Di@cjUtbUyD0l60i1FhG3Y(9<z2 zr5@FERH9vCvO|`7fdb1yO2HtG-&cl$W0SK2JgsAedxs0qfaLsEgS=yL!>%!uffv?l zG{dml&M-xkigYKkj;=!V$mUZm4!h~oR3DP`*ate(>mtI_ijgJs0*n`+f)Evi7^N{P zI_ad+*h*vT=oY{pDKau$!IOqoK98|%#*AY8*~gf>@4g*94U;OK>+RnWRCeLi*6_!6 z;hcVShrGS&U&y%}a_=F8n@^>a4XzZa!n^3R<Q$7;Op4OeKNO&?G<hj@6nb4OH9P6r zoL#N;%z5dK*)YZ|kCx15hQRUHXt}Td*OSwGKe!HN(g3x36Ri!SBPF)04K}uF+;!_! z@%Ti|{L(u6cTaNi>{8s6hh)f-NT*+uEJAvkh={IADJH*@W$6PC;Os`7y;Bv=tyPl@ zNt!FYP;GMc>=@54ZK8Ap77~p{B7{Z=LCaS>dVZbJg3B$t$FQX2%x0YnwHAtO!{l^_ z^<*jT03OlqsfC{&DG|3^bc|uP;9@XTTRz+MHab*M!z8Wa%^;LU#$eF_j{Q>=#=;u) zlaI0X`ICq+peO}SE=SmIvmC0I1R4O|<bLwYCqYWW$_!R@Wk9&l57&Edyor@ifMYV# zx9qt4n%3Qv>})y5Lc@=`;1BS)e5G;a&O)!9z{D0%kkIhL0T)4oYe`h7f9r`Kzdd-h z1IH^mRQb7|`#C)`HTE@2c1IwbJbQsF5AVSc@g7pjq{idi!W#ScOhueRDr7M`hAcWu znnGX5qBF|Iu1CJGQDb(Z+_#uas-ybpwHi0=okSQ=y2Ewo%%-$qv+47-Gb=oDex1pJ z%lod}%^UVlad@mm*|z#ZuHMi^_VON`@1qSUjSLkzrP*U!+*;0Y*I0q8i!SS%b<Qtu zv$@qE3_?PsF-pZ-^g3H9oKWK^&EByRZ@gjx`Q(>5^{GE$<=FG+Fo*y`DS}25{W3s9 zJ2{kF#BOXN{Wf}ZX7IuY+R@<Yl<m9uR+dANWKht$n;I8UD@YY@<($oSN1&y<S(i?W zMPC`*l=MESfHfEAI3`_-^`<|V-_QnEpzB`q*LV$>{fhs9w*94D)8ijJzqkelUO0P! z55DUjzW&5<5Sq1(Dl?O#EUj)bzqH1i?z}GQn-OP4bVv3*Fl6Z}7G)=6)^m+9iF%Y& zHEk3U)B=TTTeP)C4A2=WV>q*3<Bo&VJTkY6QgM4v5qmtTl6x(n?)f~vu)z}-HkmHv z*gsa{+Nlb8$6~YXv(*l$`yq`Wq#bJf&M3mz8L_0mk&?VEDcBZe*QSzl$Xk+Dptw+L zadNdv)r(Gct-HjnF_DMS@iHu}v9!TbnvyNK<C=Z=FFeiTpZZdC_3jaOkphO70vZ6` z#6EHx(TrK?H4sj2-~cY^H88mnB37Q}D;3Pl9#Dn8E@Rq6d`93!f628ao{A6Hpo#Yw zLZzb?2s`u^&4xBzl6N|1v6@z?iVX1&hR>Y*$8R__1dhJ}^E~gqeS4;vUyKA-wR(ek zy~(~^lgux!b75tJy}Kq@T-n4ALKasy*|&R=a|^2plhMh1<ZKHsRGE-PViKNW;E*^( zG%uF^kmdC1Hv6Y5oLt&U1XO9xPY8jhG$&T7+<RmfkDObj9V(3MR?7-ul7UX0zk`6K zT8pJx3n9R<EGCON#tIH2Ifq@P9C_Qqu_Q9Snub~vD1)aI?Lbra1D2~To@;JV^TULs z?VL<qz=%SV&Xrf{6liG8(b;jXpDFO<pZqU2FI?!?whRz=y%f*@fj_pF%E<@1i?g|f z?vbW<fJ5hs$>T@vemx7#FbY$81_f&qHBahzj=M+loUeOvNZJn?5Oq4YY%!n=e}|?+ z@$FR3=8>hXZVI`pqQkWXwN~(pyhiL54;)M8iKlkWUb7~Qnd%Iee)hyUuD|La=NH#l zTw3Rr>kjkClP56-PM=@q(Eb_Do?iiJx>MqTvC$GMYuj-bVjaUqhdK}lZICjqR!tA2 z?W8h$_ztBs0jX-zo*{51mWFyt@zjM4?m9ff^NU+7)tV9UDmz`mx}Df{QbpTsvaEH; zh3$|F)vo*-(U%3yEMnc!xFjJLiI<TM;W~gJj7G*DhNTT9$Ku|b4x#5y@zr1Z6k*_J z`iW+M;$?#d1S6B!t?i5=)M{=Mj!gCehwxjNk;&vrzW27*@wK{zuuYe1N~d}u=9wao zqwT9$Rop|4$Ny7WV;i}HyxsKF6~=_C6j;VY{D$b~MU>W0ocTZR`NC@jIOHq+1OCxR zKdMUQ;%CN2%ZU!-^tnZ5rpFm6=4rLs2qB_^H*GjOzrvo`2`o!S?stmo7%3NGzN1Im zk!skR;XAa>bP6+l9k*bq+GMg)$dp!#)cWdF;)lxc$lMwSCr7yBKqQV*N~4uVDU<LW zN@)V6QCbr!P1w1Ox1e)B>^`RAEmVr2^LnM?$KriMMHuSjZyKc#p-S->3O7_ZN^^8( zlyAD@D2w-fmPbGSi5N7p{Y2BC!OH{<0B`C5`L(mz#p$;&#eS8jP(h;a*nPu|Y~Uaq zHvvF8p_I{42pV%61=o%`fr)73MAB|C1)idZmq?4odQ-Z@-Qa{a%;X&wYwe6?N9(AE zi!BAsdiy`|k|y2`f#W4xqv8Ge;e&gUQf;k5o;`k+o31+o#&G_^D*N|L0S3<tSXkQN zz~1SM0LvIdxtPz$w7V_y$SfE+h%6;bmUh5HDUEN)v?>%mCy`E_D$gx#veIbtuIu)5 zaJ(F4FA@Oh0!5Glg$O_lp)wh82s4{X03=WvKkV$IvS5(_hQ<nY0vb-J8FOvkdh=nf zAD4XP|M@S>$0hRpd<N0U)~m(n5qDiKXlS>9v0bbl&!RKgE}8F=A&{cX#no?p2j{lh zDN;24`&vifAV|Ed=~9l>R*;<do$L`tBVtf6IyHd1Gm|C-5ShQDyTCJ3bhxnH?1q7+ zvsMho_x<XzlON|bWUmU~c>MH<&+gkh8;GRKH#~dn3|Ac9OCj$vH^0KceY1&D@x<u` zt~j(i6US=<xttSeDs%@R;;X0DiNFWbU)QixrlkWOO+Q51R;J5Xx)HERgkaG_8x4>9 z&nz=LTH-y|A7FQ-5M9lb1{F)yQ(lMCkp~e0L<AlYfT-kt+6&R4ihv?i5OzHaE8aTZ zMYL(A3OU|*!$IDA`w_Mtdw?(h`ft+Q+RAh*&wxg+j5^&q&}0GSQlQaE!R9*c0aMo6 zb2TzGAEh@XJAU9Gj8D_D3n{N4(Y?ntDS{wwAsA?bEn`o#bJ0iv0G)rwSul~>&>hc2 z$Ll2m9icVSXey4)TD_fk8XeK!Xx?G-!peQs|MkNgL*V!uwkLn?o40a>+~=kyN0SD= z?Y77BFP!7no33JMWrL~7Q7jqtqdb3MmC;IxQX!WpHY3%hqEyHwsoF%6PBu+DNO5{8 z@DNgBN!hRJOwDykcTCsX@ci-?kDOoQ%3b4p;O4_zHC@3m2B|bc#e<e&5tdOJI;ql* z&LZ(7I-nDK6e<D;sZ_*SsQz#yZwyCg$9VT0SMv57c2j%eAwKzEf0tADKhQm?Iy%!- zXp+vNbUT}qRpGt}&@j>>tW4u>E%gc?qA{GkUP$7mD6W0ydpNn#NUrWC6+U!QtBxgU z2a1_;p0%c*1q<C9mgo#8Vp5xky%G`cXOjCSs(Y!mBF`@VEJ_>lwneMnq`lhdTJ+j6 z>(%l>uXx7~*u`S*o97pnlSpxGy~-QzzKJt)i<C=|#CvnQjxmtWIZTdMSX|jih{uVs z3YI0=t~RoKM4ZVGJq>L{FX^6sMs(9`om8!qBBdQj^Q$5?G9g`FAI)u9s<yaLZL()# zgu9N+GF{Gt)-+?cIt^knweX{Vcdwk%M41q&4VLL<Mmk$TNcK-vxbes??z(P2h1x2| z9(#tTKk;$4=FSngC9GDhFKZ$aqIV|}G##?gH`C=}oymjoy;yz=yOF&h2cxsl*hIDm zmvoHmJH(Z5e+SQOcyY6%u7_t!LC%tdT66VGg(nx*DLNKL$W+}5+4_|P0AZ?}!w)qz zFHH0rz1b9zB1n%;lsL6krQxeg+0*Puf%)U72|{@|oWA)NIQJ#}S^*CG)$&0fd+ym! zyy?!{T9%Xrr6S#g?|D4-)Nx*a=M6l2{47@;-Os7HMZoa<iSxYwU3c^Nv!|0#rCM(? zF+Re%`IQVH2sCI3(jau#59{bRq!`pdD$;mFV<NlR7R$0CFCZZe1yZC34n=8KVWKYR zNqt7Bd46e=V@q31m-8IiGs)do?WNxISl()|R&BCbZ`1UH6e*c@-P7|`qLZhbcNrfk zFg03adaTT7!C~XvSuQ;MRi1n9Is9f5Z)`U?t&=YBy`a$zO?Dzdvs#YcH08y|83_D| zy_C*8*7uA*Hj8`W!5v?D)0<z<vE}V30~T``9Wn6DvlX;~=a#ooaiLqa9pbune{c03 z;i!qzw|=O4e)Pdp=mb!9ZB}Zn%=g+qT4Zr?iEz6Cc7Dv6K6q^aPY;3PZ`e-$^7mBl z`OPOjaq!@t?>K$xeBuo}_xu^II(mR&A<yj01g>r2hnjk$#q#PV2lvi!_I%`}Y;M)K z`sluBpfo9QnCOHQ@gp7Z=uOjJCU{6oVzf?V<3<yuUdc8G(mmi2HR3X?)LX39qioS= zYny4W!4)No(L;MFOitr#LCX*D1C_YPmW&2exsF9C@8U{9YkQ08@(NoooZ|VpIX36# zQA%Y-W=1DMcdp7My^J0{!wekSbUB~_;m9O*GfKf~J4a9$LHMnxGuYD3I;n|6M<`!; z9djp_5kjVVAQ`4hdG?Q&IJ;3NZ(B6|FxF*6gO+w2%V4_22eu`mdBj>XK*>RRDAiOc z$A#@?#EHcFlyf%5DAeM4w3UmGwcN)LIR19*!ouorUVYW!?>K$xT&(^S7^C^pS0CfO z?|MC(TQv?J+|BWm=P^j0dhRs$-g!Nz&o3bjY;HFgDHmeV6p1*jQ=%d|-bWfd(2<M# zBEdsQ8TBxY-4>H-pe#}&7ovY>3)z4~vASKT5Qd6#pZI-(RtvNHN=hQ2FjB!S6tG+y zDJ-;Bs30J0wP@99c#TGsAxHs4@1Q9|cETM4yo_GZFzF`9naoLc1mxwIKXrio!t)V9 zy6Y(Rna4pZtm^8{K8g_B@{w=niSw(d&Lp+Csgolmx9*$ZOrwo4P;xEmUVx_zPF%aR zvn-=Kuq$Ut>Rx~{rq{tBGe^$A?n;3t=htIUioDZ9lVwhR^*(fYH?%r!5v9#*$X-=n z<}bsqe(`&A-*$RpeDui1Mzz~uc4M1IpVe1YR~$;WoMCWxmqCKN2X_x{!5sp@8Qk3^ z5F|(#2yOum?(XjH?(XpA{*2peuYT%>uIk;ps`&fcJT^ixgLl|Qf#G#=_RIFa|Amu( z5hPf<+;KiVhuHF)B~$93f$UL8%3X|5(&N-0#N&dXh*Kr6la$&MWvglwa<xV5F})%D zf+WvRcS+8LqOZc-B6kS0D_>x6#cMOZ-X7U1&FrXI>{q2T2U-Yb9Z3nGFUfll>~Kvd z7_-_GOTb}0%Za*NWuIAgPZMejCHd0{UiUXlGR8TZ`f;T?$IvJ>?R3IgXNs^CFhoTE zu&Y&n*hUGnqT6K`-il`V<X`MTPW1EF*^XS7c7C>#k<J<M!7B=#(;NPod!VYw3&v@l z>hRoeQY)?Z)YAihWk-kaAIFddL!yI)FVl0ci`6rvg3hT+8Ay!O1%K|hr;3a=3+*uI zK*9KF3rjr0@f-qkOg(>SmfpTCuRF*55dWgryp-yOz=4I4oq82LL+ewAFHH7d&AI=B zg+bj&tpCXaN3*qx&Xc^te^LP}QpxCiu|x4p;5{-L?4z7X^FWcF^q9ol{p-6g@3Z1A zW!5b^f0qTk%{HWsHF9#cjvxFIBgQLa%|6>t(jM1CEJ~H2o0q#*WID*Ls$6<bU&|WQ z`Z15?u$EiGn)P4jvA#=pgegzgtBIQ_EaHjs3jR3QJ$C<b|C{w-szP8tiLE=xZc<-g zS6~yuN3p*-C0u7JaPK%p?)Q4Nk)D(B9S@~R^E<gchR7wZ^*F23;bx^pP*sKfl&#OG za-4ar>3KI}i^mt*FhluIEMG6>W($x!|CF*A(|EdNArgre3MxovqhWB<Iwx>#Vs%`E zO`7eFU0B?gmT{WYbD5;0n*8beMw{$^Zb6_a3j9S*wuHi1ve2HMQ7NDk9WSfW-#eI{ zmhVP-{`gL@f7OI{%($XuUz4(PY-sKau|)Z=&;&_OT<)`V?fPvqqw-8g0bb6qje+9i zZ8vQCwANUg$<0T-$GZ3rg9pEl_61Xy<*f7jX`^1UZOTL{M2=c9>`)u=8hSOVXvPuV zf**#d6*anfmNA-N^B77LIKQPatECWHmPnz%il=jLQ)2QP#5exe(9+Pt)gt)W-Sa)a zsKxlfZDN$10c-JWLu+GHc@atQf@{Orvtz@CD%P$EJAE7zo8BF@zxwtq0Duir)kD?P zNQ{cWROxrx?VgSUkcy7;4;a54+d@@euiM|a+{I?fxh8pp-bTy#y^bLR?0Y)#*#l6J z%+GI7RUjqomF{A-qohYRHijo*$;7?3?-~VpVa=pzf`o+?0Yik8JDc3jx$R5)_+!Y` zhC~zauJWb&BnYA09VVx9leTmz%-~!PHC_pzV|G#6GbuQSAex;MByJpmQibXmHd=ya zn4(6q6o0tPeBXW{-on*Nw%AD~`huc6Bi(AGx!mH3#)FwGz1rXhD_bMYy*x8x7OWPV zR>d1<t5>Mc*aanZ+i{6&VZ};SEp8y)oLt6P_gs{s0ru(P{3;D%4;L(qaDIA8kQ}sz zp0$%L$HA!@_KmLF)AOY~A8&QL0OBcXvjsiQF&e&SPD}pSB`j3xTrTJlXpnQ8ErpD- zSXBF+@Dt8BTe@Ru;PlMjoyQrkZEh_tOovD4B&9#uSGXRjyJoA)257i-_N;c5e(o1u zh9Jc35%0@*Y;Vd20Ef0r9ZlF5+OaDWV>;G}JIC;xI2!C=;I-oOG6=)5qoH^tQq;VG zGTx-Wa3$=Wn24uviF;OFR7up>8H4BT_tpv5<DKp~&;4%Gs_*<LdOPE@(QQ_*FGVG7 zR#;p4b^ew)LBbQkn?Y+k{LR`j?WPZ1k@7HRlt?<-BdMI#l$|Y%_R`Q5Y5kJOSc3x7 zz;MCz5v>gJ$erytA$s#hOBX;>a+O$z3%Z^aZYd!g0|6F_;$poI@m{zKQi4z(+~y<4 zN*J5}wgiXqb4we7RXL|~w_ln1!ah?WSC()9o_?VWI0}Z<*sxR6hb?CO4m9V8P5y^T zX!&Q^C1Hz6369g=_$X9_o8nH*_P<NLpC+f&q7fk!&zPJV8tw}o^F#yS%3~EDAEDa) z)4Vo@#Q*T{2thcXW`CI51O?7T7bl#<7&f6ddz1aD%qNPMY<4D}J|^X6<li6lERCZq zS_S~rbetCQKVS&VLI(Np5NoC)LM&vQ2V?_~N><MMGze02ak?C$sa0Qh*O9Uq=KpHi z>xJo2npxCRVfRTukD;8p12Wtie(9gK?dD`6wkOlkNMZ6<bSjoRr3AulKF7SqsDNN? zPFv9|Owl!UoHx%UZFu$R`SfI~yH3AkQZ+lh-%XIWU&JRE@cRXEkA1FO<^5*shGt*H z13479JhnS<I_y+#^?rpRj>FHJ!nD1!YKa^?r0t&zxY{GVS7~<GT{S7RjlwDeS1t<j zwWMNMlSpvcnOSKgF0@Y)6IssrbVg^WF1+!488|8sqS`W53b-t)R-^@o@yu%Ls7@TH zvF)lcET~q_PT4XBRtEitamW~17^DUS2M1v=ilyZPpeCAtd>G;qj>xhFaR{E2y||wD zns=P~ee_Iz@jg`1lu2W|f)_So85|twv;N{fimq%{z1&-Aft$V>SAF!h_>tP9YiH|u zd<!YgJ^NyZO8K={<$NP}VFYbdha`SLE<%c1Ys^LC@!NGyL1*P8sy)Gu*S`JAhvN{9 z(_TOEHYJwN3{||}nLgM=^+%8DPDo^yXaw|#B{BgOx~l1HUw7>bi06xLx$ZL-s<)fC z3Fvs(T#ry87v2jD*Fv94-7YtjRb$nuZu~ErC7GJvV~e=no~Y*tWug4s_^m61P^<7> zNmh2oT#&RYb{o^q`<Jl7v_s-bI6RQgVfxfl`ScxnwvbzQf=6FVHxdH8OO3u6@dCiY z6v!3QB@wR0>&kUI$w^Vsh<~3`Yjj5&u~s%eIwkt+PD!Z76<A29s__eRH1L!8<RA84 zZ5%TO6vKEi4Cz2sR9my(bBGb#C*U|vxeD0jVnQxczfRNQxUaIEH=DAe;U_)%e^tK` zI!DQ%G_*cs(=X`pH~$SUs6#fn6EckqrD;9u)HYyV_^WHb+*7kM;l<A^jt!e-JW5iH zNx&XS!9|!DJvg}VtDiJAUI62TyyS0am^#|S8QDNn)f*eT76?vt#U1f_8zMzbc^a_E z;<?o=gg*Y=a!LJd2teuxZt>jSF1qmFyp&8EH~KTDSIg2;^0p`8majwcK$($g+#P?W zK|f2J9v?35W~G^_fB84_$+IU!hvFV@bS^=XPk#oh-Stx~?MkNLw<txw#q8lT*4^Ct zXZ9Uht9-MTohBe%Z3F`-F@6}c7)Zu}Kd=auBouT*Y;pNa`mwB|s@K{zXMri`YSErt z3WHA)Xv7pas|dbRm!13(wqsJw{ofVQ;S?_6j2JBNKW%{hlC2m9N%H-uQZ!he|FK$@ zBa@s<AiHj3m}Ch%o`pc@WBo{%@ZmJG`^cB5>@L;LH_WtW3v+x!SF)@?poP&31vMhB zC@<Z(Ot;VAKKt~yY_gh#tMqES9jU9zI|Vng7nn4Rm?G#GvH1QdhSOmW#`ft?63iWW zT)PVMxQPx&hx{N(PcG4?xt)z+<+eL(5A-<nwPya7Nmi_e4zqMS&ejst>o8=QaIWIH z%-odRuZ}^V?;DmfCrOj{wn&v#!~|GF?glR}9|UXR_I2T1X;GY4XPF(SR@<W91d!-@ zk(^g`@L`oKw+Um1b$yTEvYwxHocA({s(trS31>K(F94}3*@5`-5;iGu8w`=T3N!FO zD#gnQpabx^VLQ1Mda{nvdG)AuYNHYhM7w%GOxWTh=i(3z6BpRfBf^dc|Jex&gegtA zDMEC=*EHwPypaYK-`WB|rbJ~UVdG&aCcfbK6?c_QoBF^!SpsJOVhpa}54BcLe`r2W zun(Zo{MfL?-Fm==IIX5&d?<m`p&p|M%mv@<gvDp%2lS>#7T1_eZz6!|5k&-Svs#p~ zWU-bkihho4`ni2@Gx55I0_0yeDJ*dGv7b0=cpV-#)3%)_$yyOR?Nb!kQe&J0Bf@M~ zBPtY>3j27IU77@fzVwohSa{QsuYy_KG0(lQ7KOm`MnoshL`Q%`60nuzUTUdnrK))S zbnoT;*`nV?8>S`E(^8qPh!>0^oeGS}WS%_YT@BU(coq;b7cu7v3|5aI|00e?Cy;q| z$q}mypEn(-J0{6oCC1Du87)(N0{z{8$nwJ8kSHm{ypwAD3_D)U9*x#_l~V{T$1ioL z-|oC+ml@#nv@bEajlHX88KSrS37@JxG9Rx^2X5R_fZ@?2_^&Eq2s;mpXz52p<{Ub0 zQNAgv6b))b;LOH5f@%Q}KOPumdZ>TDog*ozs_sTQrVU1hDU86bsC8XRU}6hsBM#g_ zvwEsk!Hqb7bh7Y%sDC+NHIg1ku|C&dMoaK+i;~d@D*cw~?bO|4w78an5WwKf4571F zRR}gF3k?B4L@kZ{0x#On96+7Gf(k3*=<q&uw3|KJykvd$oB9UR>rNI-3#1AKB9_72 zJM|Vk3ZR<4O`$9_P(m>-*oNgl^_@u)OSz}8b4-;u30rM(H#|*T4)>F@!Bu}cU7?`w z6;YmT!Dko&utm{dX7R@SF_5~Pr26$LElw5e^|@)bE_38H0R{#vOUb87Vf*UX2(s$@ zK0GnudG4>-tNG|ZjtKSaJt6>$964R53P`pstoi1oaDf@ssI+F-@gn#9hsQ#Ql#^5p zh+G~!>peb+RkKcR)u?2+D-p@6-1l>KAA8vWacDN(GM-pk^*0ED4r?DAbxR7`^T;M- zBU$<uy+{}p!aqlk2d3c2=N-)t-B|b;lh92&Nt3%*71vfF7upn|It;x}EK2-ZlKiTT zK(l7a((%9AcH7H(M0QFNW(TPCAH8pj-XkKt(+py`P)(-EOdjfdZ23Gq3P4G@IF6-U z+1i>L?XU^;3OgaC-0A1Q$CdT4)k*wF9DQ~kUQ{&=%;nD^Gfh7@rh~Y?=E?<|IM0pO zD<u@Na|y@BJR#3F!kv3qbaQh4h`e!S5*B3x9TEPCjMZy0ZTp=ZB0pM{;=4)&#!7Ye zw1Tnz9f00fU@3P8<Mugv@ZHC0;>}}g`5IZ-s?6k!Y~h6t;ciC9RdmDih^Z+KF&?ej zob6%sLbGzi?{ecz(D!5^?Z6?Bfzi#!12LAx!k{tv1k=H2+)b>gnIlK6s4}nwU80!U zrnJGlDuu++#EMu~(0n9v$#f0f9s9-uMw>SbvywxJgxnn-F5a!8>1wP!;Rt+1lwQw# zP=`*b?U^_G9hzdlWtJ+2O%GrAK;3r1s}xRy_>(GS729@+8JQXOC+=iv3e*A~%7C0+ z86>R%hSJlNhN!~uq{6H~NYqORhx1T{v0Ve*>gL6ip@V5LmEZzsUVUFaKV+zQP+3}X zu?<3K7afhG7?u;@a|3Zy8E|s;uRA!St_gKwK21;N{1v~`uYjcafRTMpPSN?@9c_t8 zXPJXC_^Rc+C;qo5lTnKc2xYGj&xCxUSFMsMAo(Nz;dd82Pfe212*UfyjmrG+o=3L# zRx!tYg6aSRBGB$PUpq8T!+cAl$MUaL4q<XKee4K*H5=cAh8=J8RqdV6N=Hmai+R%t zX*J3X=gnvSl%xs~dV)ub_)e6IYr+IeCdTe4W{hvU(Y@E*;n=}{X^3m}rI4X-BJ6~H z>e1tq>X2EjIYf(QGfAf=D}PIzP|Q<urOoa+OB>>z${}E4VyInMv~}QY)hB%_8q*I| zY!$MO<u{N7;=OW$Nxf#D9CxUl{p9HiXJ}0A*NqoTY%J2OjLxa54<5ZQcu`j5KIE_L zhmYJw?KQEs8r2W%9N|4&J7XGYH4VG(mwsuyjQqUn2>|z}*}eeC$;!FFXLetntci+x zoT5J!n8lK&ZW`oP6zF**lTd+N{k-n<58D!SJ71o(Xr2>clL;t~wb)UwQA2Dd#V#i4 z=##1S>ZHxUy%!VOcSg)wBFyq8%4}rVdrU$rQSeR{V?UuS3tU|)%z&6d$IsLB%o7+S z*Y%}XYWWlsEA}Wml(KYU1##37UHXMd7d*GG53cA5&O+~%U9jWh_xFhIDri(IHdHi7 zs(93?oGH;%4eFeXmTkUX3QjgwFh#$8&>J~ot{U1&e9qfJX~<{>jekubK72cr`Vl|q z7k&k_CPAxB%}5I?NI&M6H_s?$>&X^xDxXl&NRxBrBOX*<MPB05gO4ou^DyEaZTC?V zI1@CPjkDlCj!d)*!#z<X_8)wnbfcL9ZIMxGBS$OPUtx>el-sts{-DT>%82zY6CAvs zl_bVW?tpZe7AV6lnHMtYxqr!w0DlvPAMn9}!naL(>HEUStK*`&X#NyekNI;F^-S9$ z{VFvTB9mm*zw}$pIKrCMPE`%K`+Vy2h(%*{zqPl7$6T&eF&41DVOWSO*w2|(m81W> zG(1(s@J~dgcw-FN#!i>6OlZh6bz7<}2-L8uRwWO*Z(&fj{9MjSg=Xq{p*&e1H-TH{ z;#p-u{Owlux|jrFauM%z==@K>USCCD;C88~DY{39C$q(L+6_|-RXql6BBFd_B8yqw zyhK5PK&ijautIX(S$iqM0Q}{0ABigWhe&705PiL}#ie&8B769d8|sZBT&&eL{XX&} zPZiJ*bt*AbxP?xwgCpYX!V5FawsYu-^cTw*k4%r}#DfxANt49h*3v}B1t)K#J-?I5 zJ&|zh8=0&->FR@xzt`9A+9&Qp0HZsC^%A{@A9NyiJwVL)rpDHGj<+iFzyb3cpmN|! z#vrio2rK;xjYPr<Jcs`K65!m#VF>Qt7yx2zQwStWMH@=WD`C*E>lB+nb;FK{s|LME z1+wCXfF>LNOqZfpd8%zYMT91E?3<vBvy182GA{)cZh-<wjeS-TvT*A~a>^w*kfbbA z%_ws<Tt_<3h-QZy3L=g*WyX<|!woo?En2_VS%jti-b+yTI=rzTe&Jc%ewNyHVc6(2 zl>T{J*QVD9*o#7b77KSJhUknH4*4kkB<ACYbS00?bq+c~MPJ<LWnCC*>ql~yh%C#s zGzgqkrx-=zwWB!uBGIc7CuM=P0*|xEn<!SPKG64ls<is>K8FJ%z0qEXC~Wk$G9$%; zJ9NdG*2&DYk8rp*kgSJcl!YJ>S)QKxpaNlYPG2sSLm)K>Kgrp}0nXJ9&-|WwV=yX2 zhMC4pDEsxEsqW%cQRoI0rSpom-p+C3>00^Qi~bC?q+rd$zCZ`j7+zl^vPR`~@{0NX z&c0_cBHKb=T}0Sp1fg)3+1)b0SWsg5Wkpvuh=?-V^1htx8PZ7iw@fW+VP9?fi<%p( zQ8`7=kH{-cR4!@;i#$_{5s1M!p6WNo!&UUf4Cf>3xlcWu^@Vx-?%%Nd*O0lQ5FIvz zgOX9oiW_F#6I7#FGWf6i7>AcyISxzTR50mfWH=YA?O>9&XjlnKbs6U;HM#$VMFLnJ zx{rSoWJK=ybZ^8JgIDBZ2%a~}Ue{?e!<ul-<<V#61>?0<uWVq%&Px^*rZ*eykhMY3 zQh3LJe4g4{f)wlwznM<WYwC{V8W`#3konL0I%TeT7J#gYT1uGRx|{4)?OZ^;Yf~#s z?>N|SsQumPqrDtlKl)XLV)Yce_I_gTqu|Xh$IM?G;<H{+DQV)fb7ghg5jcw7McKuo z_d1&l5Gs%E{lh)K^PNN~Z{5Ze;*6%352wHo9<H(2ZcfV8Qj|ML#kw1vuFoPlb2@JS z%8!J=4^Tq?l$MIGv(a=NmcVR^L$q{Qb#eCF|1>*)W+jLJdC?=xrP|_bi2a1cO`?<D zenEJVhrBueyxR-Y_Lhdvs=x_CZnNN_TL&KRDINIhPjFUz^S6fL>;`<6U2o+BNQY36 zbD%shT*PBq`@vBw>%=yi)2t#Dz}C=%nWG|yvCSy4suN>9b%RTf=;t#Bb^aBJs#}|+ z{3Ao`d88%Tx|%NTUu&9><TQdQo06Q4ZwI^J{_r3CB58Fg@PuF_Tn|Tzo+z$bxnU|9 znQ6Jg9eQ3pUDmm3&2otu?n;E@T1uR)8oEEi>Ar5@9AhTUjii?y4AKEwt{NmG60eVg zoVPJm?&l1hj=RQcf^HOY;pkq0%_&xR>iFMJ-GA>*|Fv~Pey=7%C=;$7L3k6`EHyUM zAsmjFKn!5b(CkHagIp)T+xL0xZ$=c5hKf>kn*5Rm8Qi<bt>aiy%%i2LkIWc{uYlH< z13kGK$C1EHl8Q{powb2HEnf9quS+6z*F>)Me9LNY4K18TLi>vCG;+_OnzX(9s-PdY zNH$~D&zT#VJFPjT$)ib(e9SVJLqBoq#X0YZ*xu9TMGnu+86{VuSJB4yGC<*tl{q;m z6A|uw?fyI&@UhBQ_O#to)bW9Odmn6VA9%<b7+3~?bc5<)ptC>}4e`slKmQ3^j)un? zTH1~!?3wiPTLy^$VEAT9<?+aAvx2WM@#o#}%x+s31+w~0sDcagD0NEnbnT$fVw;j* zb9W^6V#q0CxC|EJVse~XQIR%s!D4a9vr9j*EBB+bzv}l3amyS$SxEJ#x{+E}u}WSo zk_l$Tn||D@G4C=p{$kPv<xTp>+Q@a=uk>F{7f9zPF!99>15sI1foa|BvSO-$sYK0U zofC}xj?2p!zi>+!r`9N=gnUT<JVF4M^MQ)r?GcIfIN2{@cjQ=XeXm@@ROP2@HxO6= z0bQn;%<WQ*+-gbSq8W2I`+~nwHw2E=Ev1O7QYae%F+dpcDss9RVD_dYVAkjUU+<!O zPJCEW<X~htO(+f44{%_;ai;K3!-%|Nn^NLmrQtG)Jf+H+$g~K_h%qp%%$3c-gS}W) zrcTzy-$@h)FtMZ!evJ@m{mKfX!Q#@7NQ#bdb`Xg$t2l}u4FohoR`~H_w3zX2<BuT9 z4ZX6KokTO33`4vpcL<6fH$}#-p8{c=zJqP}<9+<kQ1s~>TRxT+ehYG@wz#*o$;C-} z^a;7)kgw*|nWGswpg4Djs3MRS!x8Y$A!GqK!jsjCUb_2OzI#N2WM1$D0cLGDz4`6= zJw=CukL(!VrmOAJU41<BQ%nvX!Fr|Pc1yvIz9En&Fmj5CH-DT&Q~aqy$<BjH+@ER) zb4Xtu=e~CA*0d3*U;qJ|aEQkFbh!qv;qT`yH^nSQP&}<zjTmLjtvW};ZP&1||0^Ux zYO*jm;_ug7U?6Mj>)G`o)I*5R>x3*Jg@9mByKdhGXEh1`lS9XVq3xOj+vzXS<5lvD zx9Vd9?%u5focX3YQPLlj$g_tOW|m^BZ=&gTJ24qplm?1`?Ic3`i{($_C##urr|U=K zX3R5rrbI18;eWHLOq?rb&9#LWs(QcoqUOJwagz<Knvs8UKo+8e#pz*Kt#L(-#m>qc zF)c6%D|8L1Djz@VS6=kfmvO%K#*Z%j9MskF$!X52Gs7iL)*|%N)!=X#4#s@@(@+@e z?-nuV)+lpg|2F+mjpy?XpV#ap=#XQU*C|qoHe-WfqPu&aIz|1;cB~I((MjN42?i7U zaU{gEg)KAz@*jo9k59cg9ET?K_+|aOe5@-l>v)^WTaaS`75=?#cNSkQ5C<Mi->egH z4bA59G_ht`kEbISB~3I;_z#ZR<1f1??wJy5xr8JNW@h|h>J?E<2Ee=2?Q2MuHJpUg zN#(z^_OrTC`v@7eVR|!we7LtOr9X`|;O3?yo@v7_uQnZ`!H7`<gaQeenN2PSd_*61 zRgkK?KAi6<a&pJ?;#~C+-EhF*@x}-y%ab$+hbcgzS*+XX>n1=t000C^$#-`;5$DlB z)hqH<x$E<8oH6a}M2_4P1%f05LeeT5BlMFpLh5AUu_I+AbqyGx>W<#y?zB$tto{(B zP%se&DAu$>HDtYVLaw))kW7gR3&XTdSDM$@9bPs=kgliPJ2~S>%?8ZR*D-zc!wmph zWoOzEkpG8Qo^QBmFCgG7LFD=qI_|j!o6TPUsblGBRL8K*Z-V6mIKZu8z-8NS0?8;* z{*Olw`P!-fasd<HV<N7dEDSfxM8xEDegYAcPH$N-Fm<mmwu`R-P`N+bgQ$gKaM20{ z@n+S*GPRaW)Vb97(_g&!j|C(3$p{meVqj$8u@j}Rn8G+q&pQ9iv{6?6+%-4~7Q^}> zP5njBUSh#bs+%)>+F6Q<^H+4RZ%Md93zXx7S-^d<!59z3&La@0$r-<+gTLY@{EPq( zuu$jtgR?cVkkED+HRt%+FAvZo!SyC^`p)Q?h<3f|(@eKYc{$MH{}ClylJ$JscOfLN zH&)2e8>L>ElaB*-5(gO__q@8(%`)PKlwBo&$S()mJ0bcf9>F0IWb~hA1LeHIQF6>M z(rRiYv#J%msueuBw$1rjt4Y(4*4lMZ9En5)DNLk@PPgzmvjS@2V=a-15GmZ^x^yJU zNeH|=Hf00Gmj$)TdEqjNY*$rXYpOJ0z9d6zyoJ;2b>7t~|3c5d0UU1%BaKZ@O9!8! z%@lC6t@A$P$ivpA>Mkz1le-0njvu%)R>o^X;Dl&20Q&89n)YXLvdAc4TRv}=1fNDM zn}`6uCvJ*`zcD4E>^fNo9N!obk#|T>6LKTKmYaS@Z1hb}266XqtQ2FAE>*OR5R3x- zaU3mi9PM!&{;z+<0vDb4b!PkfL%42rj4m^(T5fJio`F3fmtwQ8H{vHmd29(vBue?f zO0MEx=vp(XRU|VzL<GaPOwZQ|k#6ge?BQEbTp1a7r{icf8kt6QXHR<68vz&-8}=wA z&emqn{humhZ%<Vs>*25ghvWl=kgtRAp6hR=Xk8$3vlq<u>mx@YY_jF66`dSUbsH_l zv&Qflh;u#lt~tqU>4O+Spd0)b!|0yo^$PB+EA%QVPOhCEq2ZYd!a#a3HX8N6B1NOd z{XrQ)BUb}!xG<&8U0jN+HJ4i|VDS|e^zX?8YUonb5n*_a1&W<*$B(qQ$>L;C>bya9 zG9$}>tl>q421aVeQG|+iAijvGd=?h}eo6>KR#Q!AYMu*YNP=HuU>D)`6=MGYf-X<P zYxYRMi*Z1M^ZODhU=BpOwpo3oIgm+4`qs<aT!NM)`1Aak&)8SRdtqxM`)&PU?^!R0 z2{pe`-L2?lyGZ0Q9pGyHwK0#4t)Y*A+;CjKtOi8xu+aNn&sT->PYP)yFyVGEVO4D# zzlLHj+SA9{Dr(K3b=nBvO5Z`gKAxW)h7kDL^~V2VpGU$4q-PO}(-ZfH*^NvtPxQFU zo@y8cNl{TMDWOW}5ZBgD_#HgxP`sSp*qdC+if%5ZRL92w&_(;E*!UkMmmjJ(+U<@j zFh171Yh~5<n!M7kFB5#&6M{Kb{Hj4kqj<~^3sa$BsE{r_1)cbTebkA!Q*;rCD&DQ) zhBLSJ3*}9eUn2;*)(7isWnf^BPxhuMY(^B?f(npQ>rFk|DX!xlWi9VM)jAB7p=0l- zg$D=YIgkcijofU!&VI<`t0Uxkib>u9BKCJm4>OTSyWwFG&UzqM5PfZBp=7(%1*6sb z_uoyK>XcuNjp}JC4L=VF^@|6S(2fO!G}m|3#*@9RfdWRysn}l@7QZ6zkLt0Xi)?n- zcae_8KP_~r2yrR4t{#lx1ICTW?;%cTY{$2s;tHo;2c?gj**;_@-7kMUzb2Vq(HFWa znQ-Xzs#luWi*aojyRtWU{Zf+R;1LeC;0#uk>yPSq&Hre;@4XO(t1EbB_9tr-1hRjh zZe#4uBqVOb9T;n5#SK)=5!N3e3%Fk@c@V0htA?!T+WP~QW`xKW>k<Wi?YaRG+4kB> z71l6afW1ix7OdL3X&jZUwOq9(4<CQGB#4%44IbUSNlnrX1&_lETr~(qk;YD(M8lsR z`+@uK@HRT`>e0|4tlnwo^8K<%DT(4#TXebf3CUdCj3AoA`Z!7j$nLnI1cQ#45Kafj zOF_Vkbw6xY4udw^r|J?;`hWbMKcjVsm9WX_?P=McmpBTEdTz2@O}(6Ntc_Yiwe04> zG%|z>kwtG?bcd?Ay&%+Hu7bm@Nv?OQeab+hs#O+M_6}IsouZZ&M%oJL(K+EuB1Bmg z<O^cNjUHd-_J*Rb+xEes&aCk1XvqCy>FDg>EO}G21KdA}p{o3$O0@B|P2sjp`>KLT ze`B|<fJ({<!KpWcADale!al$|Jsf>>3aR&7*MKC^_uUiWZG4AxliETfJ`(=sKH+B# zuoCr%sOM=)Dbh&th5w;;w_Ej3{h*feA(p*0F6r_U1H=Civlzr5WG5HMOqCn@hls6z z(zs&vwBgLIvkW(x82RuTpsYGkXSMOI9d`!<5Ku<GY|#z12-;;d*fB8^$Cz2X;D!$% zbaA8I)xi{tsa4Ka^QVDKWxje_u}598P|I28sajQ;ojo0>wRmDxq#|cWBVzoaq?4@r z{gJHVixpcUoI6#f?xqo9P7N>n5@qdXq1mW$lh`z)>N~J?)JE|!@$u`wMa}a;lzx6G z))6yHqe&v}y^t~)?H?-_-3VXCz|=ZUeFm0Cz87c`ufch}c<gX|<x7<xV1pjA#uY?t z!Na4++(u%4uIVJwv*#l!R-G7#FV26a%p?CUf=Qx8O`}+R5K~;SJ5@T*@z;(?kNB@p znlv|-v@Ls-E@$-fon5g}D<Z_XS~ww1j6ljp6A(w2JAe~6m)7x0GFHZB2sdeqAoV0^ z|J(LtwETN>%Bj_O=`BnI650)-8VB~u+tr2-P3=WaLlyaF3F4)4>JhUB5RG;<;f>Nv zb4>j!P=fT}DK<8{WUH1LAJMb%v9r5W3L+NN5_i(-+TcWiv)=66oIZe{n)peIQ$7@7 z8dHLkI1HP(432&;8tW$U6YA-DxOW?zmZcmTEmV7?IQw(Z^PXa0UT`sEBs~!ks{$n| zYS0j+%~eXf%ln64`}4I<{D06b1oV#4=yT^`??!GQ|9a;pz*{Ho*-~wlVaZ`L5f};> zq<#?bwONt%e>)&XQ7oCRHlKv-+lty;eB1I^bm!gOLg{}6nq>==s%0y5ap9eutJsPM zvzdCF2Yz}*L~_{3to3R3!H8*j(LLbFY2!l-!i@oEDN87S%H;~Tg2u`~VcWDl8cm@} z$Qgz+{j^er`OnYNvlBTmBP^giRBa|uFd}h0Xp&MzDM%*IW;X_$tgrh%JrZE#d92dW z1I*vc=Y5^7Zcf-<Oqt6ksRoRyIKR?sMj$055>m*Gy>44m#H&y=)?RkU*i@7^iftWJ zSutQ8oa=dHOGhwn;qz>?Cw^8~?3xSdRFk*u>d~9^?IJu{<edNoWB!&A{bNq^^FvcE z0ziqGZ#o!780thQg$w1;vq@!A9oE7$bnSNssEUi(uHc&GOWJ6c7Uz5p>u;I?N5jy6 z`TJ`s@E2_aSc(eKegjAqUA&<yrHD%1YA0hXcopzL_3<X^H!b<?KZDN0{X)+m^O=4T z-eIGkca2PL*`+-M<N%2fj{uvGTa~wE$>C|eLf=<HH!asb9-9LPJr6;N_5c~#1hvYG z2nY#(N(5TOy%1pnVT5GKC1aQl5h;+g#8PB@OASt8l}mS%*q9m-(~>BdSwcsXJ`UgH zi_6LPLepSs0q(%t_=-tfxV>b$+$>R$HVbf!ak3Po2}4FI>v@3sXG-lbj<(eG#s-NJ z{8Q$;ZF!F0F_STU+vA+hXB*EZ`n439hDVu(6nj8CU(+#|d@|Rtlky%hMUOQG34=;{ zd&Pgh!JpIh^8JNzARcM#$qR%!>!wz`XM2c_x4nitSUrR9M31@8gB*0>eePtpiuXsE zXFCh~AY6gYWHUZ0w>E2)ZFg#`hW(~}v=2R8l`4LB9x0UbTS`2I^jla_kOI~u&!img z_96dng&_Egvg8cWvEo<mYq-NLL_#Pc2D+HC4F3MdK3BkW<LxzsfL%{`o7f*Xbyphq z&$3g^0dE^5=T#txStHXZ<Ya&-<ui)k?*|=s4xdw&wEXYzY<@=LfX{y1jyssG?+~tX zX{XCZu;t>=j`Hw!vD$lpdIkBBt1?)|H(?Fr2_{Uxy!my0cZy76@0BCe#7@ds0)A>i zwLfRH5ke<cfvKk9CbPkdv8gQ2`&#mE1h_LxB}&oMtJGSZA9LLpzhfBB*!9_B6ii`o z2WMB45R#rizCN$FY=bbHP{g|bHG_%OYnQQ?*aV)eZIMbyi7g4(7XxD%2kfgTW@PUv z0ej9Ii=foVA0b#dg%!DHkZe>Pr!3othQ7bnn^k5<nFlx&a5Id+jr*r9k~&(4(a04` zp?X!4Iy^1m{ojR9^SzwE+akMg{xJ04o_KG*+~!lcgK|1pIV!LfV7UQSOjuElsMjfP zkLqvt+5;0WAAJIzHaGRj+f|x;h1VK=hg<|7!3+jnljC1m$D3Hs%VS(mS`(OdTy)Zz zOoppmw$IV$p(2gi!GA#1?Y|kflM^610lH)P!Xw5{4n{IhUT!WhNn23wqubgI!{?O= zp%T86I&$$zqi+jFB@0HAh@I6#Ta=IV7}XIk+kuEl5=l`JB3^dhAA;xKj9PJZ_V<N; z!c!Cl%D(m(vhROa9X<2k)0C4{SiqoPt<;jWou}5?&Kj6r$6EQsgW`#Laeq>_g&xfB zU}wx0DjE6Z3zZQ6WVwOwUQ=Jk%c{rRt8aVEu&S`~%TNyN<l^S$qv>XKjzEI{biEOy z6n^*B;bTO=S$%K34?0toaXbT`1OF;w`*;sWdXx@rB{Ry+uS0nLHBz=fCk||n9kYQ> z8XSsVuDI>1Ey}f-n#*#wx+>T2W!71OJz~XylY^Lf$vC-GEI(B!yhL8kME&%}CJ34v zX-=FK{dFHKX2i_%gYqdnJuUTLIa!5-=0S-L3R1LC8;k9b-$J+>UK57LbxkP(qK<6) z@ysX?Zh%V*vr&ouBfOe@*rtQhDJ0{D?Cje0A;!nIv-SRP@g<;`UV@xh%F_*3owlL@ zzsiu2-0!;Yb;ekru&lzHK=(5DkZ-Oz2Ygr<-Y)|?;0;rFqDHZ{O>xd2nZ`5&#G#Ud zZas)Jvo$@Oc~I(*YE&8mXYTIv3eZ&>WBRgOHCCm~-5W4H2G~T?FPS!4OcMrV3lfIa z4iaf#4iLZhpls>GVM%~#lM^H0v51L-F=MK&9Q-TYw|?S;S$BB<_p_~LntJgljp2yy zaY@ngGK?;hn3x2Q)c+Fj`T|)+6>El5e-qnAN}1hya2#8G+Y*$PUal}|qB^YemW}d4 zkP;J`t|1j_4K7;U{I(wqydjMeE8mwMrSsp~D&e=5=7jG^iN-`0S1JG(Y9w+JMV8?H zr&qUb(CSj)e{}fNtr!rXr=M+jl1Kk)fW=4efKQm|4cl$?j|jswhZlWM&)c2;M#aSz z25baPi5~rA(1q7+y_4AqW%+Kze|;om;$H;V5lvr|ixp!gT|Tpa+1aK%|K{LZ-m_*m zn;qpW4USA84)T#Id`RJY=heie>@~yOc1Dci@3nw2<Ag)Rt?1U19~vLyJD4zJ`tAR& za5Aj806nQ-bvi6$e1^#S6E;}PNSbp6=2P5Fm6??5koHz3Duo8fw`@$zKlNr`Z2aKA z?5v>raxUr46J@skSd5H2ZSNtm+Cbr5r)fPWBc*Q?o@yALV+@*sv<#$LtIi_fxYCxl zcvZVv@;6N0;1z|cC#nwecbiT+5lV2w5Jv^d<mXP&iy_YH)fJ>_FU-EGSN_Z%<F%e( znP;QOw(ffhM!;;{-291l1qvGmc9V5n9uqAmbT7_U4*ef(v$CQbiT>d20=ed{-i<qG zUV8HZXr+6`<CFkvLy_r@5*JyDlo)oUiN(0-Is`|8h9SaZwONb!7qNL*Uh#p;q_%c$ zRYh=J%D66qa~m415MtPW9#wEe5^)trxiDfSYJWaOgM$$xsnWsh{chPMEYgni$KGvv z3w8yidP6$5)3zmb?)k;ch9gW%BTVHr2H}-V<S52>z+j!>SrlBOI|8HOJQDWjY=oAh zplYJ7tpbsGlthP0CAP#{5FT{lX)=BVe#d9MUO#bKP#Sxk6+Ny1ufVDDa+)um+iC)L z+oRQ*v;HB61v(_GvAwxVsHY%hYzU{XA7Z2%VniRz5Z$BYjO+E~OU-p3brr8pRn<4W zvY}45!{+|<N=XfFLoLn!Y+2?@d8Qb7pp3}r`*luj=yd~L9Vc(A7;O`c(xRPWo2jsy zk7}S^l`u@t2lhLVyr}Bc_uNyDj8;oyMs9x-J@S>$z=HYGY`=R2zx!TB0J6e2&x35x zRNI5HTyo1mLDvu#<!5fCj6|!wn$BprzY0X<2JmItK{7q`JIbGq<GRDB3wAa{N>W_# zemh!rxceBzG*T4bM$5Z_q^dIL)|%5jKr(=T(#Z#x=#Y`_Z}7{1E{edQIs2K%piqQy z$XQhlUqbL=a1e)!$k~LMfhJ;`20KQT1J~-VFwz#S+{j$ORN-xy>40&7qGJ(6K8ir@ zoe;L3V0#FUP%+|qXuS%AG5Lpa03g@#k9p~76xx%vasv9|3D;X>%$KhX<LjdbnFhuP zO5Wmy8zIn-{_Zw|Bmh2;|6NTJ(E)~v4}|A}lXw{%z7QnRx%Iw(29M=OrVx6E6l7E# zb%&~oJS+XrsbnF4O`xLmV|HIYfSdsPyrEk~0^TJFMqpDviChXD$%~sNw-9MSEPzzh zJu-KM>dZsPl5g_1xsrhXISBsht6bY=5c%by_14Krqhm*)i6O40$v^XqiFqU&2RI=C zOFzTHIlvIUy{~<x037K=y%wY2Lg`^Fu>yC#+`VH_<hp6l=^|iyuLZPqf=@zaI{qEX zcr=U<F^m_}g56x41dCI|H2v=DAm>jcNB-6}k3!A|`e`I~NPr7uhH?7-_>guBRdv8e zd}Bm$N$%9G!tTNVh8iJL0sf%_(4NHR-}<yKY^0Zi2;W$@DfWE<Q2^4Qx5#(=x4^*F z-VJx*qs2RekDfp<Knf7w`Hu9Vy!-pmam*jK0cjI6koxcD1rdPqZzl{2^Z$d5>+}PJ XzPVE|Y;sft__ySxm8B{rOoIOhH8Nq4
index 97de0c2e4fcfc08a7cdd382b6447a52473632cce..aa206c51e3bbe5370382f235d2c3bcc08626600f GIT binary patch literal 14051 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 ZDN>gvB|p1`&<XLM$w(?nRErq}{vY|mspS9w
index 06cef2920eb49e0cac0518aca9fcac924ecb1cfc..461961e8d4760ead749ad27290ed1e3fbaf023c9 GIT binary patch literal 37693 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 Wnnb;~9P&2)t&wWFs#S2Ci2nhMQI3HC
index efe2eedef90361c6c17830303c0c4f75e4c53f74..aad81f40d066b9cd6387a800df7029fadc57f220 GIT binary patch literal 11763 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
index 7dcb71d7fd3200d8eea67e4483319a35eaeab071..f46b957c2f883ef2b0a454f14140647fc072e5bf GIT binary patch literal 36640 zc%0l<^;Z<m*WLn_Ub<mP0qGKuSh^eO?vfNia_R06=@yVK3F$_<l@^rl?)UTkH{NsR z&YXMC{BY;aeV%zHN?lbB8-pAJ003Ys$V+Pi06?7o85H%uh<Dvx$$tyPRzgJr0H{mA zd^AV-&qsHa*Y^MbsKWneK;uG!p#OrTA7u1CXt~&Y@G^I|2DqBrJAdGCw*CO;<KW^D za^ek81pwl66{ID!y?-Bdc>Q3|^?da#`n^K9Lqy2VhER5fS&o4g22UOyBqhk6C0|C? zbu{;E@W&7=VVcDLGCmwI3%E|kLUjT&q0vgiMrZ6~i?}2R)_<&&R~(CWi62*07?zuM zC1GW1<lN1D=sFH~s%YO2IPmR!1x$OVqi_BHWBP?VQg)A_s`9XG=zP`|cku>ekQk?q ztp7klPf7V3sR*!81C$BaH>+l}h1>xiqFa@uWBU2jq<P02GEt~(!a}P10}`^(Og$J; z=HD0t<*Z*7JY6}z`@A}V!jT<Awl9hN2)m^$cMZ2{(d1?TYjP8UqshjQ7Dyl$Z_7p~ zoDK$%n3lcQfl-1egQjSGmhc)WqEG1MR;u!kvxU~$cHS>))d=$txoTf~gQDO5{))FN zj9QJdMLyu?R;G^0K(8J<<uoQ<Ob`iBgBeMjQU<?<wFDm%_OBB$IOBufbY2%OJns*` z>(=;%JN^8}aA=U+vdR{J7ZosxLzs6Ifn~a{QXwMAkZ-;OF-*vM^=XM9<T6kiU0qsj z3duW66q+ej)(TPE0P1f19J@r>_v$(icU)l8mTLyZk5XIu-sHp_gb{Lv<$qQjSbRu6 z=t!K#C34C(+xmzkK$;!25+b-TfFZmA7-_Z9^#tLuhG3p!6;wMq4@ki#{yxqf|L0EC z?yvfMFMq#t5X)82oBXeY`@w#;K1PkQ0g~J=shWQNoK{~cm~WG{;62eP4`XH?Q2LAw zLWHYd<d=v|vcI<I`d=|<u}#p;03ZN*G);^PyEYxb^YfIef`HK(w#4J6>Tcj472WF0 znu$;hK~}?sj5QCrn{upsBAcsolkTc`ASMNKss+76<`5fnm<QWGuS)7?`69d5b~(g^ z*;5>a3c%>BG={*^qNT5p1<*xmB8nuW^EV5YKMcGo*nU`d{k8N)qJREQ<G<w7pAwem z<-t#R)_)f7lR2FpFgg$efP&&y{zFL?Y!oM*uT<zG(fQf>k9>ra`MqBGo3*7=^HG3M zW`9%ZX>y7C&H+^jP(>~OZ?vzd?jz?W-*eZZvAohenHF$};P>-+yAs8|r;jM2YXN(% zg3*)~%5NrL!q%;xX;11UEm6a&w5+U$viukvT`nc-nr}V<;0TE1QLBBT`AZgMLj@qD zXf|IVD<l;Og+t{KdT>n-D7)GizvHFY-i2?#jzUpH1#cNB{#9zng>MeK2~}53>V2AO zcU(!QG^qnJafS=KPoUU}3(Jlfl^_TujVJbSv(XqS$qKM4q~(M0d*^2wY}4rnM$r9} zL~6rzP)TDSEWi<P!C-hOa%<O+Cn0V@y5?^bu4`o1ZPjbThYH>bP`uXfwTIOb?0VW~ z1WSO*vhLM@NhFuHy5?SJ<!(Aq21z#quvmEYwUF_nU>N>qy1&%w2E)a{wGP+AT0Jag zAz(vRbP{gt4wvTJOfMJZLH#ne9Qqk?x($TiIv%K(Rxm#DOC&wCDEHLRbLXWZ^S)tS zsLKLQ<eKe(bbFJa`0K&g=F0T5kNbxL3c6Gb9%a&S?Mydj)M9!*@9q{Rw>6ZnD=Cjb zN_?SEu5-LtJ|9>~f(Q`+&6ZGCc2rK$h*32+re3}1GZz@XwIYuaiqC~d8r0~@TJIb) zfS@~d{S(KvAEo+@<JqBc?eV9nkQ$qgtq}_4tEP^tDmI-L?;Bgv$M}-Y--7GtFbF;m z8hMm2T^Q0mbU^?a`hJ`9oTV8-7H;l{CXF(p|79q780{|~-aiJ*v5!f^s%n$Stom;H zpUK)~-2oZU5`-d*(Qa@Pw%Leo)<&Oi*2)nK7kPz3olDR48x|qwc%1c>)4^}|y>x{z z`1OY1-l3@16=x9Eix=m%qiwq1<-Iu;@pO6%6IRKkh1OVNE+z{U!)iK!g0Fs4m0ds< zWLZhkuj`J-sje>2mSoMEI;&~UO=aCct(qZg<(9GJUPHJ962HjiIgZwZ55WI<2SUmD zAV5pc-ftYJgA~-xqL3BOjA`A>Pl9;fq*VQG5ORJrOYAeMp&rM;o#bi5Z@hJ&_>|t~ zYhvfCm5IR5V_l*Rgl$SxG(3r9i~WFb#^C=t9O_8T&;yV=!;7w&!Ba}a=*6q+-i2*+ z7e4-TaCRisuZ`4~pN>khAR#l0<U$tw(%QBtS^4%M*#KWsHQ)<jNNTV;<%tUfzUXvy z`dT-kaI>{#E3tq40kq=LkM<Uaaxp5XkDtw|adUXO?P4)GGw{;)bM!|~8=da6TWd0} z57n0caM`Z6ueUJ$ApuabQNG#8#@JzgZe6=7dsuMWR~ZdE*k)?FeTi#`Rx2#N104Zp z7c5=HTech#(E(9s<LNM~g<z5H?k}rz7lS}0a3OR?-b4_7&Z;6Hwbfcs0{TjwTyU%t zovxDF?X>McXX}p&Hh`MgC)P!DZZPhlEn|<H5-3<52`tv};GX_KO=;iK^>`nXX<9Qe zg&|07YB0D+?NDjZbgb5w82GU3XZoQ{Owv>`Jk!36(9X5cQ4doQqrjL@u0OxPX|V@i z2<7tK5)nv}1!^P6zsTzU9RWsfAq1l6S1ahhS1i{v08naV`i`-UO$KQ~8TxcFXzBB= zMp+jmLuq=i7$E>)Gil0#kcrP3#KixOlyVcK4d&g9?=$w>duCh-tVH|%uh$Lx!Idg@ zj*8l)HL%0SVH-E#EViP*3lu*T^mJ8)xg#Y=qrV$YqBeO0yOatIh~!F5k1v3iV3SS( zB$4iv@^W?>b4Zkwj~av}K~jlGM^Y3#`<nuqUVCqtBtvf@RRLh2G6dtb;YC{Y-gaG~ zx>GRRDkusST~$U;Th`2am*=I^>as*KUvOG%%rTU6^BVkg2ST?9KM)dTa}-<rL_u-8 zYO88-1qC<&=Kuf^?;i=1M+W_?Lw?w0x!^@l^_un!O3xE#pUeIAwhxEL`(sr|OPP;1 zhLbfamF^4gKlK@-QFl1bJcX%`ym)?SUNmq*gFXQYXe1TOFL<%cr1kTY*;PV-zbd8B zfhYpb=mW>-1Owfh(4%1KO8R(dE=OZ}#&FGj45}9=?xaf6OiKy@%n?RMJuh~zf$lJq zN4%8itHcjY)m3SsW4qxPtLg*J6fCk;tBZLFK%!9SvM5yI)PduN4|Y5~*Dv=|-^twG z0SY1n4!jgFGyd~>;{Nv1xS{37jwb$~`-;+=pTv^A=Iyk5;Dr|ljelU%%Igi%(OX9~ zuY@(XZBs~8py@-n@5{0D`c4S0o27lh!<wq;^LfFZfX@@md|i%IUY><tkI;^sheH)y ze1Mo2#im4MqdPSNlcq9fDi9Wv1V6&~G|}cMp#<D`sdm8MX?5;&Y+f?zcy_5lXhpS+ zY%@$w&3Hh_vJlmO2gc$ZQ71*6`izl-D5PO+c><`4Pnit^SY)S;CGLQcz(o&r$2oPE z`O}|^svAQbs2Ng-*x+pbseNeefgSFP-w@XIWCXW2UlxBQ`Gwf_Eq&LsX$_GvpylCe zd9rIm)b}HvgbtTFP;NB7^I+vW@2(2`%=RE~XH8s$c5yrY+TQGbZbkEDlzu23c3XfN zt8N=q3ZQ=-E~{%Hhu}Z(sZ&5<ln;Rd30VaL0Qwhj3KJ|Q2q=t)LyIIgtAdZ{KW?f+ z(hVRibO$FM<X;6?Ur0qG`b=*2hNDKdYM0P#0rc|}3@PS{Oxw$6Qnwezk?QTNc*x-Z zz^}cY{+dnL2LFNgX4<#2HrqB=nKG|c{jX$^cgyQOc6fQ6jyP0bkQ4i7_f_;o#|bYB zVO9QKKOR@aot&{vI-lRgbaA`Q*SYAbs{_#hW-rT=o&BCUG{{Zlo)*P=%Z2r8|Ad>h zwN7Cxzxz{V+rC3(v>+Ng;2c+6EkpV1QD_`JhJ2`6c)6%s=$a%tIszRiv=)jFxs+0e z2PL)Pyj$pC&_=H}!YBPa*us<)1CH*?Y(7X<0=)*r%n;C_VyBJ#8U{qA^(En}H5|uZ zmG-unkHxMTp{-WqTF|HRbZgQY?FUPtYqCxNTm2qLpKsr#kUByD3<&nbcA|V?K>pEd zzw>yql}lH{hJ?0=k+Z?1cU8ZCR=-^Q6yQBQyAM}??>#@`OWf?^vetHm_#Pa(shr(L zGj?a0?y3h;JWqSo&1bUqdH=u{m)$u-tSvI&J8sv`K^0B+2^#bfAOUkA{u5zv0acdQ zDW5AXG+Y2xU`P%J<X?!UN-{GR(>M&yoY58yD~$)mx-*d)&`3Nh(l}z+7_;gXsJG8B zrg>JJ)HSg@*p{}`)dkz2&KyQq6>UnB)oAcgq+E%(*L<!$9_lJG#ROC(2`|LHnJyEm zYafz!mCJ%JD&Wti_TqjV-}F3r8(Va7PariO^56y9GzWCct8DD#HllW2TzY1>l69!k z4B5Utz~%hV<-VBk^os~EC4Lw!_Z;x}U6xvX-MGbND;@(sw>x(0`Fn0xhrU)jI$Y;| z+bc6}_RZ7Ud*291-1_;$xv?+J7m}Qhobj2V1vssx^%6(!-oD&JSqofCY;%YH=+R-* zX2rm3$|*?_k>3z<lRv@mkwsU{<H$&YZn`%E+zCVeoQan`@}AqHwF!a|q3qpJ9-K4B z5sIy>*%nk$>JD`T@By*me4|Qx(vO=E+HCb;fP8uF(ly>~!J3MV>te+IwI?d;2h{z0 zblj8swE3mB-)MTlv=SB=+HXnVB!DSgBC&u2H@|~Tft9w1=_K-8_vQ7?%af;~&M7`p zih$1VQ^Ik9Hrqd*UUVe-2ol{|Hu8e#l9Tfp@)=-_50i!_D%ST0Z-2X-eCT~?-6^oI zYn)Q$jSWC{e<zd0kH#*sAuAZ*usZBrqR6T?Y1=`~=uteNp5Yau@?7M?j;~q37zx%! zX~}EBl^=uy+`=8ka5R&s;|=kcs0P`X@Y3$H`kP?FtoW?)o>U{kXG#fX0Ld8hQ005u zjP>ssvf4y!Rmuh<vFedae+i^BD8E@cHC7v9Go#EItADdGNZNf86<HiQc$w4?an<Xu z9X}`4KJi7)_#^kLyC+SWh`T->8F-r`!|pgb-KGP3{3pG^gap9?<}VLfTSrgFU;jCa zA6yafiS&>TJ&U)WTI@y85a(n5`Bn@fJPm7jcCuyh{_#J_*j4$k7B;X}BmUz?@Uipb z+eR2GJFWI0x`|M_`Q3SRAxagQ3}Nd=Spzm+Dm`pY1ma0D>e*9z%)s#n)(g!G<#j-t z(y?696c3IuxH0#&<SccF0SINJd^<%1zU>rv!Md&ZqA2uAz0IFyX72#Z5Z604Ijo{d z4Av;OXrXh{cBHReVY28(XN2%>z#w4B{cQn!$Pg|q;n2g+F+IJ*LfdmudDc@+-6A5= zevB=4l9Ol7l%>vsuL)44s)IRBppfI%q`)lBS*Hut;MyH*JPDOU{FE{K;+GdPEtu3i z`-&XJCHvX#T%rA?I5_eZ!1d7g;O<+-9h1#rB!C`>i(|ytoO?Fmi@Spe(XZ@mczFKR zI>C9o`nD>i4b%|EIs(PUc9qs0A;g@5i2N;GLYfEY@Z(Ap;aG&PpYkCiA<Aa`s!WnU z_qI^BOb0K9x=?8$3yblVGls!%VC_T$gPa+v<5|>~&zr9=7DF~OA90e<aIM;sNwOh# zCZ$on1#D-$7W`*kW};}tfw&)+7N7<F$VB{V8i$)$GLxYQKz?Sf0#vF3h6A~56C);W zPnrTY`ogv9acz|2guN#n2i@-5s>Oito=W&WNyv|?vmGp=t-f{fa2L^*(0h6CXUcn~ ziRa5aWQn9dyX$ccQ2KFQ$N2k!+UtzrEDu)yj74$ls}r7Cwffd2>F<g_wh{C%Bx}AG zmv0)BE$6j&PHb)8cHN#z4Q<@`A0<NuvC$cNxkCBIq*(2leF)v(agQhXhLn<HI-aTf zP~R7^hhAlVR5BWhOyojJxy_ZRika}=**~7Od2QHNWz{tc#PB!i^DzSyKxhDTU<LZh zTr2U*`*oT>oyWhpqJ#ES$UWuMcqEUQ)gWcV(t&?iT+-ncbangz*;|o{JX8~Ysy{oD z(@(#&D3$UG^JW14LgO%^X+ieAtq`8gMd`Eo@745EWxl)rCEL~#e|%HGXXW*P|7MM9 zgN%fq>-T97+tpe`0&*BE^sO;LHB?EJqQ@@Ib*S?bWtJepL@6&<z+~Jh329DI_Z*JT zzmuoSefpOznuK*ti2;@|!Q;T$PhPMsi;NhJ!&2!(sZHjH$MBdnuXQ;~m92^6moGw{ zmzfbX!pU|db-u~OQtyniZKkhdWAM3SpfIbV_*(r4cgiPkhD353yt=sIuup@#UZ-vI zG~GUKSlisg1aN#LA)FDB3)b)g=)w`;6OmhCKi|#FY-r}uiT#cT16nR>GiBUtGaEcA zBP{qXK1o_fPey~l8mRoISGq9MEWC)2viy(D03ER+Sv(CWw}_xOR^8#|oJ*1A-#_91 zsxofY<`0K%<*YVWhre9>CLheA^1tG$j<GYUkkR^iEVMNEa`%sxxh6d3I*`gx><)+P zb@rV_@9!8qo-LHw7kDT4S@yK2VZfCy8tal^7}9bwYr;1u`L^<737Mj%Ux6m81r_rA z3%d763C)j_^_TnWYtxB|=D?F6(FoYJ%52WCXcTF9Y7}y4@APXuKeDX*wc-j>hjQu; z9VJ!Jhp><D5O5$Dx?qqA;f~r0E-|Pk`}U2|;$v>W5GsNrL=P}C9n*D;n4?UD?Uvy^ zen$%+@w%A^u~ZyKDJgpOaiI(wUb`ngGv827x1{}nvFPv8eLPAT-nUw*CcKO2?jG~* zGw|H9e}`Hw*c;@U4MET$&!kcaOEn)<{&fuu;QUq+r83{UN5FO$d0a>I*?&CfGKx$q zX{b;8;g{v2CiwFj|9E(fHWd~TbK^&SAa>y_$iH#EC|Jh7>-~L5_g37sv;L@w<k`XF zL9WZ7mGvu<JEXL$_MZoveVPq1gvBx)NERg9y#ZtJ7kSwC3bejD%Rd_wZO7?7xq~XN zD(pri2K_4R<tG3pMSFr$qhzHUDOjoEW0&|7;t&E^!XUGw8c@#>8mYcPFK6`=B*6CQ z;cO*|!Yy1dzbQf(5e!twSGPN>rA1T|E49~$y;-|PT@mfTUct_91Ey-{x9K7wk->Sy zG4ijhSxQ^FWGS8FRx68nzZkRTfw7fNY9*xF*;((5Uq?e=*#S@t#$nu^+;3WILg>@= zFeE)+7S}p&WtGVV0&?jS6p+KSNo7Nsd*<d>7xp#x1f0lyv2hBJj}6H#zje&CYisdy z1b-J1jCe}fF>BoHUiEz2*3kXCK}IR`!@wW*&BAQ)=ZC<nGm_Q2=B}3ax+s*dTA!SD zdSCY;*Nd$V_azm6h9x2~#)v_R7X3oaFXijnZ>LV~gx$W;NTLR*_F_mfr}U@&L~WAH zsMJ=RM9zDFn#iY|`jd$MSXrQRTh@z)e0TDv$>qIz595{|hA%RRV%SY30$L#suwhyl zdZ<yKp>rVnaprpU`k05rmdcd8C~cBcJH;>g2s~HxFOa%o!EqbnQBZ`S8dyh)Mv0Fd zgl)Z&4&fs`mL&O)oq1N56%<#O<XEddAxJu90Qg#YaCuC=fBufSn6%KRYTS>Z({g;? zhimJ7`%wyqODpjkYCAp<+>jq}aBkv27kba$v}K3e9x2SF@5dI(m$p;w{%=YJ2*~Lh zRXn-oTh-zt?}PGgf8KPRKe+e~-OzX!f`(X<hNf}<Dp^70QyTDqkvt@1d*B({VL&2n zzGUxq?#X7ouXuEKWP$nmV%CXNxH;v=cbfYuEVZ9v$G4o08?=$B8@r*5Affnbe)JOi zG&Jb!cMl7D)W9ECF0KPhqCT{@#dqztI(~KnB#1c6p<LjPgSEWD_q;m{NpYoLAAF>R zNGkDzG>NP~8nlv~rEi-Lw<Ng>w`=|Sl{-p|c*nXZrT?oyz)m_QM+zOnv?IeBI_CBo zG>?n8pejR@o}21ra^n?%BJkN5C-m2Qzc^;OX7p$l&X<|{{V4g8zZ0a;U-EGByiNI$ zCYviCFGvp1bSqSwt;QZvo*waLwHAZGndU}h>&=wV0ncHlh9nB|t?U-Sbz7@q;n%~s z+NEva%}lggcK<bnn!y7JYyUrHV)CkWh@c*CT;ioow{_o`^H^(&;C6M)Dgid(f_iaT z?>iQPH5Fd$T9v%<G!veU2gFyjb8x;!!htkL>dl`W9e;AQ%obg+B(#t3!!)W)x5g~d z7DFMAPtfFHAd}ej=|yto>@;f2eB?m1d}5O^y@2@kplqpg6_z@~mzuLGB8eoFr1TH_ zt*W>6hG??+1<KzLHD5irvk{Vba7k<YP35-|;(T*Sd<0SbB=n*67MFfei=roNkAohQ z{nuCY>e1XCgu4~X)wqHX()ZG=VTL!*AG;1f-Ajv8v+JH7lgRr|ZOSwN__Qlg^%Cpp zswfrZuV+HO&KLH|90SP?iCr42;Y1i)?0hN5`qQKMvrE^Fnv3rP$=ftRpX6U)7ZH!b z4n6T|kYICgO;8A6BryO&&NNzBxH*orLVNMK|K>Ki6gEg@P7r1OIvEgCv5aDv{!t={ zSrNVoh!ZZ;K=aKdmO<IPtE$=hJSZNoQ-y|alhz90C*9^64#H_#Af20v(qMqdLq!@J zvAga%#1R18L+I@mduUPI2L;jOL9u2o@|#O}Mx?bGl3_0!Gjv88s``dUM`u_FUq0=x z>{33^rX?tJ@oMu<7$o`cClONyoAPuPBK5JvCF}qJp#{XJ{4$C-&EgbBdt=lL1aK|l zoSuBA?v?9oLz9bV-?dY!vF&Zc;B0rs@4A@@0rWB`|HLosq?%Y#!XnrMuYg-3_6BgC zFB{%_Ukte&y$PWBY(!@EkIA}FAr$l3>UCz;SMig|*1utwkStH%8SqeuOWQ{4#q2)j zXe}@p?>@G=hgK>KLgr3a`5M78i_it)gG_%vO0LxJSG0hIGU{~3%(6V7UxkKhCvtim zyntKB__C|i`_6z(p45Z<*A9C4>|<xp(!UJxf)sV8x#1CQhHjOjsMla4fjTso)!Qyw zN)*BAVLUL50};Px#6~(dhrkC$(BXF7<-FMnDyf1;OwrH;iT{rD_3qaoECz;ZqMO;n z6l$xzlPNre*|I?6SZ1zRq#7<bh8LTHP1IO?={~2AT-EOUpU&Ex2edncOF5xrTtKW^ zE_+d^0$mm?)YSL+<B!YC**_gFH&TAPG3{rYHHXuOMe7MaZ`K~}-HbloKa=v&-3*ZV zGf7{#1N;$J7N>$-vweB~YeV;P&O>TvrWVgQVfj^cc1N?E-PfjVn6QJuWn+)6_SYMN zQHQzfVkfxm9*?go`OMT)od^M=YLd4+X4u56nSi|QPtppJUNx<RvtRRql(Izy*ZrYe z8VyblJXM?#Hs%y>`oN(>!sMEZ&JlJj>M7iua;}q`yl&23oJ<Z>N0b;yLZonr$c0#2 zAZM91asU*scI1!qd{UhU!2||YMm_h-v+|3MK$?6%z?-@cwLJ)V;+5fpI72pClbHRp zEnn1RTa;Vf#!eq$<0aK@Ldrt^5IP&DU@l)6Fp8@iFCq;ONM~_<)<%*SLt^T0u<t>c zd$eIp(*-ttSTj-I0Gm1KFLsM}xS><CXUNB(w@P#yUwOd2cu*)2G;eXQ&n7s5oaf@< z>~H+ZbL_EWw_988{nbLW9;6rXNQ{^k0*=rL?1lFD<4xP$k6iAJg~eys_4bCNKB{3M zndzf57v+@@Y51;2W>-ub$+I|H3dbBycyby$@U+GZ=0_%m0;rWF0XY&%$&dFAq61P# z%%0Vm?+H3kI&^b+>TNrmrC`Bm8IJ0uyNerIYe{4OsJZxKgRWr$4!bIGgE1NPBP7EP zWE#ZfR6b44RorOT=^Q2Bjqs$&<x(5WHIIZu`_a=o@#-*=F;vUc571nT=hlNHoc?_H zXxFQLs4ND*t0x=%tS$jf&s11(f5B2UobBDCkli}5Xx!Uu)phO>S}r{e$%&ZWyU#E^ z-<)T1`}L&({i%_Tz3@}PU1{%9i9Rn=UB%{B9<Fg{1Mvwem1uR?Hlm>OnoT*|bIj6n z<Ine}gaO=+qxVFv*@V~MK3Dl?t@mUK_WW#NE}#iB6^d#M-7AaP0y(OI1#;0F2bC8) zv)A)hO6KMY$Fg<W+u}yH>0#T!$o+$2PW%zyMB6nwG=@|F8lKpBH>TUe8I_rCeuIyZ zBXeCb*%A8RUCGgbNCZQ#h!u}9rhp+lP6CpxC^ZR|&9sKWLb``Faj#6oQRB3o+l?1~ z3hNG{!YGi1H*tK0Q@EbcRot`HoFUhd>v=u#dF34XuP&rRF?l}3)IL@?zPRI?xe<Op zPDij~y_Lc}Gt^i~fX7mE%?1VR=m?903RsQ_vgYCQW-MA45C_DJavLM+)VaxuSZj-0 zw#0ood;9jg?&i`^>)BA?OcF4UMGB5JwxHHqW1cTnYu+y=3Fp%vaTEaBnn0ARz|te% z%_apEupOC3b;D(@xM{n^^6w$@s8%{IpUGMl?smdpYdBfAhka^bz~!JE-&8*)Z)=Sn zW6BJhagd7F6|)n$LCF!VWn^5{x`x|jKOr`gb7cK>-^X`j&oEx$D)M_z+=8wB(M=;F zivY_3^_fP)*xrp&8G5CvLgDJEDu85ENf^%BW0y<s=GGm2Xj=~)c=dL2kiz7N;Wi-h z=E<;+vT=KZTWR?Ed(U%_q@e#mie%;TOmCI$BdB<8%hmQ+G;-~b7|GNFebF3`tEnIz z+FA*?$FlYCjSuA9%{+D7&Lo9Lb<<f;Xo4)Yy3;+7(<70<3_dqSSg<m?0v1lM1?8{a zs7QWTa<o<-tDe1Q^5Gv{D<i`2Y6XQ>=KH2RaaXENk4uZtapA}5^p9$VH)a#|gh>;L z9_E@2>i7bMJmsd>;_V@N4y9~g*B7Z109scVF>dN(qyQEONVmJ@)2Sne<RTE^Dw#qQ z9bB81FG#=_-<xsi@uaUZo-o&;==%ioS_#CO3_KSQRK1TzK#bfce2o0AeIB1|KW?_g z7%Rs$T24(F$U(1fdhAUI8?b9_XdqEaY6qLVLlgZ=mq0!n>LBgz;ZhdmTwZid-1xG@ z!I$lvj!B)^t+O#fs}`YMdtzGuae-bj`cqG+02W_jXpo7y;RLGcGLCm{6}oz>pk4*F zd+VGsvubAK@!KyE<*`Sw&e{_LF65fsYyDJKJOayW^K+U%ue(Mh%(I?fzkZQs%+hqS z?qUKL3pTOjtfYSuw_f9XxM9I*U`@#iB23AT#6}OwKQ7=E3tsDoKAsT=pJ@z7X`J>m zds|?Uz7HBQ@cEsST3QtpopPS4KtvqRl_#;;8DV?c^?VmUbMY@TMy>DR<w5DJ=8c*a zLW;a<3ug7u-rPV;GdCUHdyvZ=a$<Ccxw|Nf$GUNPLyejpQ~2#?;2uq8TRtd$h}RYB zbm@!A=Lf&kU%!r9wpd9^avS_b0^ZUBgrk4=kmcPNyJxE3XBmZk-Pi$z(j|SWy7R^5 zbn5L4i-Trjj|UJA<#Z}AN@W+-G8rnq8bEg>j<lMeid9PV!QL_bsk6gVGLr;r4`*PF zu%(YpY+A?b<~j%$?FA@*P{KI#@9!={!KSv~i&eMwX|@rdLsAxuKzYUP=2vg8bI_E! z?vD(0HouzQTYTu9X9?o_z5VA+xBE1{)mAiBcE`jJX0=AkQGH%;YHXhuCE$V?E)WD* z#Pjw=p-kA(<C(tCw*?eVl5<%A%!gr1wM2qjBEdVqF2tE>af}d5%##d)H*~1D-Kf+& zw>j_cseX+|aH2v_4Y6Yi>7{-Np}}hn@JkV)N0}69=7a-T7T;D2hy>#H<@Fdfk_eI3 zM(OeiQP=u<;v_++`cdWz{U{r<R23#_zqt(l0?0)^m?&N9zx)YVACO$;6b%%prW(2( z%tMJv$NSm~5wSvZ-*mJe>=}6?G3E>TJ^y)YH~eBc=fwPZa|^jdO*Kn$7olVP4mh+$ zEadGu#fvl#lHEA)II6@%UVTkEqZa&|d72oLb0n`siB=MfF$em`6&ZE9A?|m%NgV8> z;wwH)wASYS>JUVXWQY;8V9xdx9Xk2GBD-*4X@l2}VBJZUc7h6}Cy8(pN@d){>qh{w zlYnt-4^gbP?@MXvQ7yz$wtQgmV6LqtBeavdVO-Qa$qB-hd2yF?$v^dW1(!Iku4AAC zh6QQ$+pDiM{S%G>7(gTC6A{o<b7W#NY(If@!+XVnl8>xEzo+ioAHnWVpTPuL>2SeH z3JHN>LN<3+9~y&npQUmP<`k8}X;d-Sv-fX;_f`Gg5o?@>DROT2`<tggzQn$3{DRQ# zCTM4<Sb8r(%rF+L%#GP_DufErbB<9ABD6?12ZJ|iQSmgfB8WnxYGL0bKabc@bD{W+ z0YbqQ^PBOpy%br<H$2hzw~)|p?O88F<G7p6#&T#O5#RBS=YA5nX)E|g(IVIb-u^A^ z-y1TkBs<zFnMC=Rcg8n%D1<ZRP~`_UD<!$aRWs54?>g`VNsG*Bp!c!)xDc_8c_d~o zgikj45o4lh`X?A*i$wC8>oo^Pe9}L%(2FaIjQfCtuM^SG^1SgGp9;a)253+;{qoMh zJGS~h+mrh+%%vS=^tWchS5wEBZ+Pwb!OA=jS5^(NqzLVacTtx~%vp_4zDVG?NaVCe zi=`#(zcEfMT~&IaU5w`@QPw2OcL6xneK~nZtT;4d2GB}-pk>z`sF1fE|H6Qltx0X1 z>LmwL+BWRw<+WOppO0d?ZI`i(7B!(C0G>YnhmxTjk`?IvZ+>*JY{y8;sYAX_0v~%l z`GNYT#Xl_OS`>0UrgIGgXM+!U7a+S|7pwG;O%SK|wrQQUJq@MQY|+5K{#e9-S(565 zHgO~=Jn0j0-Jwko#0o^1diPd<AQ}KxJh6?oE{nA8Mk>^wXcSw+?D`YFL~ja4FpOSt z@jC0VCT>Z#P-l?g9_J0%c6PRJ!$<YjT?eZ}W|#0nWC=-hkCx5<j_-fs4iAGd1Z=&! zzm50G4an8`RekwQb^b?u$`2Z}Pm22t1+theyX2Bp>C)5g$H32_YL+(mR4yDQFF*H) z8Ie6979C&mz63ota;#M(B`k_vQY+u_y6Q1rt{IgVg^}{>#2H2UQGcrMe$S=<F@>1f z?KieUP*^>AyA439OysAlvi5+@8>f}j;#a|}sMrTP(*M2VjbWCX+C5cSvWk_bL2B#q z&f;u<H~@ll$Du`w6SehQC7)^V{t4R8R%t<*nLa}GrTW~nIor71p$|WCJow7XeJ(wS zTt(K*`pg+A^A`XdKJ|zy;vf|3a4M}jTQku_t0;GFb+(=KrH#J7&QVoawZ;z?M=|1Z zXP?>yvInznI;paJ(c<#$jEH|SMiSeONwUETW-JJs9(B~mEF525uM;c;SOKLPFk`GU zPD`oUN-BS*sW2-Ag-4U=T^d2i-M~yGLwbT&OnTh$lb&aFoGU4)*bpBrVs9wP#2luI z3PSr8pzQcqk1vj(uW}GE*)9;>)>yA}Nb(=Hf7nwZO&#$$e#qvpMLMM0)n=(T<_eu8 zap8{ejpnMgGV&#sTLrG0BC^XBA(glZn`*cn*y7En`g~UFY@=9UZt_UWAgG=-Qo7_4 z3u{TUEkctlU%tCHN<xYVBzu@n3Y=Te7DSC`ByGc=g1?TCCi7z4TPsEMq6p#WvG{F! zcoocI#xCRS{sstam}j7QK;6G?#G1VSis86Wa4$c4Ru#t>Ne67owQl-+iK}AlT>*^n z<vICrX@8xqgkEGh)mbI_N*Wv5Wk84Op|PjXvjiC2ApgJ-U#yM_w?j_!R2qlYVhiRH z#R1i|!~z^P32x7xcTPi+e%7`(Q}Ip^rWQG#>nBvpF;g;c!WnSIL_V~}Z^ckQCg!h@ zgKEBDMU%rfxCE)fWqICFlYQpc&%wJwi|Z|IV_U08Y&y_0vu6|nNbGwtgIV>bY6&(3 z_utT5(b0C7^A|jd{Ud3={mi)@lJ{vk9>OPxO^$Z~8~4b6>@a&#A5+(U0Z9A%<2T2l zXf210=(@FlY5=ZY|Dl=S0<_o6gs$lBXFcipkJa$D^bY}8lSfC=e~fF^0x=?z4aRlU z3aYN+E{C>Ol?Z#cy}UO{$dd2`ZsLc^!8{8B<C`<5c=ahINnzJV@0LF0^-{e>`Ij?q zr<NQ3t7*sVCH<8Y`YUXDMll0&zUZFdN+yxL=!IgR^m;lwR`WxML`VwGr3M&I)F1$A zrA}S%8xjj7F}eCNyNO}n-G>H4T2}R~NcNI-fHqf1#vK9IG{D6LJvc4q@lKE)_lqD> zi?wE}*z?`>)AKLgPt+!pBef;WKXM5zOR97BP$*?~q<bEvSV2gh7psh6#nKu%a^;!o zG>j1kmyEFx^SAWEk&Pk(R1<m$0jFdYlj_DOzjP9n@Hc}YZTN<|ytx+)8%>-kf-Z;9 z1<G6CMEeo_lH1AGrYy^5r!s*VM#`T=?x{!7dNom(SgO(nJjdu+FgFbh;c^QzJv_U9 zPu`I!7b356U6=`YES7#&>2}|XdJHL>fkb^J$%2lndhodII@;{)tXvDAR}Mk5!rL~< z$5D0uhTM{K+P_*psO%R<BvCkO{~P^0O2CT8(pvW1Pj1@H5=Gd$KV#ijCnB9%A`Or8 zjg}YHW_1uD^mJR)pC*TI<4ZM>RrDoNfr&BkH?yU=sCvao^Iu$PRv+5z)@LOi)^N7L zR7PFR6iOkEI4c!B$nnw{!(x@C-hc4g{9OS>iSPAtDWxK^lugDdARw_&j<wK~yb-bW zd}D3uZ|o0_W;(Y!oQD%g*+g*MuC0bCuKU+NP)anpE3!YaL_E0TMm)6=aK_#6(RX)v z%g=Z_<4{*>LgfnXKbpY|$;oHbY$|=k)b9~+a>-fdPaF%pf*#`TDjDarl&WC)?Ou6w zD43W5${-kDFYS|qJeDhH!@9g&AtLg;XMBCfu85k__QD#0P~z5^Co1*DVcy-9Q5pEe zamJ-IA)OQZ7PR~hXlRz<reM)C=&tnVq;!~H;YC>ocQ&=Oht-pYl3z(D@!u%v9#wCZ z)b(=9Q>Uf(ZIZszvi6&Nywb+_e&gwGx=dRMj`4j=EiUlf0^kZ0dFmSd$qu&v*<N-M zbm~Rq`dDU^`X;9<r^JW;XIUoiDuGSelsz$@wq{8ttNYLBGQCzrCJOpQ6Ron#wluQ9 zH!N|!O5~>zvlVnQzi847uL+|usE_S<cop6A%v6av)D^ypw@Tf)`%_6Kt3H3oUX%e} z<UJxPSIfrF5(WwY%pE9zJ~PH9&r@^#&9ur;(3wRll0#+k@xEgKq@+dlqu|-(+Eaa9 z{{EaMH(IuO%6+JDSYSMU_4hf%ib8;&GEnAjQEbXX9yZ3pkk$HzlX9Z1Ta7lB$~Bqj zgHOiv9?n|1WJ^x;KJh}6vZ%AzgtLTMe_R!qTa<S;c5k4))4XO@D}<5bp1E4H+r}t@ z91>ST_L9okI3cwI{mSd}TvOob;<?4Sk~5XxDx}Cp?PQc8vSx{LCUKjB8=w5nynR2_ z+^<Q~4%Z>d+l*0586pXSU_E^fMG(GBenF}tY4TpAsw&l?*BQ;aaO7gA1241cb95-Z zI4ah^sTOLW^m{5RS7~wTiIBe{(ocTFX1c<3Ar>3(LKO!a_bfgB@83c3H1(pFXe35z znw|ZqaT)f6d*lL$49#FCtFSnPfwrnRVLajA*wmH9BDl~|rrt4D)-xp=X@S}v#};K& zX<J0aCA8W~F#d}sr;q_nc`LIMUosb@7YRc}W@JE`D`mW2%*Sfh3XIdNGYl%OG<2jn zS{TErm8K59w&#Iua4JC$ow+T<PdIqlndMLpcNNVx*>HVAB<i1@B^!LozFJ(gh=eQG zo$9TY?Q9*|S+iz(_JYn0?{D4Dc&;sgvMqoyMnw+zcojbc+wIPYi75ITARE8iZ6>nl z{x`=u^}_+{YJI(WODwgn5oOX}tAbw}QYhwgnn8T8+lW^=Eh!jd`|ZE<iq57oM`GTQ zO5|<a0J<<Q+e7oeJ$$=Y&eXWQzY0LxWd|NH=695RpTL)jtM0uEJbTbXhIB4>KZgIr z@O3NZRe8r6#FnF<xuVIW2ohJWa6Ec0KEl!dj)@~xyB@KBlYcKd?2HDL0uxpsAaRPf z?|2^H+E9L)ip>4Y#G=fKQqHj9{U1B*d&TQdr!myfTaYPOWONecD!kee6BNNpMAK-W zqg?N%>@GR?&^xnE`*tqXEb1cs65gh%`}!^4$lb0qC0P`r#~`D3znREB%__|1eX=G) zXenea_(!59YBDeqD$jgn^ylB)AZZNR2%E5|h@wJw5|V(2QrF9l1P3OF=$qCJ%uAX6 zJiUu%e_vhiI=%D*?{nwH_YKuJ^Yyi&jMZ~xW(}o?Jf$RVir|SBZULXy<J9obavho2 ziI0IZbISTQP+E9siib*~1rZ8)#C*QK8#&*MbL{mCq}2?y^XzHs_9)MoN=|dhj;dT< z>9BW~#eKWEdy`TyV*yD&2zS_#y6UtP+qT#fQVzv@y>UyM_3BpT(9kL5=Yv!6LUlb) z1g|5)s*s~3pNqMWM}CKtP*g$2D0%1$`Zzz<+6WYcO|ClZDk?go*(NMBc12qKO~`VQ zgSiRSS*bzAIDmRV?5}3_wWV6vvV+;pxR*si9Z^hHE;;7sl4Ft?1ydmyx)gSB^*543 zO+(y`kE^%bdIje#z6Kb4e5XRyXv`>k53<7_6tA!*-v8REH-JhdMN4Th7#)h%hJqu~ zU4NsZRnnafM;9vyu)s(+GElzZ=uHH#jKi+J<@>D9Z_#tR#vaCF2nLinSq>2u-|p4< z(($s<YlV#}n#NVxEDdx>u+V4NplFuv(!FDDEJc<g&6m0pMO+HfB->i+e#tH{)qJ+$ zh{fVZ3gU3pdGZSw`{QJ0E%ewoO^FJ`^sWEEKJu5-FysdggidS<Rkj@(WnaZ`b`Pg} z+P%*JDWL?u(BJOg{LT=+nP=)TYh9xg5uEvhX49Kfg!Y~S9&{4&(20UCuvHr&s6Ph6 z>YA0EIsr@D#m16fXV|_%7ldzB6JnORg;?{Fq`<q)kuK{3A$dQ{>DXOMS#3h*s&fAx zAm2>_hW3yRsM|T1*Ijkl?HzGsI2z{ZdjDyrRv7)M0fel%Aeuiod%~<YMS5g3L1x%| zNmjwTIrdBHe39!Qze1Qb@A2qTX}`I<BTi{^Y~Kk><3haU`IzUD&yx&{o;|cv@*#<= zWov8co?udjl=(yaI2fSnyU9=b)=`TR=V-<4jdo2$jfh}y!hio6rZuhKYCkm(3b~vx z5Ts@ER|lz}hoDbg#ng;{(~)RxYyn@X)R2~p(}o7p9sKx#L3rv`G8$RtR<<48?#7zk zv&N9r-kTGnZnd>3zA#7g>ak8P<pXcT6zVqj?r%c0LN}t~7f$e`CCEWgqz)w`umu$V zV%2_x{aG3R#`GO=z<5126_dh*X`IMjN*=F)EMe|nkgR5z2jK4=rOYt~Ny}^2Px=eS zWUEkb_WXHww}pAfDQ92O<$CJ4rWCtM>cv6}(n5jXl3Vo+5>4cQ;I|7P{sY(*dD%b4 ze78l>-HEZSypPpGU#}~H1R+#Oq2lFZDkHoJw<YFK9LY$Z)moAAo0xa3m3?GanP^Bk zgTAR?o31K#$7W5eFfFOC^+{=$d@YoA!!UCfoM0&!>G!n;$iH{#@p%7M2#V{Kz%U`7 z^H`Azxzjq(C)=P<E)?~@#Da||2o%bfUjhplCM<-RqpY%Hf1O=}O7X(Xc?*izmbs3I z&yOR*NPmV~YmLDF9xJlOq_&27?)v}sX5ktDLH%ND><hS$d#ljF<UqkG%+Gy*-U|f3 zZcMahuvEFyh*a1Fm6!QWpV;%i_}MzI9%W8?&|)@&Whz?xD;ek9bAMMDAotrkJ+w#D zhA$QinGfOW4y#0F&_0Q2SK-iUY-ARb$(`r^%`YHM7_4Z4g%-^M<0%i!p2!)Zj2NAx ziB<gpw2@HC3F$Kr0EhIJka~`2$ghUtxU|7DDXxfH+pXu?U)3gLZhQ-Tl`(e2giBV| zw!G3m=~zNmQh2U=L|Q=2i9!80p4CGOUtz!3Q(=_71%Q<kN&ZauWDHOWEDyMr>~_Pl z6GYPEQHllc`BL|buZo6Eiv1W-{x-`O(c!~{W=S@hL?n|Id@7Ri8RSYT`B7M?84t5i zW<vu&Ix?nDAwsCVA?4i^oE;|;S!_GSWIr&5H7`aT5w0)IPC|IRwmNt}-vnwlU#!aD zVt)WI$a^ERXFoH#1Bml~Uj$u0Byxt<CxtBPbf4upy<PV{-YdTSJuIV<jhZ-TCpr6( z)2ncqR&UmxUO4Yi+qs!XAqt}#oG@cNBBMLZ`c}^QkH>qAT{Y&iT-^D^R-Cy5(q^l& z&#CH9V#A)B-qhNplH=nAftSpkZ9n@WKDzW|pA4{pm61Dp>g9iEA5%mKG@kz36fBQG z5mR^RK66m0M&$`9^Oz>&#afOoTZ&ZEvG?m|2tLL)qMqj7jco=}_@!bK$_Jqqqb`$5 zE32UZ2mNucPb**1=LkFRQDpBgo2Pzq?;ibN6n&o}{B<wNd2@9ym@%e}Wv~K6@VUV& zzW--I#s_1?PU@0cY&h-6EJ9PjrJd>H5a&cVna3gBRy9_vSZd2_eX73bQfc0VsKX(? zGCocKu?r6T-ha3RrOX+vetPO21@Fha<A!Qg_<p0Oj2-MxK?(7*^CIzKCe3sqS1Pdt znE@uA#c*!qfO8D&cUQuzX(jaYLcfg4+$5YXceadwO}Noyk)x62_dB(sxEe0O%Afqc zIBIU6@A?-|wwuE;NN>dF7LR2a5)ESMvB{$n#$aaiO+K!>aSoHg=O_GiR}Aq~=Fp(6 z(qcKWfal$N-IaE2;E*Mi3NV1~Si(G^S>7I+?XIOrPo1rSVCk5Mm{=tZ_jeVG=4q5C z4~hn@G$GzMNV*ndwk`qZjU#2T3r*1Y$v3zVf^RT2Tne}1wu;ccZ^c9`d=U_!bQEDQ zO4L>I<EO4CM*Eb?w29o8oTT2n!Mhh*F`$aq4cY(5V-^%@ZS_k6LOKjBlE=+Z4bV|v zl}TI&lNX^kjHtG7g0KhFSMQW7>Zk|0rM+DPN!#JgF}<VlWv&KY+^u7kZSb%56P%#= z8ZhyCmYAC0{D^?FqR+PJUrws$n}!$vzL?{{T2TDZ@Uj0zd>q5wzLScgvpoK1w%ypy z0%I62M~`;)KaPs#_Tb>*(R!r$PAz>}gGR<}$p>=-Kk5pR13P0ZHa`|5hNmL}hjA$_ zp9}KV=V7o{_;G9Vq7Jq&Hm^cv_CdnL_}ddVSg*hr-;_^CW)up#N}Bd&PT6WhG=$Zz zhiGcbQKue1ePKW{Y8?u-L*Kt)tl+HsnOn4oChAIxG}zK<u2O838ou1mpscc7{fE8u z=_Ev`E*51osSisBLU&Z*T45ldxt+9bnh4CcIbRjb0@h)(-Ow+0{NDJulB#`mO7OHA z58epOb?QEAsd`r)lFLaLn<Xh^&R61AX5k;gld|>c%isX`f(W%z$V6e0GhFmh<l{R{ zW!5iz&~s$cYivf`G*lddc+ubAw$x}k$pag1B*z|9SL8E#kcMcVJd2*BXIIa$V=kmJ zqA7^JO6Hg9Fw7_{@yQTN<}cV4u2ITVO-mOE1!wNjy<hxRtEkJOnSJaq&Zf{Lrgi39 ztBKe>5Q*J&Glax_oo5Vepb5Pldb#6m+4xaKY$qL;&FCW<X35)T6ZX#37Fl1O+=PR* zvxH6dhRL75==Zz(Y;Dk(4;Zr+AApGqa1J;lJLvJQaJslqlhys}hDlj`>bHs=WAP$5 zFQLS~Rk|HLBlu0LL@K`|U*j=XW_1Mfria>J9cqz!NjMS|9WY^x%Qpdn({Ci+4$ka( zZ_&TmsJ_l@ImN654555d5#1E!HB<N%6J5p5AIkDz#CO)|Ewu^%YL%a|)l$ZvDSstp zg%WL;BZFybfHeQM`OzdC#q0@ZZpN)_4PV;}Sn(Zz^VI9=^!=dd->2ILuV>0;CxbK# z?&$z(kv}0qAZ+?z;#NfMz7_Hk$cvV{|Cww&l<%8%F92PFrDNN`^JG98HZ!E<b+Tqs zgWTfg3OJZG<`Oq75%&EnRVR}vfk9K&{ch(28HM2;^|j-tskx>gtT4<Q7EjZXUud6K zzPn_R@JgrPg?B%Y<VD|%i=r5_{9#~D1URtQo+`d-GSAq1f6bJ}k5h2VUtxAn!FH-X z2H)&<<dfh+_VAQ<Hvt%cv7mJGAj|AaqI>lY8P_iCV|Ixq+inT*rkZJA<;mtc9|yv~ zn+elF`G$0JDvY7{R|PsxCB9K*F&``q-$E+iB1&+{=O<$HWq;7FNfxzs5CVcN3qO&c z5fQnHpf<M$UScpS+hjPjabqVxgvERrT_qT8A%w8K6%|t`qV9Ik=@qUo|M!u#qdq7! z)=aVN1peb|Ah`2iUJ6zsD%eEI#ZCBQ&%F5B_GmXfChW^iJaOB&Nvb(3`o+|R%F4gU zJ0qPPYa;GMQ1>wV9G^El?Q4N});_yl!KPJ@+GHaTuspef6u%46Egd~CAhh{6^BZlR zlP^YmD|e~<P!Xst=abn1Dnk)mo@uC}8>D4fx=Z#LBJ~ykgz{qaBzwL4Pi`uZrdKBz zuF~cm<Qo&jUt#+uxtD%L^$0k_g+$VEZCJ15TkFZG&N5q)%aGL(N0!ZsjH$#jbO?lD z&dI8%263?H>g)E~V12}mDX<x0GK}_If}1}(_q(Sy?WX-wBYMJt777)LtB0Gr;+YZF z#(oI?T;-<senJx~2>5sFc1+UG+vM@b>(k^NWAm^8qJJcUMA-Oit#Dh<Xlv$!_6@rQ z_D^3@Z933TvI)1$wyIY;9Q`hS^kYlNd)g1D2ZnN1A-C#W-w}#SMT~AN`@hlru0sv6 zMENb<6O$2fn`16BQ?Kw|rjj1zKi<mAw9vb6jj++#+WewG<#uXd_T4`DOG~IVLyQm# zYY1PQr26y|o3@VM*yH%_Q`&%feKi&W7B@}ljRlE~&B!$Pp`%4>vw&ik{Y)1Xw8gt8 zMizMaP}5yeo^*S{-h>yzD&z>{2DvZp?AtkY&&(&`XwuUbjX1CE+0$7}1o=|y`D?(> z@Wlc5Kw2ntQ^Z&uI8@YV7;uG=kdfDmj{*ArH~M#?Ikk+8^Osr{TmYCAW3L(#=`FvY zQRutfuWq<3-^w0}xj@;QnS`@Mfs%r0^Ti<lnn(;a1q)VYEkXD6Bbrod`;RLKUy-GZ z3yA>^ed6dfp^)&U?&-zq9ncS5mB}G?X>%Vq>`UF`C21E4Lu%9p4$l`eBU)OoUB_a- zw0_8)-|mO5-G+Z20NH=H9d~v6ZdcX2Oc+wqfy>RDgy*ldg?Gt5-<)BW_e<I8bhvjr z9cBGfor_P`J?)0qT{eawb%{!)y(uJ2qvY1~i~aurJwU?09jwKa>ZJ*zSYrsLz<IRD z_0=tFJGh)kIxOo@Y1YA90DxIBSmj-r(^hq%Kq>ctS;qQB_G+)}XbR^a*8q^+(yYOb zu0&hdS%ANA9Kq5Yf~7gg?h;h54Gw%Qe#!vscOlzzQ2kE)9_eUFu||?>HJIu8l?~md zKtu(ZhO|25HZz+~(ERZiKN%P7*aEOZzi&l++>Ltiix$Y4NHZeik|<@g3`C<8?2J<h z;jW9dt0de`Snx;1Bfa`$5E{@3fUt}4g<H3;t$^cE`6=SbEWz-c|HmPpk#a|}BRUFt za&VSO@F16kmt_;BBIyaRj@<qhFpoHAC8K*pC*J0fnG^uTSN}-Ah!?xeFb$aj44X-0 zxBTmr^?pi*P=3ES5@JV4^kk{@3=|ncbr*EqNP*y*07hD0$v$rvyQSP1zncl8>hEQC zuAM*m1><+$@DhL-LBR2MN$%P>&D^PNiaUtG`rg3`B*u_VPq%7agabIMbRLHuhzVxG z>{1g)WD9<vdo~9l5Oe^i>2E!mfa7tOIZ6`Ou;MRq1Eai@iJ(|lW8#8gOPPpDDjAD1 zV6xosrA(Kw)YI9@*`n@XDEJ$ZmJzX@k{XuOeX=r26|knh2v$mGEs{w>B2K!fQzq<8 zFd2>oNJs;6;mX>Mf&s%S((h@byES-|O{u>y2&fqFdx_YI{J<tgCVv8%$OgDL8_<M) zk$Z22x%qbHLn#0uu6y!Xxb&hefO=3T$x+kv*k}XrA!<_~;X;M|On!(0oQb&Xo}(Eo zR>L21*FgodN#PWLV{>)XFoGbQ*2GKb&hrSJO#psS0mq3F4ydbH(d#(imq(M?xFE$m z0u(({B!3PUmdY38b}(l;gO!0pj&)dV1+8^cn1*f-NV02EfPCw~coH@zBOQ?R32`9x z)jKMpiVE0ZrLV*4#2kMQlzN{uI4oaQ&)F|uC2?@(f&>`5Euh~4Ikor;P)er3AX7nG z2pB-7@C~W(Y4W==VItP=&o5{oNc)buM&&iX^i+K9i+l8E^2P!5Od?ocgGXaE<idgY z??vw~+$p3c!KFH*hahJv=T0A<X`o3B_>$o=z>fa2A)|6tPSoyv(?wHY1ZV%veP2R| ztDrIhc|o61atgwzWua4`VCeIJ$V*we`f@X3SCH3{D&8xIq-0%|xo#uz@vQ;Qb_67e zPH;|7C>n*3jiBVVl!n0IsHu)h3x~-jQ@Vf(1E}62RM3YCdIh=$r}Iw=#7$1QL<L!a z(dP^MR#RF94m#lWH0EcH>nUs81ymQ{4xl;!xACl}Z^Iee#x#=?t>ksw1#=Hhtp?$U z^yg&-a#!gzbu))H4IVzoiRx+ew$!O%vEyJK4Fr<mOCXR8I1B+XS-C1FXdbCcNzvc# z|LtoU@aHbzIPIGABBou6uJY`FQKDBAG~LPmT<B($u@0pBl@8B3irWhwSRBQM(GFbF z)tdysR}Si)1QGDy+-kFkOdr*VVZ;fsWVs-eOtnJ+yP#t4D-VQO^fh0+lC}er9H%UD zGK2k2u4*>LBnsRXE{el1bDvoPeh1{58kycAAOkEdECOoD`VcbdTuyzw{H5msQqM|> z00ro1fZ;aW5d}GGm;5V`w>p`@63=FdwgBX`pj5*29+__G(66W?kO?~!bp|UMt$^bM z&0(D9dG0^<czy?W;Bs6@ln!Oab5lglwJxOMsm8>NT*-3^83yPVLunmAVFfKKMrQ$N z&jGz9M%YVomB<0^sc**g+SS-PzKAz|`$9bZwEei@jE8Xg<UAJr8ou!GX}EgxLELj> zwPq2Kz5y7GBRWAdIro%xNjP^G%cr{JUd+a2;T-xFO~@(%i`0x+PPY{t1Q-R6rF4<r z0#H{#&;z6{iC=2>0A92{xQr*Zf%}+PbvpV-qWXg+fZJeh>)+u;2(bXKxdgvGWm5cI z2zMd@ixg=10QW&oJw7fBVBgVE-2)aL0+k#GZwz3dUIE7m2UO_Lwm-jXcJ~|4d!Y(S zDq-yzBvjn2I5p}(<VZqV2QjEmgT&1ewo=GCG5|Aolrg=JF?$G5A*^9a1jo_$ZxLJZ zvHs=YMZF)c06w*6J3jruc3ix68b5XZy|`}kKD^;8&&5LE>cO$*k0!lP$r43jrOw*= z#&Sq8;Mf#U5w?}<GN6dq1B&9`**>HN&lds)GJv6SfWqCm#K&Vs&<_v>^Kcwtg{h)h zv3(FJ9Zf+9@FJKO0kxnvo&&2{IQ7GDe2Jhx38%IWNw1D*3Y>3r5v`4oa7^n2{U;wf zGy-OYF1ZMm=7U5)a}|Llyb3r@oO65+03hjHmS$dRX5@i={!x*;LAjKT!O;SH^xLCg z9jTUs0HzNx4(wFuF6ySZjtkW4fN&GQ5DsvJ#_&nLNc+qtj1sc;znBPj99@Guk3AjF zJ>wy~;EX-^;I6gW7dOovIA#^eaOG4|o3&HSh3GewWL+3$HUcSUeM2q=51?q#7qAOp zIKaq6TS|K`u+sB$gE=_DNdrf`*n4p5YXJCQUI2Ij;CX;&0W|}#?pNy84?zY3PJN>h zQSF(tz6Om*SQR2+%wRllP`fIU9QaaS(_9y5tp$i3u7KkN?c6`V;}HOm0dLPTf|%l} zbQm@pg0)*cGBQ0mD1B}c+pOWyv5v@kZQz016c&%`tBLCoTvtz)j{(C>V-pVWZ~hJh zrZ|nvlrbHy5mxku@WlsD$4D(OvrtU-rR9!L1QIrw6p1+I_g2*ZtDx0jl0uFW@W|YH z4Z!ad>K{V`1_p#<3&6q--zq5)2D7MpZd&8uz%2G2M7;skpEpTl^BOSJG?<U+d9hM} zCBboz!fCEHfMbD13>@Z`ly1mmzVZ9_j~F)x=qLv@5u&voaBD80;*d`T94BlNr>laC z5C)7i%`JKxEYy&>3d^w$3&YZ^L%(R|5aWSc6=bMchU-PHi2)DCfQAb=4q*-r?3Al@ zqK0tw<aW2AS%dU-@)VKID*$1s?|~a4r4kd7<&jVcK;(ghmxYhAZs+D&uT1}pEU;vz zZ8I2D9|cFzloIw)3>sOVvM5YDNGP>>m=YoMj{^-a<EjL@4+nZ6>OeSt?4Cd!2lEj? zErBJ0rGSdSqj8#vyo7mi6n!xFbw@EtU@#WDF7_X*gB;zj)n|fYVAWaC@#9_v9FNu% zw%He(s7Q>goQ{YA5=vZ%vUNZOY=nkn9oYzrb$@z4<H6hY!f;*fnz$atnucS5BLWTK z0=xUGpjd&N22dZ@EJI1aaluYQj~op9fC|8FU4x39+<~YSVw#l^Q3fEgs_}`6P*(du zrv~=h>EgefND7eG(68++q_g>!1&(wKoQqP1vthQ9B(bO+q2HeY*fZ}HH6{*>YoSB5 zBo+ZR5AY0F9Rs)nmINgQR4Blq0Gv%Aaslq;La^G^>Bm|Jo4lO+_Kq4CQvjshQ3kN# zd;v&;B3i6~<5Ae%Z#}=Jj;QsD3!3);i6TmAV2J`GgnU0<F3A=xetZblfi&>UA7eat zJIA1*nMUNI*c&CR!(klgjsoO@Yon&8XEeqj0tW&1TDsaY=;*F<QD-STQ!S&;GUu5` zS!Z)902E%f3%XIAojN$^qO8i0Y9k=Go=#2Y^2kdW)8IjFOd-q2_Z|fptY&okzBqv< zax;1+^x6j00+{Cjp3$>ZBteA&N;;Zxgami&Yz;K_+!aK_nj%-Fr(YxWXSwUa5uFnw zG<ZlRcnx5~dBWteV6Fm=M`0svtZFNW!fsy_5oIz%d#vaxXY`EH()i*D_i5I#Og5>7 zF+mU5b1Q?$0EK73!`yc)*Ce^Ghet1P4XCwDSkr2;Z~I<G?_h5vRkW3W2W5UPazV=2 z1}y^;Jdk-Lti$e#BtUK*<h7u>b0Eh98@H<%EOH^P0=ER^fB_yVRb4~f(Rd*z6WjU# zjREqIj-+57P#v9gCWQeDa~lv;NN`$b0_a*D(ao?XSWy+#1JH}f(d~Oij4nhbAB?c= z3IWG4+51e>6>vNX>qD&5E$fP>&=)n*$&F|%(nT_^N>-yokq}z6<}%Mcd=EoO4HT}I zxF@ccXBw`{u_&rv?*e^cF$}#W`U7Pqy4bJHCazF%_8Dh1juHSFDo&ftsv`l>TBWl! zWe5n@OmYvwy?Kb5&RamgZ6Yv5V37w7E(q5S1sHJwqRJ$a>A&rX!%3>VnW4hm2f5n; zF$x5`O_@D`m81LJhDO&2HE1x#;nY{fjDzElt_2+2H*QP^EE!S~?sy;qeu|0ZInQwP zZs-`=kqS5-O+c1;m9H`v*VF>1crmb*c^P8{S;A;0LYS+V&3P&o>#!0+a;(Gr{^Be! ze=GtF+f9MxrWhb`Ing-`c&u(npl27Y5VFH7IrA9hl18%3qeRnSTAqL`OFFoieK2bw zH|&9BsOPdaCiL79e@P3Y;K9I=4bSE@j55~*D64Ntk1}9*&cjw)LDPJPC0I>?YR?7t zZUrkx1BVnEIHU#)6>2x7HnAOC;HD&6i2)60;D99Te7K2rmq4yb;U~uFml7s7BrPK( zxd$rXcr*bOR+G7@ZE?mZ#YJgFxlGpJwPib&=KyBV#g~eO(jyPE0gMDR5*H=WI3lLu zSYcRlfODHOz^nxvHVC8u!4gALJ4rFLq<5Uk(QX-1F*K5JqGTt@R_53=CUt};YJvk* z>XHl&&lWsZ1Q^H*Vw_1P6OMvIZLm~nCdLGi2T{8YDtM16hY==<k^zo@;Eitu(6*+& z1?h}Y^bFhRf~960-`#20h9W=^8m_`qe+*z5>rdVFH{5-+0**&v#5`^ThdoT4%`&0* z9I>Xp>zQEj>xt9NdQzTDK@}}g3F{~kO8p+NG#9xXY0z*pEW@=TD#Fno2MOScvBMY< zKHADlL>jvmB(8qVu!;;wa4y%L>?ko#Ea__iaHJ}a8E|Sq(A9slF=lf7^#Ucg2KE=t zJXl+JEn*WuZVm<)g=0~Y&w*ThOXT*rj)YJI6*wsd#!L|8f}B-gIu|n7qX9#~xG52E z5JYVioJL)XsP=r>C=`pxMKQpkv^aY6-7Q@vAoRZc#&h;z{VHkn7JwNK5ur)|dsM(d zG?EMjE@l8lX#;UCA?Fi8b2^6tqA7_e3g=Ric$FK}X6`Rcr*kxlKqFxs8Zd0oAOSQf z#7o!Qj}IT&5zjVFO}r+{#YnM{jJ8oCh;l0Y^H||Vp30G1(;vt+<rb0S&Hz*xCyH?q zix|i_Pz)GFS*Qj2NAf!gqs=e@4NLe26A*>IYga-oJQ#H&*SdxQ4h{*;b(>A0T-HtT zb8ZTA2OM@VJ3oOtA8G)e0x{t^7tP_vE<c*E4gKkM<0P}kUq23}mWnF})ALs&%|iij z*q&0)F=>xkM^Qh~%-SqWETbYZkkTFi0Za3o(li`54;rqOzd;dbM8nNZa_CR2--Day zH{hY}L>w=Q*i$OsozitDF`y8Yh@itpR#wh7@;;9+O@dWEYC@z(Z>q2$v$U*-M{y0y zK)|pPf4HFW&%~$?={sq!EpmZtO)x@;=7o^{CrsW3CAT2~a8aKc)2Zl?NR`oBY3n+f ztgVI7ka5#p8=w?HFype*m++<+J*=gb^s(7l0mq{>CApr8s6;(!%r~v9{-gOalQioX zbkU@2qy?GD^;F=pP!iqgwJ9TlB95Fa2O2~P>!=Bdw`{)!zq|8V%m#Ixq8xYaib~`u zld)!j1ZP-B>N8~o)2!RIB5{<51d;4>#+8wNX+d0`T>!<Ev<0lA3@|dlvT7`Z^hH|j zG48IzBLMf|)HguMQ7FF~14cC4r?qhvh%zop3?6-x!(sY-Ku?rYejPX7-2{kn`RQ%^ z<*WC@qlA!IEc>nsI36|QU^k_26pnMW&kc@geri-Km4F51SxBj1NSqIClJ1;G09?n) z1~qIW`PqO*#4gBkQz+>r!UU{uwDD)>e+U2V-m7rjZ&;dz>F#A5V6uUvaOWwbg;H_o zb;aKFasy}zUc**L5VvmfJtPKp3d?~-o`rCM2Eqf&?Df8_nG7KNA{S}Wzc!L|`>LOX zVDVnvYDB?Qw-Q?GYB~+wo@O6~V54L&n38TLFbnjS9NfIKiRWItfVaH-2x<=JKm!1z zq}watc(fXaAXh1daCweElS-j<96?#&gspk7**X@WfL&ONt*EC*RwxbnR(ZT#z~*pL zlOh--C}A3u29U^IiFzMyZ7tzlmwX$4y7O}ES)51#180~A*<oU`BQ6CWs0cVPL?mfh z;7BtIvR)Utjy3?0+W_|$OTZ#gs<|Yyln1&o1*{|U+I5p*8aUY2fJRKpc@J)DGrGaf zRLA+&dJn=~G;IkZ;P8_ow|LGh8Nps}x82vmuRm`VFTZwCA3s_6B`$7!)jhlL>Iyg> zrLUs1>l_bXRUuxMI<JtlnpC7k>d1A7XuO@v!DS`!G&l@fD3n^@p~57r>Nsi85azxR zrfQW8a#<`RRoF_23$(W0!#gki4*ve3bMfy7wpuwHoEP;n{WoIw21)2Tj}cjL87@3a zB`kx%spssT9oYsy<alO1s|;A6BtsMhKvDt@0{|nkjZ+!MVf{IBnsF;ZZ*+A$q&`a2 zYHjN3raspAgJfn!6x|bXTgYgR%B7nEoOjJ)y1#7xtG|V)v<$NXj^RyLe+rkrzzQ!b zEWkA2QB-fnC_V?{8Wv=N6DWFv!7hs#3U4KJah%wtK?4bBAPpL}Tw#Mobn6L)Uq5>% zp1kG=-n;939PEq~cPc9a6I+L|1yqYg(J}(ZNIk&ms}`|wqJxR157$wUOqlO^I6Oas z2ak<msplcpzL=NOK&-ZYIUOSt7ccGOk;(a31~42)K+5EAZCMk5gW{FzcumtPuno7> z04WzLlz;+STe}cmCo?k8guq#(v=WY{(?>sd9V`b41pYQoLVFyJN8o_L!AOh0v?N73 ztZGFzq6KWX1&m`Wb}k2J*hj&+oomc9gv%lv)1b!z91*!EdP7w2Vl#|vz$2d|nkv$} zaAFp(KK%jw!=AG--LI!ylC*}wC9X;O=UfyuF1u%(w{8yCop~5nZ99r>YnC8f20772 z`c~-r3Z)2p4vpi+UF-3syEfzCT&qMR%{KLklEJvJR;8@z50_NWa%t#R+t2^pQ}Fj6 z_@=%T5#yXqeN7e$cGamjOuN7(0BtzUamd+O2$wb6h&s=6T5OKo5_`mF#5R}-vLo{D zNiLz6Z>)ghv9SPz`@?zn5ptDM3POlX8Ahaw#r_H>R{<MXA~(j#pUaQNWdUrk;21oF z(8X>sXhe%V0}x3Bl?$s=0l*=~vo;*U)7BrsR}O8&r}k~dzV>KZSI8!P6#_~zN1mwn z@!Ycy;DtN(<Fu)EqP;{D4Wp~4(zP2TbacoOz>ckLoOi}P{L-`b;>Not@xgDLjR%g5 z6}mF^&!RpG)mupCSY%Vt<8}Z%WY;j{dY;y5E`IZMPsWEo@@;gx0k*93G2(I|;~>X_ z@RaE>sylyqBMtPA5=OV1??nk~H!N+$0*fNnA={4jYD!5S`)=2{sREA2LgE1WLg20o z|M_13)}K1}2rJqcGr~*?xRNHR%J6@!Z4j8O2#ZPs31ykaN?jJ#i%2*GVKa@$MOj8H zpn|EDWwTkB0gn`(xA_s=u=x>u<={qqdf!$&usDjO7YF5qN-Bw_5OD75dA#VH{kZ<j zgQ$5b5$!}l3J4(<lafdfgJlQ~C4^JQ^_PdZ?!r6q$!|^K@4k8tx`9)iAj1rDJUFc> zsQ!{J$4|#aV-`Wef#WtH`|V6a<RTp;ud!_1I*!SS5YNBiZ2Zfo?!m=p^fYMLm5}DO zZgau_#*)s_P_uAb3f@?V`kDYrii8g4*hcm?862*B0o5xHf15^b-`(`OdzUKUcr08M zrY^a-7XXBdz0BB{>TDj#Akm~jP8XtaMg)v2Y74rM5ACvKekXECBCrqw5R`XOvVtg; z1tut+SCR#fXz0|lHXXv47vOUTHsjXgQwWvF`*C(C)4a)=W*<-8as<yk^B}gbT8tw) zEG<`$6W0&c6gmA`f)oG=204K608t|dA;IAigs9^cPw(Q2GrxzoeDp%>Ki(<{+v@wG zHUbs&O@tyJnsw^qT1-_^gGVV~6r{fcIQy(IK+WMLFWQ2C`P4nQ?2Mk}rliB`PIJVB zSr-8{2k<Psu_cUc?}DYseGIlz)zhrQ(mE6nE;(^N9E$%m81x@FN$qhs$&EXWChr6Q z$HPNP;TnN7Yls)MnMss7u#`{LP%2_3=`ifjE(_9$VU93tgCY>&w9r|0nJNF!IawkL z9#JXF)oZ75_1bAHh8}J`z6$rwO<?cR2&Q{=bfp7NFeYjNHjZ|2_S7OSSvQNbS1-h_ zNHnWOH>e;pW`dKB@SKFONhEqT=}@^&W@AA16~Ycfcn+MV0yzQB+{pM}KYt5;_rsT9 z_n|T51(xK)IrR~pXchXY20t;oU=@#Z9K<e)^pqXvGypY&r(E5_NK4?#GrFbvhBsOV z)bW^YfM?*29@V=bMMn3fT-Isgq9pDMD?l!YxE7`CR3N6$RlxDs*^<|!y@qk@A!PD0 z;zm1(yJ9C)QflO($s{#Y+z!*O)MZI^#c&wHEUZ`%rKEN>)&wxXEy+-hA`r{69Xp&n z<_38BhNF1;#-s7#j?&mcoaBiJYxXSCQJtuf7qf9k*aQmV$Msv0GR<ZJ#5pL!Bh5M- zg6#Cbir|ipV``G{m#?@TzxshIade>$<f1O-=m-~1V-yZEWN!)5@5Bd01wA-o!~h2m zWEVxs?}g_%0MDZ40k3|^2v*mnPQ54sjxh$*v3LXmc-l;7YXFM!iL<tQVrd<0P2gh& z!bJxxxiBPd-e~WZ-`sio$qF2gyJ_`8(!Aq__nV#D<<v~`D8Nj`VpEf%50nZs$JNr< ztik7L#xh{!<G@jmX0szGM4Uc1?9ThDoLr>dH?Hi=|4q*9OZqjOF5HXzm_)*+{aErE zNb9jELsFV(K+>in-poYD_;(TN23O%C!=DeK0)lWogp2b~y*^g0YTz}`c);opYPSw# ztCgVsfKGh`POTMxIAQ8u>?ATy&9BWIWE()3aq)!#SWSb~as1*-<H7TY=R!xD1iXnh zpbml6L4Xfy&`?6NSySAmtYSB1mD_XF=qG-iNFG}d$@e9#@7|2%WQkAXB(}#L;|N{4 z=fc0)vj_kx5cj$@M&J_!=_V+GG8A4V=TKDin&<{v>xj-(JCk&1m!&}OATn8_WV8*7 zZN!livqKz^Zc^?PFb~cPuLa{!GL4n9iEJ4jqij}T4WG7|hRr@G^Y;Xq&^0Ie2U*`K zr3>}Ifa--%{Sf2`00GeVaqadVsA$q#iE!%FnsB_j^-#8mtt76T(LA<o5m+-hqaz_8 ztX(g0^o|0TfdOxVK+Yksnl~(i042=aUJVlYC^K1-j5Px|dfWiFjDVx;0_pO{E8utx z?ZW?k@8RhF{KDdWHE$&BNVqJ>G<(&Hj08bReFRmA+|1alP->cor-jrqmxasais*HY zYiN8<o1}O=BbgoyERz$AoC0?t10FfBu<#+bkCX{F<@6ropV>vV*&ad0MX|vt(my~+ zwK1&vnmD)3PHc<NnE(;dlmT@trIX%}VG~2WhrW5z<pH1`(MU}MZ$hO?WNfRg>H=yp zt}TJmc`8s*KMvbfDT}IP+!sYqZPIRCnZCii_q5;Hbu->j0mpxeUHgdx-P?Y8$4*wb zD7q}FkRe>F0L}o1aMPKgwuq_#kObJxG%@G$gS(vG;kujytavdw1QjH!mlT`iF-xxz zX0eLl!J{nVf-L)>H1p7<?MSl^qhnA8JYq12qn3m)1eDY+nW*V04e|4oF4~K>?>#VO z^$yL2CM-PQTsS#ekzsE!?e7)7S4uL)Q?5Fq8|c6wv;dqsLoVeHa&1kZyPii$Td7T0 zq1ZfD6|xNj9O0Zv{3@?8{P4-vxaXt-4gjdtaSJmpiq?b*b%cb8<3>|t2B#DB$**8s z2+L(rV314$&T=kGS%_APd-)J+lvzs9(Fc~$pdljgFd^HB^(YHG#4_M9AY2O!a9u26 zILblEGLUG|s}Sf;1Kk-$ZyxB*0o?^4@EL&*grNzix<GRh7+FUc-v~@>C5*03fauNx zBY4;6x27T@g;U`QyPfODRoFKXm*v4C`dJ9Z)2=zDC$ZTl`N#yqxmqrAU0)aK$ceJp zf)X*~P$3m`3!selL^;+W=R{iHN+%Vv=i);+$?b6u9D?|}UY&kXS~&+wCFSbbi<)8` zCgt2vcFk6zelyWUS-_&+E6_WLkV*KWMCSnOXoJ+9%mnl#G2K_hgc21cUC5LL9<hF4 zRmTpBxGd+oSnR{rK3FnTPk&iVK<6l9>5y)T7zVm^KoDrq2!jMPB8E3NE%2@5lelN+ zBo3m9W{a_D%Ew&C#evzHj?%aT*aDZakZAOR2O?qRdgKDKx$4I&E^K3JLM8bZ<_mHf ztfMN{0<NtM0f%C6V54nB;&Rk$H0PdVg=<i1K9mLyD$f{Y+;rMocI~Qw<3HOZzFlwX zj$2X1sSE+Pme30OoFq2w9S689wkyA4y~75NC|N3VWzhmGL(~XiPlE@=49Nh9NC1RQ z$TZu#16DE_M@4bMauY<FZ4|jKY<fy?$a*BI&yYQa>;X~{LdgkO1o}3#03!%sip8`A z5cnQe<J(w^HYbX2rwtr$Hxq?cnfWj%(J3-OQQYK*O4&u8eK2l##sX9*GW`+&@;HvZ zMaQnTG1O5IlOi5Zi;OgmsPh*m?VwAhQksu!UfTz_OT`gb07U9<aSGVu9yoSv+jY;a zopWc@46PEb7V2c6^$HSJhp^1lHiqT0L@ogc%0y<e2Q{mAWG5>Yg2#YFjVQ6oZ4ms9 zF0>-H0EDfwdj)9mH|b5B6&|%)!Nt8rvLdP-{Zs&?`5Q_vpiq)w5kL?kz8?la=mTNE z8bm@ssbmq}g9&_rH(&u?YVmSG2X&n&mM?7{3>0bi#qk;l;?7~ku1Y*=l7JhYv1ow9 zigHE!5~hz`W3vQ@!T<&(Ag&O%43q_~O2RlY$zai#gV_OzUyP&vociYqIDQC5Z-ct) zXYmav{5Tumf?0!yQ!|S&%$!V0N8=nT8bEQlwzww+(K1upN|@(B@PG!7T8q$IB9PQ& z_Yr{DjeL*+4NyS@1ewNO1Ewe@jc7FMP!f=#7CJ*|fFji2V+<MrCm<3gOl}q){#|Xv z9*kNsUlcE5BLI=(Btxl(0tz78)1%n6Ndrjq@YNT0ux^b8gItp{iu#6X^VUdE)8uJH zfDr+R%{GF9lK`1U?3uK4HA7Z9Gg4tU#r(JD{LP+z1sp#tbLh*pCVo5!v@jQoq=t1U zw*2@4mnExhDi9oS!d5JHvSP6`>#o=*87JV;7$<ZVfUuu5{z=*hrt4d*<{7C-APPVu zdnM#3f5c?fDn*bXAf*Nj878+f#Wpww5~&hF^LuIvUsmhjXWPP)&i;fWv}R)UdrW0~ zE|Yh`rJ!P%1cdJ6Q2-Y94=;W00#rcx=I_y4S{hAbTc|^=R&5F5Xo?X@LrSHo$Nf$+ zoeQJMY!M5Qa{y$%xQ)SGt_APKDPkuDaMVctM`J{wKdqw`rm_$+Fj@zt=f|>5*+rUB z*m{SE7)+7gu@dkoD~PlDgb*=CCJEgoptl5F?-G~eNA)hz`!TZZHwrF%IhGOm=}Hl# z1Z2cCtSt-^(2#~%#E)6s<>%PLr{o4a#H}>TAe|*jj+-G~R*rp1xqJGd0-&%##N3i_ zbT#e(_A%B{c+Pcgs8Gb^2&qLIQtYab3)HqM$WR!7HDF-?z!pYTkeQfQ;I5?DM;p2Y zX$D};%?HnV+k;0d;P@fhxgWg$!P{ST?#@}s=Lt5U&Vcp7bqOSNf|spLL>CCfI-(y} zesaVtDI>O7qUVW#hyB{jWCKmXwOH63C3tmUaYjclgowbyl<P+|FcE;1xI@v^PH{Su zJKAi}NP$Nf-Le6WG++S0ZE6CaQ|r*@bVUL=j!p-+W7=FkGOy6>C`sH(HTAIogh=F% zQ^wVN@iUiDcVQSu{%WuMggw-@NkEW}*jk{G2&0B^1O$YlaF@%<0_2R<S2TUh`gIk) z1E-L=C(Dj{HGIaa;XE1j;2<sBMXZBEO*c5sJ5S=Rc3wwxOjUfH<U-A2P%&IFc<|sx zK~Xj-7_LW{S`V}rfu&i%=cF`01`p%13<3_eSw_q@tW9RYgVW%V0gMH9@$YIK?o*=~ z&BCw@5=eC%FVi^6Kw=1>u%joeLP)<?{N9!*`ikc*Litwjf{Zw-x(VZ`pRFJRt8-UM z->^z+g1mNCI77<ztY%RXhUE{P_CFukUjfIDz?9^FX^qjF=4VVhJ0ps!5KvBZ5lr$W zvWsk3y(8trXUg4|EyK@t4=Z?`J<xh&9B7T{;nj<?Nq-E=WMk%VBh#KDD&pfTXegcW zsZ_!^^y6v3=)%FxauVNGQ%1|MK9+D|w}c1k6=eXCjbow|D6%dL%W$Ab%3wV8@*cLW zmym&o8x3VeN!b?Q0B|=jXxy*~Ti=Ll@hBc-uY5}K$VwwC*6#KJ)yWI)l7ap)+Kf}o z=w#VZ2I%%zocq8d58@2BWv&js_A7)SI5j{8QR}|s>J3V+;6kJmx1!Q_U985*uq1QP zg<Sw<0Rt7?&xU6y`5P%A75VPx(RsKur(KwS2dQphMESLvox`kB?h40^j-)CE3jjFG zb^Jh$<2E^-0}Oybjsq%dYsMuHWB{P3nQ<Xd6lf!%-$gR8IwhyZ_JRL?440hi7j}@3 zf$@6+{d)-`&rxtUaxU{TTUpEs;J&Uo8R%(Qo0<mHk^J9&@VJL{exUlo*?jdsCv{jA z<M`nr9N+EoN9s*_a}ek*R8hMFr5Gg5=tQG{D(H5kS-nHRH1>(+B1cgf5JX%=XN7Mm z+sJ2`9FI)f^%V196pULii<E$|DZPb0usElIq_bG;0kBnypK?_!=E0l>3kAX>T*v*Y zg?rT~j&iLK35bM_nAlmU16&d=0F329VlZeZ8N_)YTvFEYr1Sf@_>2GuC=OjmDfD)t zyIKOAwG3yCu2xQI6DeWTunt9fs$)2SZ6FE7>M$(lqHFV^gGZ)ate*%(UCO5b_+$kf zKMK|%`JYC|>CMwe8RQbk(W%n}Kn6O^+a4ppncNN%)&TfuL91jWMl?_yNHW4Buwg1F zieoHWO`GbNUNBx#zdSvk)~x}n*6Zzo`5NAP%M`}KJ~lW3)`$?3LSl?0JXUch_sEUV zEg%SOIGAS-$JxVC_Ha<u@rY``=fN#lNa*o%%v{bYP{05NY8_>lZKN_tSxFPt1(XUg zXy6MG@M|ww0$ZRFMN}GV>gdh%;}mhVM5tfFx?+{Hm8}#{Y>R*d%8Y{zl7m@TRugS~ z6H&2sSpxp)z6t!)+FAXe;BA%0@guT}K6d}kJ6?It%{W3&)_MS&(q~Rm%HtvLoYWRX z*pXozww9sU1tpWmkSzEj@F?w(krh#_0oPPo$VNHvh)&eACVaf^Ni%rkO>6O;o=EZ} z061W{#BhxmC_xBWZ{=Pnm#;+Om_?yh_PeE;2TE&HxL|yO42RE+dd4MvT(~6!`yx)w zXCerfP#>$IeaMf$dod2sxNabvj)qt{7*=l~sEo#e@~8>};8{*3eK8TfGt)wEiQug> z=Mz)oR00lhvh6Sty?=CEGYp-B!B)2~bJdNgC#RcaSxu)BLDBMeb#o?4Jsy|tGm2{! zP@=S#t)bNOoIZ(}^P(FAXN?DV=TnbisxFg6D`qXcDS@^WSdtF9QXnwx?s&+5vFIa2 zdgqejjdb^}>}H2?QemFtF=l1vswDTboxliWqBhH0-DAA&g^NjNuYmOC6PlAXT`v*{ zurI(p0ryPO_swgPP5-_!n>|Nb`BoP+t7BO979qehoV->6$9)Iyx@|R{wQ3PTpmS;z z(?SItKSEnQKKjwI3CyX`9>_#7FeEd7C}}yT(g46E+j8K+LxM*sfN;U{RvO|U@Hl-e zz+YW=4C`C6AhC)I7ContGxMIQg_;EbH2^5GF<<NPG(ePtM6RScIvK@q1o-E#Z)4NA z1p9h{N1Iy{sMQ5zS3k$T)o(V?KdTH-L|}oawP1ALM>JbHZkL$7&mq8ztbxh^N2myI zzkLlhI04pq0sIi~LxK|Au7Kl5Xq*4;2c5cy4>X&m?Sd1DfE2S16))ffJmS8iT+BMM zk%}Vl-~r%~?H9@g>ls<Vv1&?e@L)!I!J8j9wL-l6x??zV+%HEzE}JZ$&ZuPL9;Des z@-r80Dh~?D#u<Q6%j{DTBU}D;=WYz~Gf!!!dWa$fND)RRJ+KeR4qI#_y}@D?MVkr; z(oe)udsCqS9dn;Uf|^b5-#<J!h1-ra@a(CDq=--gPK}OL!0{tCsrbDUlPpyLtD}`2 zWne2oiqg+zfWQu8+KgeP;E{4gRtg?j*F}}HkJWXFcRlqeuG!EXtThZ`3)W-IHV`B~ z7rP?MxGj9*O|6s)pmL%@+FCWnAH8%QWYWRehaMUq03(yG5j7dItxAD`GcE}S1mzQ? zxs8|!n+C-8hV148XeXcf8^=fRvEAd?Pz!K=vm1j3xj@k7y%li$i0#r(?0%><N}u#< z8u`hw+FP0{c$BvgyCC5F`L5FLOBs0JhYcQC*F~k-N7GSw>ywV*7tfo6D^6gs4q__< zfIul}fJH*7&_q6T1SAam@y{#Y9R;N%h=3QK+ru-?$cv<cfVaGG0b9oPsDqdt1cX}4 zf$I_2XRr^19ZUBxn-)6_NSICeq_qs&RS8W`jc|x<Ara8_bn1BL9c#b<o;k4)*8qhf z;5r-}>&x90a6Aso0sY0~6j=HOI4toq7BbC(i^Nh@ux3<d0T+RXECG)q!4xOxwv@4t zcphnneGq_GZePHApLQ6RuIc@!e%A>w1W+o3lz{;b2`T$==u|0rqJlT-F7Rj1p2zQB zw}^Argz@7<4qV5<8=td?>(1!Mpb>4JM`(=-%hg~6OPta^B5>d$kO<Q*4+5S16>A#i zv6QY6y?#lbEHi<FKe}}tdLd!T4RJ|x3BF_ml0h!u5q7@dKTeHu`javoYuouBzwg#N zUw-a?%pAw_RjBD82RgzjIO(|&hf<-7%s3mSG`%~b>iATGn03LG1$8Zjq1ux4^um4~ zWxYfPg>3C6q@+dDcRcwh9$2X1=EF_gGgHSy3m)eB&SM4|Hk07g`1PWRYK)a8B#+k_ zzjkE@*KYB_3h0Lp9H#~%fvKj%8=o<QE4THure!r)_8NrIDFF`BZ3%)lmricWN<QgC zFnu6ZzaaFQeIK6z3HXZew%ga?SVw=~PaBzol*%NAG1iR%QsO3@V&<OAJFi&1ZPhCA zyu(L8UQ=gW>IT4e{X9bn($p%RZcp*TkK^`3fQMQRJj%c#+f}RxKrB~>vJ;+6xo$3D z%o<s6*0_(e#{Kwr+o8ZCZ5M|+E*@F(@Zf@noilYzcUJ}|%xZ<N=aQk<#dhtME}na4 z8&BPuXf|g}g}828ALp#`@!}mz7;R|Hf=ug3Ccvo!qpK+%E*0l;NI-VE2$ysD7pYEO z5&MfGD+50yK<00}d*^E0JFDlxOgRBAYAhf$AT%*Sr~#0yzI3Vq2c7I6;Eta-=U?~l zr58(>xhtVw`GV5LVk9VeOjtE7R=*CrGBp~slzKjXj??c=i60()tM=TIT>V7$v7$Pc zqSsgnVq_O{71U=$S7phBnZCeW-$AGdN4gGfe58eM9c-;Ye+Y((cmROw)`vc=p0TZi z-+#&syo^p0b*xW~v83d_TL;EBQQXwY{;vB=z~WIJxad*lS~8MU^MUF-Lo6tKV(&Qq zcGs%-;TMk{!9~p_I0THg1h#JyP!gSbx4!PuFWq@cg=5{5ANuGmt5@?24<3Z@nxwmN zM+|~36~~Mz&?ilj)@f&v@(D5zW(^u~<|^m2Oz~K_E`!)d<~^8!BOMp-yL$@XIowR~ zq^X9)+NQ*@A=n3zfaBC-O#_e7IFM^Lck!lcXW$U$v(fE2PGn}{7!Yxr!1#J|SfzD1 z&FA(POlmm|;i?o3kPZj9C((D(W!yf~!2jKyfW|tfk8|8bgc5M;gwr>e*(wU3J=H)% zYm6tkz3<-RM_+%@>eKr@TowdY@mhAVMnBuM0BN_yP9e{|DmM*~lGo&VTv|ijG7CDl zKSd{KL3_aBT9{<!LCSqGPmOvC&)D3-b(=bnOgOOQA!I@?6zGI2)x`-`(n-169?^h| zO*JI0+SJ3|c@Gz_>*H-tpUyE2z`EK~ev#K(!1$(2(O@JN8<%78Ffy}Rla1p!xk$~? zjegd1bBhz^;;&T!a|;4*{J{ovt?%%8&BGX@0Io~8V4I6tGzm}f@4o;3<9jMs<#A{~ zc*(h&WWc-j@5iXyAjm#aW$(i7aS?UfqNLxa?Y59r4nN3kNy_zEU;RW<j&GOdXPXVD zx|d^xt_w2H4RT+Qf1ge$@Qs5leC5Ch?m1o`00E3J^dW=;((TG2r9Y&rk}k<;x{McZ zU&5=;U%;Q=yc&zXz&ox#hL)?+U~1S#)Q~Cb+O?*Dk+odlmL;zZI>7vaVf?R*))C!T zJaFDC0HDiw^LN+b*5l1YlW~^tg2o{<8-z>FbkT4qYHzUnn$PauK{&amww;=;3V<vA zb=SdLU%cbb$0yXEFD&XRS!GRaOLYY^IUb^bc|>jrQQB>h1#U|+=Scs)Q2D09yqsvd zoa<um9$N#Vv-2q<_az#+fP&eU1hia*=WkuY^S3VHc;CUzhnx7`ktXgs-at1@@4Vx< zU}i`gg_p4?Wn2)jV|5?bZ|&e&+u9hdDcpFVg+KytfBI3hoJ>}1q+^H4ijF5%I)u^n zjQUt6Xv5jh5A<dU%WAo~L0#74%Xwl9d}7ad3N&0OT<adg=m_DGGhBE?ajqN`zw=ZC zjZ=nk0Ko3&ZLiM?=k7-i@OC}BHGP$i8vDe8C=Jg%$YLHjQ8d-~htrHhWc14d)^I}X zqwIA^`$x+$km#w9347)}?3}G*&s+_A7d<?(<f0vr3B{^Je=vPOqoqe+tZON3olrPy zQewwy9~ZCfVWOU_;QfmpZa-Sb3(nHQVd1RaFp7>O&wEW^bbZp<KIH;tnj9$w%sfa# zC$ADXJ(*1bEC>JcgU3Dm=1m(As^kM)?M~w*o9D4(v(8+NKtm}!R69C)?v+3IK~Mq5 z<J`Xcf^(kN>Coq=k1`yObXKXgz-^ah81P6%Q^d-_BaXCC33y;Y)TPKR8RWh^1^|*h zBNhXJnVy4%K%f^2_)34Cn!{*$jLEvhnx=&3aPfOBccw+_))a`@UDKMYfckj;yD0j+ z1fV+$bdC>qIumiaKoN+0b!2;~L>4N->%Xxc4=pCmk2chNy!G6J*f2(^tb9GLgMQ)K z|G4i%I7N+4wGZ^2=bih}W5@8yelI=SQJesH<hH2QV5To9<undXx&+by-Qz^q2Ueng z3;`e*0z{Sr0$TozDogE1fd&EI2+*7&(~z3e-%Z))WngZf6~-O%gpWB<RPj2%yZMKm zlla)4@%XW;)^_phXC23+kT%QE)zyl=_oe^1@5yglUNNaOj>n62h4Whzlkz!74`CHs zE^s!y3hRDK^Wb!nSjr5Qj)q=~=&TaSbNWYuB!<X_04c9;5a(Vpy!L?t)j#_Sakw+l zKq9K1M+{gl36jy8TmT{kpDq6((t1ysdqU6&UG)il%WTG7P{DwuDACIT+TI-E*|5AE zXi&ay=rXl+xOb+Gj~mcf-H`Z|vu1JaR6AGyrx=h50ZH+iQyDZ)NyY&HH$D5jpKW*4 z|2H?o=BiCO*CNL}00@UHePRIfpn~7c%zI532B(@H597L&vX5ch7YxBbQh#SS7E<QU zl%7FU{xe65m31;#Z47W5MbV)m=0z!2P$^*XAQy|GlmS3{ACv`N14?WZ1HXCG2JBz* z@Zv3tc;#vHs6)j-VS|QJ1f}rbpZ3N3-iA}$=v4h&-?)CqXXa+ri+jCjky1+N%nGIn z5LjR_06bFe59L9@);-7!Rw{B?3bReiw2zgzFBn1tDFl%Ga|1zSSRjcOqFJbJQ@bU? z%Y!Awo#2rMlLDQiJEOy}%l%y{n77LeU6(SzKEHnyw;XBU7tfr-hFXy8D4zli$u}OJ z+;#mc{u#0Yj+4}Ge&&ViJ7I9w%rvi6YGvS&N>3-978))1RK#VFXqwSIU~~^#G^NLa zeVizOtb~Our*{kj5(_W@z-?&Ihyyby2f|e3geb?PWRKCES^f+!oNuE{)$B6i*Zp%Y zHr0bvH~HKg8zxAJgXrPPr{8$rAv^($PUR2xwWsfRQLoScIzOw3%v7|9K|rJ#f>;(j zqIP>Ij=I>jE=Yqy)^)L22O(ecvLg2Jp8+7lg2*5svD^XSYVCrYV#ZV!DM=;EW%iX7 z(3{TmRW1^Fi>BZiS1DJM66efVJw)xX69p`T^{}h14C(r3etqY6@dPpFRQ_-u+B?1b z7tUBaMWAZ}pDjs{?10Na<)0{;fwFR}Ext%oN>faovl(xpC>@>37RfM|hD@nAamkLL zU?sDaSjP4W&M!<rgQ!!}8b&m-Gya=p&5Vk^vs`MqetmD&u$Yn$E~wzMM~h#URKQ9G zB<rEmvS7q!hGm$Ec`EeP&pzuLyS|7gkh!P&2Mk8SH`bMVt?$#5LSI9G0z-gO<@8Y- zK@p91GiS0i5tpd2jR*9bh>G1<qyjCmIL9K&Ce{5y>}=8~J2e-WDCqN%Ti;v|RpAn5 zP%x#D%6K}ZLBfv8=+BhN-w-;}(`FS)rd<*)s2rvuR#3vM7(jm!h%?|h&oXR1BR92D z0;-?PosEtU6q{C&R0tS0(_p2CeM<?J0sq#szPbD3c!C){5kB9?t~%%RF~av3=XtdT z2eM9D%8!MNMN&>Q2{TPTb~gm26TeDa7b?&*vcf4+Zi{Z%GmQI^(+4o5OG4$;h-eUH zqQrd}GHH#>PEw{kKKgD--Ke7H0Qems?3N3&sfm>ZY)JJvVOlEkOmr5h-OySU&E-wI zC+Pcl^9?uN_jWu1jh+CXivZBST(#p_p5)IiEh-nthG@%sbHrK*qQ@v%@CBjXvgk`; z5?H)Y)2ZrFWFZ@k`C$UcKyAhPg9IL+d6=|x0SJ%sGk44Ow*)kT9uSoDXcoc<u3V~f zf&$j<|B%e#$ubP)v|AGQYmP=eDnN!{zmK=vaMOM7z$sdb@<h})iYh(mV~<Qf{K`$M z=RH^4p!JR+Rld>?!t%NYbH13WxJ?AXE=?=EU}kj*ER)blE4)gSX(2^=$e{a7)~3HJ z;U(@A$H{2f`7-72%g`a$uvfglLRc<G*>@-nXrusxiW|Y_X7W-zlQ#&U+HLh;U+|q> zfAs`m?N12cph4jA(L=|7@QRJA*EuAv2t!_0#*D92RQ6arn*kuojYuteuW0c^Awntu z5DWqkq!;qC`ByXme0YT%)c%`1U<a+QGoG=;>CbC5b5CZtW|~1quL;`FtrD^l3;_;t z!AB(PeNA#$V8&)-0K;}m;!gK$xg|_7fCPQ?7uxEVUi$sre~-e%{|Y!xInXfLBkk#{ zuU@yRb(sKdm#H%9i~?7Z^b~84)<m?VQj`WRx<O|aWjX<I0e$BIi}_JAkbx1F5|CI1 zNXW51+pvtq`hAv!plyXst;n!u8Js%Q9NlIIW(QGdH4PY?0gaTa60r;eCcQ2nKQ^yk z_R8Du|6GauTrrMQ6*K^dL%kk?kUoFWMDrQMv`MAvK`3+ePxsL%T~H|@fz$6(GFXiV z08F9#lEJlHIF<(k6fNVHEDItl0TMExu?#>^LI2NK#0&u0gB6-WVHAer@0ttuD;{US z1(W;=K_ksFlmwO*_}*Q|Ixl?9eGlC+gq~Ib$H^*$mVrjJ-Ph?zSJLNqj5VH1j5YBv zCnPx@1J8p&m1mT1-NFNONag}zF!dZ|04>8nsAR@9TTFn5WFdn<WLTGmERm8|$T*;Z zLiUncmiQZpMQSS5gmUfvq)GHD0E|3nP%^nMa!mr@_?-Hef800os=t2Z@X-}syei;0 z8O6{6z~KN8cXv8|4bB(N9c?@h3X}P>u&5lA@@uKEDwJ}*cp3Yk3{XUQ4%xZVJODso zGm#wdSfEs}P)`^{ir7e*o>Bl7x&1LI;Ifant~AN$ja-nT-0|X#B_M-5Sg1lVlyZV- zyUqOrGr?Pa?(RKryRXv;uw2^96AV0@QwTJ$9Mi~vhjUk_(-nj-o!c6DE&&tym1iwf z(}yspWAGpyae&Y{AcQjbHI&}3k~N=7?#v{7QkhFqQ0JD@QHsE$bO(yvkSqh?&@6Ig z<-dqDo8ls%PzCP~?OsTKhzXa9QuBe8(jyyZXVvbTjxPQ5n;zKr#btQc6V{wl05pbn zQ6jbx0S5r*o_4n@rTp@FBO}igz$8a~Gg9KG{b!0-i@hkhY&VOtHjA=Bc^Lq~003DA z*H#1~T=0AukSyndSdXV%2br*ofw76QF`8LV$AFMs@}Avv`8(yJDV-%&dyj@6`tv>e ze&b(f<_=+~OGK%pOcijPf^5UycJ+FlS*5;wL389f7g$xuEUZ7nQ541a6<nev<j*Q9 zzH(<4HI=-ExrEh305V{lLY9RL)IfO%_rwAq<^o1g!Zu>iP#7GSC;|y8|2~*CV8~J- zl;SPRJp3MTY+CNU@o@VMf4Fb&ho_|shk(Ih0Hp$slT_O%VjG1F<l$bg|FGZx@}<qu zD?Orhh2d2mo_(Y>QnIv)=n9)DcH?q@$VOpG0R)r-v7%^8;n{y8*T<|FY2{#~?!$5| zN?6DsHj(<=S>Q1)N9gM`@D#JK03$bSTmfMK%*=5A-XpyaylwBkKlt*({N92+7z7;4 z#h<7Gj+4(#$!@e9`#2H=;jN49uUt7YdQP3hmTX;Y5p!T`<x!?Zo^Y%yU-ko-bafs8 z7()RFXU||N6mhA<9Vrre2c~ii8=_q{!xX8C*RlafS*DU*)=~n2pDA~b*oCPpVY?@& z0gU-sR=W=eU;g01V{iK4^pUSGsW^_qC7)mz#_@#7?Ks(iW00G&9FP>cEsHGqs|yR? zynJM2YSi)0rBVgZUi6xMa7Ghh1vpLtt%eT&MM7Yd0zC|XaKXam!q-Gm2r6__imsVl zu+X`{g&N2hFhD3BR=z06ugK{n3h)CB0y(hY;%JHi3>-hEaPM6A!*6+H?|b(9{RK;A zRRz1FmVv$}q`Pve0f#664^aRhP8o0ja3olKWpVxoXVn|+)o$&ws4wv#_Q56LT*W%1 z7!7ht&7d`D)={rh4It(3$-F#}aN#x50uj!;O<cmgIg=S$q-78f1`1wA3E*K}7VEnU zL%{b5N@kda<%ZZ>zYomMFlMI}dR+<0tUk4H{IB=<{ydUlkVU|u1^~sdz(EyoJbv{J z3}6|{v5rzO`F4Bp0T1H-t@Xy04pF_3eUx0vZ5KwF?8lgWsO;!LGS8FIKFR?k6&2yM zKElg+-ZAhPfj0#vWMyG4zd}+qZAELJF*reM8KzPc4T=CGloZ$dI06V|5=F5`71dqo zHx!KbA7(6#p}}AbYV4y&8e7?7$d<BZ4`J*}#xj-)W8e2NMp2e5A&vdPBNH*gLnvFt z4B6L+l;rFA{TILc;=Z`c`P_TX=bU@beRD%*(~~MigjKo1qo6i>CP@tA=;+_8D`sl$ zS6eQ(wcWtgoJ|8(8%YkSvke+L)R6t~Vewj0<Z0*1$Ght564re9{l*yslU1eLk~Q@b zE^4msfOve8U-9>^P(!kuyOgGILQ1(E+U_uy87k+2l-Y{imz7#t(0wsQsd3DSDk?u2 zTsA=RdN0K4QkdT;=2P8IqTtMt9B5&t4-Sdqgs0CgB*GG@JsOM028g52pFz5C*C(re z#<>#ZKVk~80a~yljx1)CMvDLz;VLK&0v`3a7|i-v&EQ7&>Aw{}pN!UDGmv)Jf#fug z8G@w;eVi25u^-@4LHDv>uzutq<SO}2U{K%%lu5h|Ljo%mT=K>{?2L@P4m?sNOa<1h zTD2|Qe0%#uGin5VNS=!YRLYu&{!m{e4aeIkUh^pVQm&Faz9Y{y0)34Ofn9X8jf))Y zRrICd9<Rn=zP))}@hRfebJ_F0fkM^X+@{^320-Nl*nzK}u=wq~Fm*5Cz9sX8GF>)q zfG#y%sDM9|he5Y~75EfblYhWtY*oqE0R?$av!*<cf!>`$OXl$eK>IR$7SfIKM-nJ8 z@gQ*C3yaM%fFC)HscKhqubn3}MZ>doe6xP|VLW)1&5aCtgNHw53(xc(@>0qSwTbJu zcoO)jK}}QndWvc56kT+Nn$RMs(G?2eRGiQU>^k(ket){I&UJl{d$rx4p+F5Rs~_U+ zS%ppSly2OqyE_$R;NZItZngKQ4XFJ%`DgEOhF0Wb8})hKqP2CswXrP23r#E4Z@)}t z95cuX0S4Tg-vBzgbWDOjdwHey%(m+xeM6f~v!G@0=bI6dB1wp@L~#xm#7?T|dHu@k z(CHM9RS_U@>gaTG+`htn|FO`UuwPh}kqZFl46nu1S(my>D5sc`windpBsosJi#~Zx zld=>2ow&}t`!B!kU9T_tB|LIKS%)4IT#bQ)Nd<_q^wt7lfpNSF#5)<C`ljuNT^06p zDYwy@5ZwbcM#@wp#q+>C?WjKVLXVs|m4_HnoIahBpJJ~Nch&VWxB9yTHAPjf8GW?~ zex9`p0|`O<qAPpGGMum&&~tB|tqz1zd<5IcY<x>|CpD7h@Mv!Uq}f5?|B-Mxgh9QL zyfva-v~@wRm>6{h2(L125BHkuUOIpA^XYcIMHiDF7QWoT9MR?~EL}d*kV_1{)~oRk z<hYs-o%Nu(c=_Yh@1DmkTCFc9Rl4sV2xJ_hXc(|m{!FB4-ZRc#sCQc#E;;YIrP1@_ zlGy{4o=6|>ODRP~{(&ECdQ3o>j%S}3-(waa<uXC{HuF)ExD|PUXT^oo5!~BUe|hT( zrO63yrQ|Uvv(P%%h#)@jS2YKT+IG=9nlbuAYtIzCnvc$KneImlctEppEW*-k8}PTN zB6n)9W553kzV^#wheZwVI0E3$9{eG0+@4h6^z^fl{6Zuvyt-9Ms(1|Zycf4XYl=%x z<&W-Iljj5Kvih-hTyzh9Z2iC^FtBLfnbxNzLZ&+YF<fuAY9<_nu*Y^zPvZg)tCP0M zmFxCEaO!Z`dbG#s=cGUL->}#02{|m8vd%E3Bm}bPQk}*`^V#$=+kg{)E6aw5vrx@} zW&u1IuYEqwRyoZfx;%8VZOUbv1^|ZoLN|@CG?CdAc;_h)91*W~1)*qHjfL_lg0}+P zr`eXK+1>k`(moRVgj0hwUn^_Ho)>XScs+jSpkE}#xJ6UWf7m(rWs;S0ObcH6LR|0r z9CA|SNmq3A?!f$)*|p6fLZ6X#dAdK$TZqbwdO|cQ9mR>srNQZqu=dMw4h3+-s}Eb0 zUy<$i)3*+me;PAg0%nV~_41p@wEcY$QdzfZGypUV?KkwH-r*(?+ofLQuvlu$jR)ls z6<+>=(d6txIV)I37Yx%z<B!$xN+JpJ2Cm~dIGI7;chWsFtRDPsxW%!G(MbBy*y!QD z*lJLTD4VXm^?I2lH87W>qE{kP^#&!&B_vCjP-GKuKkD7rnvK?v>z-FZq8vz7P6?U{ zs>=AS>|1tjOX_XEf`P!i_@=Ue3{2mGPa)li<>VG$iG(zR@nOP}86jB_!i|Q>=f?iS z+eg*8`)#Cfd+VaA=1GcU*IX%2n_ESRydg5Orvp`mz(LBxWZC|^ajFQ?;m;$(1$UE~ zzBYRJZUob+>c3dj2Ka(?x}5hOJi^NbVKI_-wq%sg$&H%i(!@%Y2lodw?<whJq;3Z* zJOTOOcm!N<Ll*i!4+@7cy{_<mk%a5PUB|D{>c;`sS_(q%4wtc`8%snR_8w(|l}udd zD%`tJAen~V9zyc-#J%hLcar3pW$J`~@G{CHFBuVQQCF6n;3m-ebT^Tit}UwmE{1*F z-q1%@+-zD&wMDr4AJcubv`sx@4?sn^BBBP!8;0!<OT$)d1eUvhe>ofnvN$sY0D5*G z+$6{H&JeZfC}5UCTZQbckn9Zw2v7zqCQm4`@~wM#c=R>jb4o~EUxaZrg$`?%=l3yt zF<>WK!>@nS&)<zOlH>1u+w$vzY&6U$25VL!yCQzM)J^sPmKoYp*jb=9f4sNw+4%TT zbcb$tcr(GANLNN-zn`<SkFFWbbPOFC1b-=LTutLd#=ZRj6E6%ZYFJ4(b_#N7!ha(! zW?o|{b?Vn~odQ+J=^OFN*dMXDO!jyg6+W>LtCR~vk{rzgQKZG=lkBmzzlOi}^c{aX z>D<|D2{<_%Uy!rfPK2ZqWu>F)iS8Pu+KZN~nJ!eUBtQYean@hlXT*6-24S{E9P8;g zgXlVHw%;1&7A>kohLh&a2X(W<lwHk(lG%*}4c+#yC%VJDwIt%WEH@L;fO`rLVst)v zYL4%p-`e`wxxIzo{u$-DrmbA$A#b>=k<&q3Lj0tsfDu({ILP>Q!ov5xvecQSAT1JB z%+67QL*m6V8}+%PiGKYnDs6KexR)FLUgvafu!ma@TgA4&BEvDgqTyoNT!Z>IjNmu9 zec?n=`(%;k-#3ZI^JaD0J?Ha1_)5W9hrPW?!07q8l2iIt@!``ov;zu|v;@}^Y#NXX znsGKKy|-#emsY{m#YaMhFeHveQc6u6pknt=Vax1nt$zO%l_qPgfc%a60I*ITNMgFX zy(>JxK)&_C!Asxk0X1t-<#>!EyNY>tBcyg<#Zw}Jf5stWb4Gp>V$XuPr0?Y)<9d`E zAy2&36s2;#wx`@6c6V2^`*a{OYNzCtWj6pu0wymJTvbn8vu{~6q=Quwc}#|=Sn}5f z7sB)57D15QixrbsQ&SFOaMhjf_K`Hi)TddP#P$Y$=jZC@Z%;(BgUy>FX4jms`<0K| zyax}YHe%mH<2%IDhweb6R3|ai*ei^`YPaM?r+mx`uO@-h%^KEkZif*!L-T#Y3JYc} z<m8On(bB!`;tEAGQ#;0Og`JXVQL1L}uMdb!eU$A1be}KZP&hM?hCFQG0lb^+sskCa z#u$zHAHD`si(&US2CX-W6xR=eD}}@Mfl<*v1eRB#DQ^`($Vt_?)rgGc<;yLzmH7Hj z??L=ji!iO0yHtu@S(JXRxZhZ?Tf*|v5&ipj8;@TxJ3QyaYH8W7g3umJ;I!wVy6o{5 zdQ(pR2M53ZjCJ#B!Na=SRd806TR)#FH?<m5&YZ~y9H7X$sUijW&5A^wo~8aSVtkzP zdo|T|JBcyQK-#KE#7PRRI#5+>Cv7`hoIX+J4knG&wmSkvC)3qNh|=-9$@ItB6mdc; zk>gq6laqyO`~o|Rd)qedHs8d4INO@#+#vK)wrMGpG%)%S{m7IlyHP0=!DE=n#Mcn} zX{l9PT%4|>@<}5gsCdQL`0tUUYABX7+1fZc@zz)T^P=vy`K})$_dTP@4(&-SP%8?h z0LZ5tpRMXwP@nH5z~^j9{YLgi>gAAK5PzVgi>yl!CiGuS$&F4maSC2Z=aK<S`?`%B zLAFT2=A)#@bhh8aSr(nufV0+VFbsjwnR<CjBEq&(Vc4?6W%(Tue^V%gOO{PI4&w$# z+i|&(fM;CqD~Uky*`6W&&6?vPBsq~ypjec^L5N=AV{Lj26Gtn=kaYL=UrdQEf_i;& z|GoElWIBYmyC*}IWn(@o#s!0wq`ih{kg%e?xApJJpiq#fHT}TDcIGs&%7q`upfcw@ zTR(WNy9R<z%}xs=_jTuTO0Py)I-4`mWLPBPK-0Vt!qV(;OJ@E!eg+co225~Mr3;31 zr(6AB%+1qC64N<r3f-nhiUdsKy}mpYLo?ELpI%AAt6nOpCM=$NV>q}y0e-4(PATC9 zrMrBN;bno>0VMu&mj4>Dp{$z1;9d#GZ?ojdb-K~jm@?+f!3$W7oecVYxyGMI%%kV` z;m_#vwRQj57Z-K4;urtTdgFTucb4C{PPTS7vvbe4vi^UdypK<rUJ7>(rk5kT0B3Sj L&qTLg$2s<Y?eZ9-
index bd77310f8ddb52be3a4ad886487f1cd099fb499c..b45a3400f794ea6e44c9291cebb55b599abe7b48 GIT binary patch literal 12083 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 aub7fg7V~o<b+}0Xjf#S%e1q)Q$o~Tv_)$p!
index 06cef2920eb49e0cac0518aca9fcac924ecb1cfc..461961e8d4760ead749ad27290ed1e3fbaf023c9 GIT binary patch literal 37693 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 Wnnb;~9P&2)t&wWFs#S2Ci2nhMQI3HC
index efe2eedef90361c6c17830303c0c4f75e4c53f74..aad81f40d066b9cd6387a800df7029fadc57f220 GIT binary patch literal 11763 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
--- a/browser/components/customizableui/CustomizableUI.jsm +++ b/browser/components/customizableui/CustomizableUI.jsm @@ -1069,17 +1069,17 @@ var CustomizableUIInternal = { node.overflowable.uninit(); node.overflowable = null; } areaNodes.delete(node); } } } - for (let [,widget] of gPalette) { + for (let [, widget] of gPalette) { widget.instances.delete(document); this.notifyListeners("onWidgetInstanceRemoved", widget.id, document); } for (let [area, areaMap] of gPendingBuildAreas) { let toDelete = []; for (let [areaNode, ] of areaMap) { if (areaNode.ownerDocument == document) { @@ -2540,17 +2540,17 @@ var CustomizableUIInternal = { // Reset placements to make restoring default placements possible. gPlacements = new Map(); gDirtyAreaCache = new Set(); gSeenWidgets = new Set(); // Clear the saved state to ensure that defaults will be used. gSavedState = null; // Restore the state for each area to its defaults - for (let [areaId,] of gAreas) { + for (let [areaId, ] of gAreas) { this.restoreStateForArea(areaId); } }, _resetExtraToolbars: function(aFilter = null) { let firstWindow = true; // Only need to unregister and persist once for (let [win, ] of gBuildWindows) { let toolbox = win.gNavToolbox; @@ -2660,17 +2660,17 @@ var CustomizableUIInternal = { if (gBuildWindows.size == 0) { // We don't have any build windows to look at, so just assume for now // that its removable. return true; } if (!widgetNode) { // Pick any of the build windows to look at. - let [window,] = [...gBuildWindows][0]; + let [window, ] = [...gBuildWindows][0]; [, widgetNode] = this.getWidgetNode(widgetId, window); } // If we don't have a node, we assume it's removable. This can happen because // getWidgetProvider returns PROVIDER_XUL by default, but this will also happen // for API-provided widgets which have been destroyed. if (!widgetNode) { return true; } @@ -2894,17 +2894,17 @@ this.CustomizableUI = { /** * An iteratable property of windows managed by CustomizableUI. * Note that this can *only* be used as an iterator. ie: * for (let window of CustomizableUI.windows) { ... } */ windows: { *[Symbol.iterator]() { - for (let [window,] of gBuildWindows) + for (let [window, ] of gBuildWindows) yield window; } }, /** * Add a listener object that will get fired for various events regarding * customization. * @@ -3766,17 +3766,17 @@ function WidgetGroupWrapper(aWidget) { this.__defineGetter__(propertyName, () => aWidget[propertyName]); } this.__defineGetter__("provider", () => CustomizableUI.PROVIDER_API); this.__defineSetter__("disabled", function(aValue) { aValue = !!aValue; aWidget.disabled = aValue; - for (let [,instance] of aWidget.instances) { + for (let [, instance] of aWidget.instances) { instance.disabled = aValue; } }); this.forWindow = function WidgetGroupWrapper_forWindow(aWindow) { let wrapperMap; if (!gSingleWrapperCache.has(aWindow)) { wrapperMap = new Map();
--- a/browser/components/migration/IEProfileMigrator.js +++ b/browser/components/migration/IEProfileMigrator.js @@ -358,17 +358,17 @@ Settings.prototype = { // Converts from yes/no to a boolean. let yesNoToBoolean = v => v == "yes"; // Converts source format like "en-us,ar-kw;q=0.7,ar-om;q=0.3" into // destination format like "en-us, ar-kw, ar-om". // Final string is sorted by quality (q=) param. function parseAcceptLanguageList(v) { return v.match(/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/gi) - .sort(function (a , b) { + .sort(function (a, b) { let qA = parseFloat(a.split(";q=")[1]) || 1.0; let qB = parseFloat(b.split(";q=")[1]) || 1.0; return qB - qA; }) .map(a => a.split(";")[0]); } // For reference on some of the available IE Registry settings:
--- a/browser/components/newtab/tests/xpcshell/test_PlacesProvider.js +++ b/browser/components/newtab/tests/xpcshell/test_PlacesProvider.js @@ -65,17 +65,17 @@ add_task(function test_LinkChecker_secur {url: "javascript:alert('hello')", expected: false}, // jshint ignore:line {url: "data:image/png;base64,XXX", expected: false}, {url: "about:newtab", expected: true}, {url: "https://example.com", expected: true}, {url: "ftp://example.com", expected: true}, ]; for (let {url, expected} of urls) { let observed = PlacesProvider.LinkChecker.checkLoadURI(url); - equal(observed , expected, `can load "${url}"?`); + equal(observed, expected, `can load "${url}"?`); } }); /** Test Provider **/ add_task(function* test_Links_getLinks() { yield PlacesTestUtils.clearHistory(); let provider = PlacesProvider.links;
--- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -722,22 +722,22 @@ BrowserGlue.prototype = { _checkForOldBuildUpdates: function () { // check for update if our build is old if (AppConstants.MOZ_UPDATER && Services.prefs.getBoolPref("app.update.enabled") && Services.prefs.getBoolPref("app.update.checkInstallTime")) { let buildID = Services.appinfo.appBuildID; let today = new Date().getTime(); - let buildDate = new Date(buildID.slice(0,4), // year - buildID.slice(4,6) - 1, // months are zero-based. - buildID.slice(6,8), // day - buildID.slice(8,10), // hour - buildID.slice(10,12), // min - buildID.slice(12,14)) // ms + let buildDate = new Date(buildID.slice(0, 4), // year + buildID.slice(4, 6) - 1, // months are zero-based. + buildID.slice(6, 8), // day + buildID.slice(8, 10), // hour + buildID.slice(10, 12), // min + buildID.slice(12, 14)) // ms .getTime(); const millisecondsIn24Hours = 86400000; let acceptableAge = Services.prefs.getIntPref("app.update.checkInstallTime.days") * millisecondsIn24Hours; if (buildDate + acceptableAge < today) { Cc["@mozilla.org/updates/update-service;1"].getService(Ci.nsIApplicationUpdateService).checkForBackgroundUpdates(); }
--- a/browser/components/places/content/places.js +++ b/browser/components/places/content/places.js @@ -731,17 +731,17 @@ var PlacesOrganizer = { ctx.save(); ctx.fillStyle = "-moz-Dialog"; ctx.fillRect(0, 0, width, height); ctx.translate(width/2, height/2); ctx.fillStyle = "GrayText"; ctx.mozTextStyle = "12pt sans serif"; var len = ctx.mozMeasureText(notAvailableText); - ctx.translate(-len/2,0); + ctx.translate(-len/2, 0); ctx.mozDrawText(notAvailableText); ctx.restore(); }, toggleAdditionalInfoFields: function PO_toggleAdditionalInfoFields() { var infoBox = document.getElementById("infoBox"); var infoBoxExpander = document.getElementById("infoBoxExpander"); var infoBoxExpanderLabel = document.getElementById("infoBoxExpanderLabel");
--- a/browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js +++ b/browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js @@ -25,17 +25,17 @@ add_task(function* () { yield promiseKeywordNotification; // After the notification, the keywords cache will update asynchronously. info("Check the keyword entry has been created"); let entry; yield waitForCondition(function* () { entry = yield PlacesUtils.keywords.fetch("kw"); return !!entry; - },"Unable to find the expected keyword"); + }, "Unable to find the expected keyword"); is(entry.keyword, "kw", "keyword is correct"); is(entry.url.href, TEST_URL, "URL is correct"); is(entry.postData, "accenti%3D%E0%E8%EC%F2%F9&search%3D%25s", "POST data is correct"); info("Check the charset has been saved"); let charset = yield PlacesUtils.getCharsetForURI(NetUtil.newURI(TEST_URL)); is(charset, "windows-1252", "charset is correct");
--- a/browser/components/places/tests/browser/browser_drag_bookmarks_on_toolbar.js +++ b/browser/components/places/tests/browser/browser_drag_bookmarks_on_toolbar.js @@ -67,17 +67,17 @@ function synthesizeDragWithDirection(aEl aElement.removeEventListener("click", prevent, false); // Cleanup eventually opened menus. if (aElement.localName == "menu" && aElement.open) aElement.open = false; aCallback() }, false); - var prevent = function(aEvent) {aEvent.preventDefault();} + var prevent = function(aEvent) { aEvent.preventDefault(); } var xIncrement = 0; var yIncrement = 0; switch (aDirection) { case dragDirections.LEFT: xIncrement = -1; break;
--- a/browser/components/preferences/connection.js +++ b/browser/components/preferences/connection.js @@ -15,17 +15,17 @@ var gConnectionsDialog = { if (proxyTypePref.value != 1) return true; var httpProxyURLPref = document.getElementById("network.proxy.http"); var httpProxyPortPref = document.getElementById("network.proxy.http_port"); var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings"); // If the port is 0 and the proxy server is specified, focus on the port and cancel submission. - for (let prefName of ["http","ssl","ftp","socks"]) { + for (let prefName of ["http", "ssl", "ftp", "socks"]) { let proxyPortPref = document.getElementById("network.proxy." + prefName + "_port"); let proxyPref = document.getElementById("network.proxy." + prefName); // Only worry about ports which are currently active. If the share option is on, then ignore // all ports except the HTTP port if (proxyPref.value != "" && proxyPortPref.value == 0 && (prefName == "http" || !shareProxiesPref.value)) { document.getElementById("networkProxy" + prefName.toUpperCase() + "_Port").focus(); return false;
--- a/browser/components/preferences/in-content/preferences.js +++ b/browser/components/preferences/in-content/preferences.js @@ -162,17 +162,17 @@ function helpButtonCommand() { let helpTopic = categories.querySelector(".category[value=" + pane + "]") .getAttribute("helpTopic"); openHelpLink(helpTopic); } function friendlyPrefCategoryNameToInternalName(aName) { if (aName.startsWith("pane")) return aName; - return "pane" + aName.substring(0,1).toUpperCase() + aName.substr(1); + return "pane" + aName.substring(0, 1).toUpperCase() + aName.substr(1); } // This function is duplicated inside of utilityOverlay.js's openPreferences. function internalPrefCategoryNameToFriendlyName(aName) { return (aName || "").replace(/^pane./, function(toReplace) { return toReplace[4].toLowerCase(); }); } // Put up a confirm dialog with "ok to restart", "revert without restarting"
--- a/browser/components/preferences/in-content/tests/browser_bug705422.js +++ b/browser/components/preferences/in-content/tests/browser_bug705422.js @@ -13,23 +13,23 @@ function initTest() { var cm = Components.classes["@mozilla.org/cookiemanager;1"] .getService(Components.interfaces.nsICookieManager); // delete all cookies (might be left over from other tests) cm.removeAll(); // data for cookies - var vals = [[searchTerm+".com", dummyTerm, dummyTerm], // match - [searchTerm+".org", dummyTerm, dummyTerm], // match - [dummyTerm+".com", searchTerm, dummyTerm], // match - [dummyTerm+".edu", searchTerm+dummyTerm, dummyTerm],// match - [dummyTerm+".net", dummyTerm, searchTerm], // match - [dummyTerm+".org", dummyTerm, searchTerm+dummyTerm],// match - [dummyTerm+".int", dummyTerm, dummyTerm]]; // no match + var vals = [[searchTerm+".com", dummyTerm, dummyTerm], // match + [searchTerm+".org", dummyTerm, dummyTerm], // match + [dummyTerm+".com", searchTerm, dummyTerm], // match + [dummyTerm+".edu", searchTerm+dummyTerm, dummyTerm], // match + [dummyTerm+".net", dummyTerm, searchTerm], // match + [dummyTerm+".org", dummyTerm, searchTerm+dummyTerm], // match + [dummyTerm+".int", dummyTerm, dummyTerm]]; // no match // matches must correspond to above data const matches = 6; var ios = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); var cookieSvc = Components.classes["@mozilla.org/cookieService;1"] .getService(Components.interfaces.nsICookieService); @@ -41,17 +41,17 @@ function initTest() { cookieSvc.setCookieString(cookieUri, null, name+"="+value+";", null); } // open cookie manager var cmd = window.openDialog("chrome://browser/content/preferences/cookies.xul", "Browser:Cookies", "", {}); // when it has loaded, run actual tests - cmd.addEventListener("load", function() {executeSoon(function() {runTest(cmd, searchTerm, vals.length, matches);});}, false); + cmd.addEventListener("load", function() { executeSoon(function() { runTest(cmd, searchTerm, vals.length, matches); }); }, false); } function isDisabled(win, expectation) { var disabled = win.document.getElementById("removeAllCookies").disabled; is(disabled, expectation, "Remove all cookies button has correct state: "+(expectation?"disabled":"enabled")); } function runTest(win, searchTerm, cookies, matches) {
--- a/browser/components/preferences/permissions.js +++ b/browser/components/preferences/permissions.js @@ -46,17 +46,17 @@ var gPermissionManager = { isContainer: function(aIndex) { return false; }, setTree: function(aTree) {}, getImageSrc: function(aRow, aColumn) {}, getProgressMode: function(aRow, aColumn) {}, getCellValue: function(aRow, aColumn) {}, cycleHeader: function(column) {}, getRowProperties: function(row) { return ""; }, getColumnProperties: function(column) { return ""; }, - getCellProperties: function(row,column) { + getCellProperties: function(row, column) { if (column.element.getAttribute("id") == "siteCol") return "ltr"; return ""; } }, _getCapabilityString: function (aCapability)
--- a/browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js +++ b/browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js @@ -86,22 +86,22 @@ add_task(function* testSyncedTabsSidebar let SyncedTabs = SidebarUI.browser.contentWindow.SyncedTabs; Assert.ok(syncedTabsDeckComponent, "component exists"); originalSyncedTabsInternal = SyncedTabs._internal; SyncedTabs._internal = { isConfiguredToSyncTabs: true, hasSyncedThisSession: true, - getTabClients() { return Promise.resolve([])}, - syncTabs() {return Promise.resolve();}, + getTabClients() { return Promise.resolve([]) }, + syncTabs() { return Promise.resolve(); }, }; - sinon.stub(syncedTabsDeckComponent, "_accountStatus", ()=> Promise.resolve(true)); - sinon.stub(SyncedTabs._internal, "getTabClients", ()=> Promise.resolve(Cu.cloneInto(FIXTURE, {}))); + sinon.stub(syncedTabsDeckComponent, "_accountStatus", () => Promise.resolve(true)); + sinon.stub(SyncedTabs._internal, "getTabClients", () => Promise.resolve(Cu.cloneInto(FIXTURE, {}))); yield syncedTabsDeckComponent.updatePanel(); // This is a hacky way of waiting for the view to render. The view renders // after the following promise (a different instance of which is triggered // in updatePanel) resolves, so we wait for it here as well yield syncedTabsDeckComponent.tabListComponent._store.getData(); Assert.ok(SyncedTabs._internal.getTabClients.called, "get clients called"); @@ -139,22 +139,22 @@ add_task(function* testSyncedTabsSidebar let SyncedTabs = window.SidebarUI.browser.contentWindow.SyncedTabs; Assert.ok(syncedTabsDeckComponent, "component exists"); originalSyncedTabsInternal = SyncedTabs._internal; SyncedTabs._internal = { isConfiguredToSyncTabs: true, hasSyncedThisSession: true, - getTabClients() { return Promise.resolve([])}, - syncTabs() {return Promise.resolve();}, + getTabClients() { return Promise.resolve([]) }, + syncTabs() { return Promise.resolve(); }, }; - sinon.stub(syncedTabsDeckComponent, "_accountStatus", ()=> Promise.resolve(true)); - sinon.stub(SyncedTabs._internal, "getTabClients", ()=> Promise.resolve(Cu.cloneInto(FIXTURE, {}))); + sinon.stub(syncedTabsDeckComponent, "_accountStatus", () => Promise.resolve(true)); + sinon.stub(SyncedTabs._internal, "getTabClients", () => Promise.resolve(Cu.cloneInto(FIXTURE, {}))); yield syncedTabsDeckComponent.updatePanel(); // This is a hacky way of waiting for the view to render. The view renders // after the following promise (a different instance of which is triggered // in updatePanel) resolves, so we wait for it here as well yield syncedTabsDeckComponent.tabListComponent._store.getData(); let filterInput = syncedTabsDeckComponent._window.document.querySelector(".tabsFilter"); @@ -199,33 +199,33 @@ add_task(function* testSyncedTabsSidebar let syncedTabsDeckComponent = window.SidebarUI.browser.contentWindow.syncedTabsDeckComponent; let SyncedTabs = window.SidebarUI.browser.contentWindow.SyncedTabs; originalSyncedTabsInternal = SyncedTabs._internal; SyncedTabs._internal = { isConfiguredToSyncTabs: false, hasSyncedThisSession: false, getTabClients() {}, - syncTabs() {return Promise.resolve();}, + syncTabs() { return Promise.resolve(); }, }; Assert.ok(syncedTabsDeckComponent, "component exists"); sinon.spy(syncedTabsDeckComponent, "updatePanel"); sinon.spy(syncedTabsDeckComponent, "observe"); - sinon.stub(syncedTabsDeckComponent, "_accountStatus", ()=> Promise.reject("Test error")); + sinon.stub(syncedTabsDeckComponent, "_accountStatus", () => Promise.reject("Test error")); yield syncedTabsDeckComponent.updatePanel(); let selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); Assert.ok(selectedPanel.classList.contains("notAuthedInfo"), "not-authed panel is selected on auth error"); syncedTabsDeckComponent._accountStatus.restore(); - sinon.stub(syncedTabsDeckComponent, "_accountStatus", ()=> Promise.resolve(accountExists)); + sinon.stub(syncedTabsDeckComponent, "_accountStatus", () => Promise.resolve(accountExists)); yield syncedTabsDeckComponent.updatePanel(); selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); Assert.ok(selectedPanel.classList.contains("notAuthedInfo"), "not-authed panel is selected"); accountExists = true; yield syncedTabsDeckComponent.updatePanel(); selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); @@ -234,24 +234,24 @@ add_task(function* testSyncedTabsSidebar SyncedTabs._internal.isConfiguredToSyncTabs = true; yield syncedTabsDeckComponent.updatePanel(); selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); Assert.ok(selectedPanel.classList.contains("tabs-fetching"), "tabs fetch panel is selected"); SyncedTabs._internal.hasSyncedThisSession = true; - sinon.stub(SyncedTabs._internal, "getTabClients", ()=> Promise.resolve([])); + sinon.stub(SyncedTabs._internal, "getTabClients", () => Promise.resolve([])); yield syncedTabsDeckComponent.updatePanel(); selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); Assert.ok(selectedPanel.classList.contains("singleDeviceInfo"), "tabs fetch panel is selected"); SyncedTabs._internal.getTabClients.restore(); - sinon.stub(SyncedTabs._internal, "getTabClients", ()=> Promise.resolve([{id: "mock"}])); + sinon.stub(SyncedTabs._internal, "getTabClients", () => Promise.resolve([{id: "mock"}])); yield syncedTabsDeckComponent.updatePanel(); selectedPanel = syncedTabsDeckComponent.container.querySelector(".sync-state.selected"); Assert.ok(selectedPanel.classList.contains("tabs-container"), "tabs panel is selected"); }); add_task(testClean); @@ -261,22 +261,22 @@ add_task(function* testSyncedTabsSidebar let SyncedTabs = window.SidebarUI.browser.contentWindow.SyncedTabs; Assert.ok(syncedTabsDeckComponent, "component exists"); originalSyncedTabsInternal = SyncedTabs._internal; SyncedTabs._internal = { isConfiguredToSyncTabs: true, hasSyncedThisSession: true, - getTabClients() { return Promise.resolve([])}, - syncTabs() {return Promise.resolve();}, + getTabClients() { return Promise.resolve([]) }, + syncTabs() { return Promise.resolve(); }, }; - sinon.stub(syncedTabsDeckComponent, "_accountStatus", ()=> Promise.resolve(true)); - sinon.stub(SyncedTabs._internal, "getTabClients", ()=> Promise.resolve(Cu.cloneInto(FIXTURE, {}))); + sinon.stub(syncedTabsDeckComponent, "_accountStatus", () => Promise.resolve(true)); + sinon.stub(SyncedTabs._internal, "getTabClients", () => Promise.resolve(Cu.cloneInto(FIXTURE, {}))); yield syncedTabsDeckComponent.updatePanel(); // This is a hacky way of waiting for the view to render. The view renders // after the following promise (a different instance of which is triggered // in updatePanel) resolves, so we wait for it here as well yield syncedTabsDeckComponent.tabListComponent._store.getData(); info("Right-clicking the search box should show text-related actions");
--- a/browser/components/syncedtabs/test/xpcshell/test_SyncedTabsDeckComponent.js +++ b/browser/components/syncedtabs/test/xpcshell/test_SyncedTabsDeckComponent.js @@ -12,17 +12,17 @@ let { DeckView } = Cu.import("resource:/ add_task(function* testInitUninit() { let deckStore = new SyncedTabsDeckStore(); let listComponent = {}; let ViewMock = sinon.stub(); let view = {render: sinon.spy(), destroy: sinon.spy(), container: {}}; ViewMock.returns(view); - sinon.stub(SyncedTabs, "syncTabs", ()=> Promise.resolve()); + sinon.stub(SyncedTabs, "syncTabs", () => Promise.resolve()); sinon.spy(deckStore, "on"); sinon.stub(deckStore, "setPanels"); let component = new SyncedTabsDeckComponent({ window, deckStore, listComponent, @@ -81,17 +81,17 @@ add_task(function* testObserver() { let deckStore = new SyncedTabsDeckStore(); let listStore = new SyncedTabsListStore(SyncedTabs); let listComponent = {}; let ViewMock = sinon.stub(); let view = {render: sinon.spy(), destroy: sinon.spy(), container: {}}; ViewMock.returns(view); - sinon.stub(SyncedTabs, "syncTabs", ()=> Promise.resolve()); + sinon.stub(SyncedTabs, "syncTabs", () => Promise.resolve()); sinon.spy(deckStore, "on"); sinon.stub(deckStore, "setPanels"); sinon.stub(listStore, "getData"); let component = new SyncedTabsDeckComponent({ window, @@ -141,17 +141,17 @@ add_task(function* testPanelStatus() { let component = new SyncedTabsDeckComponent({ fxAccounts, deckStore, listComponent, SyncedTabs: SyncedTabsMock, }); let isAuthed = false; - sinon.stub(fxAccounts, "accountStatus", ()=> Promise.resolve(isAuthed)); + sinon.stub(fxAccounts, "accountStatus", () => Promise.resolve(isAuthed)); let result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.NOT_AUTHED_INFO); isAuthed = true; SyncedTabsMock.isConfiguredToSyncTabs = false; result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.TABS_DISABLED); @@ -160,30 +160,30 @@ add_task(function* testPanelStatus() { SyncedTabsMock.hasSyncedThisSession = false; result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.TABS_FETCHING); SyncedTabsMock.hasSyncedThisSession = true; let clients = []; - sinon.stub(SyncedTabsMock, "getTabClients", ()=> Promise.resolve(clients)); + sinon.stub(SyncedTabsMock, "getTabClients", () => Promise.resolve(clients)); result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.SINGLE_DEVICE_INFO); clients = ["mock-client"]; result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.TABS_CONTAINER); fxAccounts.accountStatus.restore(); - sinon.stub(fxAccounts, "accountStatus", ()=> Promise.reject("err")); + sinon.stub(fxAccounts, "accountStatus", () => Promise.reject("err")); result = yield component.getPanelStatus(); Assert.equal(result, component.PANELS.NOT_AUTHED_INFO); - sinon.stub(component, "getPanelStatus", ()=> Promise.resolve("mock-panelId")); + sinon.stub(component, "getPanelStatus", () => Promise.resolve("mock-panelId")); sinon.spy(deckStore, "selectPanel"); yield component.updatePanel(); Assert.ok(deckStore.selectPanel.calledWith("mock-panelId")); }); add_task(function* testActions() { let listComponent = {}; let windowMock = {
--- a/browser/components/uitour/test/head.js +++ b/browser/components/uitour/test/head.js @@ -55,17 +55,17 @@ function taskify(fun) { function is_hidden(element) { var style = element.ownerGlobal.getComputedStyle(element); if (style.display == "none") return true; if (style.visibility != "visible") return true; if (style.display == "-moz-popup") - return ["hiding","closed"].indexOf(element.state) != -1; + return ["hiding", "closed"].indexOf(element.state) != -1; // Hiding a parent element will hide all its children if (element.parentNode != element.ownerDocument) return is_hidden(element.parentNode); return false; }
--- a/browser/experiments/test/xpcshell/test_conditions.js +++ b/browser/experiments/test/xpcshell/test_conditions.js @@ -240,17 +240,17 @@ add_task(function* test_times() { // "expected applicable?", rejection reason or null, fake now date, manifest data // start time [true, null, now, {startTime: nowSec - 5 * SEC_IN_ONE_DAY, endTime: nowSec + 10 * SEC_IN_ONE_DAY}], [true, null, now, - {startTime: nowSec , + {startTime: nowSec, endTime: nowSec + 10 * SEC_IN_ONE_DAY}], [false, "startTime", now, {startTime: nowSec + 5 * SEC_IN_ONE_DAY, endTime: nowSec + 10 * SEC_IN_ONE_DAY}], // end time [false, "endTime", now,
--- a/browser/extensions/pocket/content/panels/js/messages.js +++ b/browser/extensions/pocket/content/panels/js/messages.js @@ -23,17 +23,17 @@ var pktPanelMessaging = (function() { function addMessageListener(panelId, messageId, callback) { document.addEventListener(panelPrefixedMessageId(panelId, messageId), function(e) { callback(JSON.parse(e.target.getAttribute("payload"))[0]); // TODO: Figure out why e.target.parentNode is null // e.target.parentNode.removeChild(e.target); - },false); + }, false); } function removeMessageListener(panelId, messageId, callback) { document.removeEventListener(panelPrefixedMessageId(panelId, messageId), callback); } function sendMessage(panelId, messageId, payload, callback) {
--- a/browser/extensions/pocket/content/panels/js/saved.js +++ b/browser/extensions/pocket/content/panels/js/saved.js @@ -22,29 +22,29 @@ var PKT_SAVED_OVERLAY = function (option this.autocloseTimingFinalState = 2000; this.mouseInside = false; this.userTags = []; this.cxt_suggested_available = 0; this.cxt_entered = 0; this.cxt_suggested = 0; this.cxt_removed = 0; this.justaddedsuggested = false; - this.fillTagContainer = function(tags,container,tagclass) { + this.fillTagContainer = function(tags, container, tagclass) { var newtagleft = 0; container.children().remove(); for (var i = 0; i < tags.length; i++) { var newtag = $('<li><a href="#" class="token_tag ' + tagclass + '">' + tags[i] + '</a></li>'); container.append(newtag); var templeft = newtag.position().left; this.cxt_suggested_available++; newtagleft = templeft; } }; this.fillUserTags = function() { - thePKT_SAVED.sendMessage("getTags",{},function(resp) + thePKT_SAVED.sendMessage("getTags", {}, function(resp) { if (typeof resp == 'object' && typeof resp.tags == 'object') { myself.userTags = resp.tags; } }); }; this.fillSuggestedTags = function() @@ -68,39 +68,39 @@ var PKT_SAVED_OVERLAY = function (option for (var i = 0; i < resp.value.suggestedTags.length; i++) { newtags.push(resp.value.suggestedTags[i].tag); } myself.suggestedTagsLoaded = true; if (!myself.mouseInside) { myself.startCloseTimer(); } - myself.fillTagContainer(newtags,$('.pkt_ext_suggestedtag_detail ul'),'token_suggestedtag'); + myself.fillTagContainer(newtags, $('.pkt_ext_suggestedtag_detail ul'), 'token_suggestedtag'); } else if (resp.status == 'error') { var msg = $('<p class="suggestedtag_msg">'); msg.text(resp.error.message); $('.pkt_ext_suggestedtag_detail').append(msg); this.suggestedTagsLoaded = true; if (!myself.mouseInside) { myself.startCloseTimer(); } } }); } this.initAutoCloseEvents = function() { - this.wrapper.on('mouseenter',function() { + this.wrapper.on('mouseenter', function() { myself.mouseInside = true; myself.stopCloseTimer(); }); - this.wrapper.on('mouseleave',function() { + this.wrapper.on('mouseleave', function() { myself.mouseInside = false; myself.startCloseTimer(); }); - this.wrapper.on('click',function(e) { + this.wrapper.on('click', function(e) { myself.closeValid = false; }); }; this.startCloseTimer = function(manualtime) { var settime = manualtime ? manualtime : myself.autocloseTiming; if (typeof myself.autocloseTimer == 'number') { @@ -143,31 +143,31 @@ var PKT_SAVED_OVERLAY = function (option var inputleft = $('.token-input-input-token input').position().left; var listleft = $('.token-input-list').position().left; var listleftmanual = parseInt($('.token-input-list').css('left')); var listleftnatural = listleft - listleftmanual; var leftwidth = $('.pkt_ext_tag_input_wrapper').outerWidth(); if ((inputleft + listleft + 20) > leftwidth) { - $('.token-input-list').css('left',Math.min(((inputleft + listleftnatural - leftwidth + 20)*-1),0) + 'px'); + $('.token-input-list').css('left', Math.min(((inputleft + listleftnatural - leftwidth + 20)*-1), 0) + 'px'); } else { - $('.token-input-list').css('left','0'); + $('.token-input-list').css('left', '0'); } }; this.checkPlaceholderStatus = function() { if (this.wrapper.find('.pkt_ext_tag_input_wrapper').find('.token-input-token').length) { - this.wrapper.find('.token-input-input-token input').attr('placeholder',''); + this.wrapper.find('.token-input-input-token input').attr('placeholder', ''); } else { - this.wrapper.find('.token-input-input-token input').attr('placeholder',$('.pkt_ext_tag_input').attr('placeholder')).css('width','200px'); + this.wrapper.find('.token-input-input-token input').attr('placeholder', $('.pkt_ext_tag_input').attr('placeholder')).css('width', '200px'); } }; this.initTagInput = function() { var inputwrapper = $('.pkt_ext_tag_input_wrapper'); inputwrapper.find('.pkt_ext_tag_input').tokenInput([], { searchDelay: 200, minChars: 1, animateDropdown: false, @@ -182,63 +182,63 @@ var PKT_SAVED_OVERLAY = function (option for (var i = 0; i < myself.userTags.length; i++) { if (r.test(myself.userTags[i]) && limit > 0) { returnlist.push({name:myself.userTags[i]}); limit--; } } } if (!$('.token-input-dropdown-tag').data('init')) { - $('.token-input-dropdown-tag').css('width',inputwrapper.outerWidth()).data('init'); + $('.token-input-dropdown-tag').css('width', inputwrapper.outerWidth()).data('init'); inputwrapper.append($('.token-input-dropdown-tag')); } cb(returnlist); }, textToData: function(text) { if ($.trim(text).length > 25 || !$.trim(text).length) { if (text.length > 25) { myself.showTagsError(myself.dictJSON.maxtaglength); changestamp = Date.now(); setTimeout(function() { $('.token-input-input-token input').val(text).focus(); - },10); + }, 10); } return null; } myself.hideTagsError(); return {name:myself.sanitizeText(text.toLowerCase())}; }, onReady: function() { $('.token-input-dropdown').addClass('token-input-dropdown-tag'); - inputwrapper.find('.token-input-input-token input').attr('placeholder',$('.tag-input').attr('placeholder')).css('width','200px'); + inputwrapper.find('.token-input-input-token input').attr('placeholder', $('.tag-input').attr('placeholder')).css('width', '200px'); if ($('.pkt_ext_suggestedtag_detail').length) { - myself.wrapper.find('.pkt_ext_suggestedtag_detail').on('click','.token_tag',function(e) { + myself.wrapper.find('.pkt_ext_suggestedtag_detail').on('click', '.token_tag', function(e) { e.preventDefault(); var tag = $(e.target); if ($(this).parents('.pkt_ext_suggestedtag_detail_disabled').length) { return; } myself.justaddedsuggested = true; - inputwrapper.find('.pkt_ext_tag_input').tokenInput('add',{id:inputwrapper.find('.token-input-token').length,name:tag.text()}); + inputwrapper.find('.pkt_ext_tag_input').tokenInput('add', {id:inputwrapper.find('.token-input-token').length, name:tag.text()}); tag.addClass('token-suggestedtag-inactive'); $('.token-input-input-token input').focus(); }); } - $('.token-input-list').on('keydown','input',function(e) { + $('.token-input-list').on('keydown', 'input', function(e) { if (e.which == 37) { myself.updateSlidingTagList(); } - }).on('keypress','input',function(e) { + }).on('keypress', 'input', function(e) { if (e.which == 13) { if (typeof changestamp == 'undefined' || (Date.now() - changestamp > 250)) { e.preventDefault(); myself.wrapper.find('.pkt_ext_btn').trigger('click'); } } - }).on('keyup','input',function(e) { + }).on('keyup', 'input', function(e) { myself.checkValidTagSubmit(); }); myself.checkPlaceholderStatus(); }, onAdd: function() { myself.checkValidTagSubmit(); changestamp = Date.now(); myself.hideInactiveTags(); @@ -252,24 +252,24 @@ var PKT_SAVED_OVERLAY = function (option }, onShowDropdown: function() { thePKT_SAVED.sendMessage("expandSavePanel"); }, onHideDropdown: function() { thePKT_SAVED.sendMessage("collapseSavePanel"); } }); - $('body').on('keydown',function(e) { + $('body').on('keydown', function(e) { var key = e.keyCode || e.which; if (key == 8) { var selected = $('.token-input-selected-token'); if (selected.length) { e.preventDefault(); e.stopImmediatePropagation(); - inputwrapper.find('.pkt_ext_tag_input').tokenInput('remove',{name:selected.find('p').text()}); + inputwrapper.find('.pkt_ext_tag_input').tokenInput('remove', {name:selected.find('p').text()}); } } else if ($(e.target).parent().hasClass('token-input-input-token')) { e.stopImmediatePropagation(); } }); }; this.disableInput = function() { @@ -333,17 +333,17 @@ var PKT_SAVED_OVERLAY = function (option if ($(this).hasClass('pkt_ext_removeitem')) { e.preventDefault(); myself.disableInput(); $('.pkt_ext_containersaved').find('.pkt_ext_detail h2').text(myself.dictJSON.processingremove); thePKT_SAVED.sendMessage("deleteItem", { itemId: myself.savedItemId - },function(resp) { + }, function(resp) { if (resp.status == 'success') { myself.showStateFinalMsg(myself.dictJSON.pageremoved); } else if (resp.status == 'error') { $('.pkt_ext_edit_msg').addClass('pkt_ext_edit_msg_error pkt_ext_edit_msg_active').text(resp.error.message); } }); } @@ -374,32 +374,32 @@ var PKT_SAVED_OVERLAY = function (option return; } var activetokenstext = '|'; $('.token-input-token').each(function(index, element) { activetokenstext += $(element).find('p').text() + '|'; }); var inactivetags = $('.pkt_ext_suggestedtag_detail').find('.token_tag_inactive'); - inactivetags.each(function(index,element) { + inactivetags.each(function(index, element) { if (activetokenstext.indexOf('|' + $(element).text() + '|') == -1) { $(element).removeClass('token_tag_inactive'); } }); }; this.hideInactiveTags = function() { if (!$('.pkt_ext_suggestedtag_detail').length) { return; } var activetokenstext = '|'; $('.token-input-token').each(function(index, element) { activetokenstext += $(element).find('p').text() + '|'; }); var activesuggestedtags = $('.token_tag').not('.token_tag_inactive'); - activesuggestedtags.each(function(index,element) { + activesuggestedtags.each(function(index, element) { if (activetokenstext.indexOf('|' + $(element).text() + '|') > -1) { $(element).addClass('token_tag_inactive'); } }); }; this.showStateSaved = function(initobj) { this.wrapper.find('.pkt_ext_detail h2').text(this.dictJSON.pagesaved); this.wrapper.find('.pkt_ext_btn').addClass('pkt_ext_btn_disabled'); @@ -430,26 +430,26 @@ var PKT_SAVED_OVERLAY = function (option { return ''; } return String(s).replace(/[&<>"']/g, function (str) { return sanitizeMap[str]; }); }; this.showStateFinalMsg = function(msg) { - this.wrapper.find('.pkt_ext_tag_detail').one('webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd',function(e) + this.wrapper.find('.pkt_ext_tag_detail').one('webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd', function(e) { $(this).off('webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd'); myself.preventCloseTimerCancel = true; myself.startCloseTimer(myself.autocloseTimingFinalState); myself.wrapper.find('.pkt_ext_detail h2').text(msg); }); this.wrapper.addClass('pkt_ext_container_finalstate'); }; - this.showStateError = function(headline,detail) { + this.showStateError = function(headline, detail) { this.wrapper.find('.pkt_ext_detail h2').text(headline); this.wrapper.find('.pkt_ext_detail h3').text(detail); this.wrapper.addClass('pkt_ext_container_detailactive pkt_ext_container_finalstate pkt_ext_container_finalerrorstate'); this.preventCloseTimerCancel = true; this.startCloseTimer(myself.autocloseTimingFinalState); } this.getTranslations = function() { @@ -555,33 +555,33 @@ PKT_SAVED.prototype = { } myself.overlay.create(); // tell back end we're ready thePKT_SAVED.sendMessage("show"); // wait confirmation of save before flipping to final saved state - thePKT_SAVED.addMessageListener("saveLink",function(resp) + thePKT_SAVED.addMessageListener("saveLink", function(resp) { if (resp.status == 'error') { if (typeof resp.error == 'object') { if (resp.error.localizedKey) { - myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved,myself.overlay.dictJSON[resp.error.localizedKey]); + myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, myself.overlay.dictJSON[resp.error.localizedKey]); } else { - myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved,resp.error.message); + myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, resp.error.message); } } else { - myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved,myself.overlay.dictJSON.errorgeneric); + myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, myself.overlay.dictJSON.errorgeneric); } return; } myself.overlay.showStateSaved(resp); }); }
--- a/browser/extensions/pocket/content/panels/js/tmpl.js +++ b/browser/extensions/pocket/content/panels/js/tmpl.js @@ -1,150 +1,150 @@ (function() { var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {}; -templates['saved_premiumextras'] = template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { +templates['saved_premiumextras'] = template({"compiler":[6, ">= 2.0.0-beta.1"], "main":function(depth0, helpers, partials, data) { return "<div class=\"pkt_ext_suggestedtag_detailshown\">\n</div>"; - },"useData":true}); -templates['saved_premiumshell'] = template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { + }, "useData":true}); +templates['saved_premiumshell'] = template({"compiler":[6, ">= 2.0.0-beta.1"], "main":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "<div class=\"pkt_ext_suggestedtag_detail pkt_ext_suggestedtag_detail_loading\">\n <h4>" - + escapeExpression(((helper = (helper = helpers.suggestedtags || (depth0 != null ? depth0.suggestedtags : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"suggestedtags","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.suggestedtags || (depth0 != null ? depth0.suggestedtags : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"suggestedtags", "hash":{}, "data":data}) : helper))) + "</h4>\n <div class=\"pkt_ext_loadingspinner\"><div></div></div>\n <ul class=\"pkt_ext_cf\">\n </ul>\n</div>"; -},"useData":true}); -templates['saved_shell'] = template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { +}, "useData":true}); +templates['saved_shell'] = template({"compiler":[6, ">= 2.0.0-beta.1"], "main":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return "<div class=\"pkt_ext_initload\">\n <div class=\"pkt_ext_logo\"></div> \n <div class=\"pkt_ext_topdetail\">\n <h2>" - + escapeExpression(((helper = (helper = helpers.saving || (depth0 != null ? depth0.saving : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"saving","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.saving || (depth0 != null ? depth0.saving : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"saving", "hash":{}, "data":data}) : helper))) + "</h2>\n </div> \n <div class=\"pkt_ext_loadingspinner\"><div></div></div>\n</div> \n<div class=\"pkt_ext_detail\"> \n <div class=\"pkt_ext_logo\"></div>\n <div class=\"pkt_ext_topdetail\">\n <h2>" - + escapeExpression(((helper = (helper = helpers.pagesaved || (depth0 != null ? depth0.pagesaved : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pagesaved","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pagesaved || (depth0 != null ? depth0.pagesaved : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pagesaved", "hash":{}, "data":data}) : helper))) + "</h2>\n <h3 class=\"pkt_ext_errordetail\"></h3>\n <nav class=\"pkt_ext_item_actions pkt_ext_cf\">\n <ul>\n <li><a class=\"pkt_ext_removeitem\" href=\"#\">" - + escapeExpression(((helper = (helper = helpers.removepage || (depth0 != null ? depth0.removepage : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"removepage","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.removepage || (depth0 != null ? depth0.removepage : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"removepage", "hash":{}, "data":data}) : helper))) + "</a></li>\n <li class=\"pkt_ext_actions_separator\"></li> \n <li><a class=\"pkt_ext_openpocket\" href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/a?src=ff_ext_saved\" target=\"_blank\">" - + escapeExpression(((helper = (helper = helpers.viewlist || (depth0 != null ? depth0.viewlist : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"viewlist","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.viewlist || (depth0 != null ? depth0.viewlist : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"viewlist", "hash":{}, "data":data}) : helper))) + "</a></li>\n </ul>\n </nav> \n </div>\n <div class=\"pkt_ext_tag_detail pkt_ext_cf\">\n <div class=\"pkt_ext_tag_input_wrapper\">\n <div class=\"pkt_ext_tag_input_blocker\"></div>\n <input class=\"pkt_ext_tag_input\" type=\"text\" placeholder=\"" - + escapeExpression(((helper = (helper = helpers.addtags || (depth0 != null ? depth0.addtags : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"addtags","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.addtags || (depth0 != null ? depth0.addtags : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"addtags", "hash":{}, "data":data}) : helper))) + "\">\n </div>\n <a href=\"#\" class=\"pkt_ext_btn pkt_ext_btn_disabled\">" - + escapeExpression(((helper = (helper = helpers.save || (depth0 != null ? depth0.save : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"save","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.save || (depth0 != null ? depth0.save : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"save", "hash":{}, "data":data}) : helper))) + "</a>\n </div>\n <p class=\"pkt_ext_edit_msg\"></p> \n</div>"; -},"useData":true}); -templates['signup_shell'] = template({"1":function(depth0,helpers,partials,data) { +}, "useData":true}); +templates['signup_shell'] = template({"1":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"pkt_ext_learnmorecontainer\"><a class=\"pkt_ext_learnmore\" href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "?s=ffi&t=learnmore&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\">" - + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"learnmore","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"learnmore", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"3":function(depth0,helpers,partials,data) { +}, "3":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"pkt_ext_learnmorecontainer\"><a class=\"pkt_ext_learnmore pkt_ext_learnmoreinactive\" href=\"#\">" - + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"learnmore","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"learnmore", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"5":function(depth0,helpers,partials,data) { +}, "5":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/ff_signup?s=ffi&t=signupff&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn signup-btn-firefox\"><span class=\"logo\"></span><span class=\"text\">" - + escapeExpression(((helper = (helper = helpers.signinfirefox || (depth0 != null ? depth0.signinfirefox : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signinfirefox","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signinfirefox || (depth0 != null ? depth0.signinfirefox : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signinfirefox", "hash":{}, "data":data}) : helper))) + "</span></a></p>\n"; -},"7":function(depth0,helpers,partials,data) { +}, "7":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/ff_signup?s=ffi&t=signupff&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn signup-btn-firefox\"><span class=\"logo\"></span><span class=\"text\">" - + escapeExpression(((helper = (helper = helpers.signupfirefox || (depth0 != null ? depth0.signupfirefox : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signupfirefox","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signupfirefox || (depth0 != null ? depth0.signupfirefox : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signupfirefox", "hash":{}, "data":data}) : helper))) + "</span></a></p>\n <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/signup?force=email&src=extension&s=ffi&t=signupemail&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn btn-secondary signup-btn-email signup-btn-initstate\">" - + escapeExpression(((helper = (helper = helpers.signupemail || (depth0 != null ? depth0.signupemail : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signupemail","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signupemail || (depth0 != null ? depth0.signupemail : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signupemail", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { +}, "compiler":[6, ">= 2.0.0-beta.1"], "main":function(depth0, helpers, partials, data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "<div class=\"pkt_ext_introdetail pkt_ext_introdetailhero\">\n <h2 class=\"pkt_ext_logo\">Pocket</h2>\n <p class=\"pkt_ext_tagline\">" - + escapeExpression(((helper = (helper = helpers.tagline || (depth0 != null ? depth0.tagline : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"tagline","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.tagline || (depth0 != null ? depth0.tagline : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"tagline", "hash":{}, "data":data}) : helper))) + "</p>\n"; - stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.showlearnmore : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(3, data),"data":data}); + stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.showlearnmore : depth0), {"name":"if", "hash":{}, "fn":this.program(1, data), "inverse":this.program(3, data), "data":data}); if (stack1 != null) { buffer += stack1; } buffer += " <div class=\"pkt_ext_introimg\"></div>\n</div>\n<div class=\"pkt_ext_signupdetail pkt_ext_signupdetail_hero\">\n <h4>" - + escapeExpression(((helper = (helper = helpers.signuptosave || (depth0 != null ? depth0.signuptosave : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signuptosave","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signuptosave || (depth0 != null ? depth0.signuptosave : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signuptosave", "hash":{}, "data":data}) : helper))) + "</h4>\n"; - stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.fxasignedin : depth0), {"name":"if","hash":{},"fn":this.program(5, data),"inverse":this.program(7, data),"data":data}); + stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.fxasignedin : depth0), {"name":"if", "hash":{}, "fn":this.program(5, data), "inverse":this.program(7, data), "data":data}); if (stack1 != null) { buffer += stack1; } return buffer + " <p class=\"alreadyhave\">" - + escapeExpression(((helper = (helper = helpers.alreadyhaveacct || (depth0 != null ? depth0.alreadyhaveacct : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"alreadyhaveacct","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.alreadyhaveacct || (depth0 != null ? depth0.alreadyhaveacct : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"alreadyhaveacct", "hash":{}, "data":data}) : helper))) + " <a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/login?ep=3&src=extension&s=ffi&t=login&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\">" - + escapeExpression(((helper = (helper = helpers.loginnow || (depth0 != null ? depth0.loginnow : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"loginnow","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.loginnow || (depth0 != null ? depth0.loginnow : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"loginnow", "hash":{}, "data":data}) : helper))) + "</a>.</p>\n</div>"; -},"useData":true}); -templates['signupstoryboard_shell'] = template({"1":function(depth0,helpers,partials,data) { +}, "useData":true}); +templates['signupstoryboard_shell'] = template({"1":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p><a class=\"pkt_ext_learnmore\" href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "?s=ffi&t=learnmore&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\">" - + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"learnmore","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"learnmore", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"3":function(depth0,helpers,partials,data) { +}, "3":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p><a class=\"pkt_ext_learnmore pkt_ext_learnmoreinactive\" href=\"#\">" - + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"learnmore","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.learnmore || (depth0 != null ? depth0.learnmore : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"learnmore", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"5":function(depth0,helpers,partials,data) { +}, "5":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/ff_signup?s=ffi&t=signupff&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn signup-btn-firefox\"><span class=\"logo\"></span><span class=\"text\">" - + escapeExpression(((helper = (helper = helpers.signinfirefox || (depth0 != null ? depth0.signinfirefox : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signinfirefox","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signinfirefox || (depth0 != null ? depth0.signinfirefox : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signinfirefox", "hash":{}, "data":data}) : helper))) + "</span></a></p>\n"; -},"7":function(depth0,helpers,partials,data) { +}, "7":function(depth0, helpers, partials, data) { var helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression; return " <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/ff_signup?s=ffi&t=signupff&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn signup-btn-firefox\"><span class=\"logo\"></span><span class=\"text\">" - + escapeExpression(((helper = (helper = helpers.signupfirefox || (depth0 != null ? depth0.signupfirefox : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signupfirefox","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signupfirefox || (depth0 != null ? depth0.signupfirefox : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signupfirefox", "hash":{}, "data":data}) : helper))) + "</span></a></p>\n <p class=\"btn-container\"><a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/signup?force=email&src=extension&s=ffi&t=signupemail&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\" class=\"btn btn-secondary signup-btn-email signup-btn-initstate\">" - + escapeExpression(((helper = (helper = helpers.signupemail || (depth0 != null ? depth0.signupemail : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signupemail","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signupemail || (depth0 != null ? depth0.signupemail : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signupemail", "hash":{}, "data":data}) : helper))) + "</a></p>\n"; -},"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) { +}, "compiler":[6, ">= 2.0.0-beta.1"], "main":function(depth0, helpers, partials, data) { var stack1, helper, functionType="function", helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, buffer = "<div class=\"pkt_ext_introdetail pkt_ext_introdetailstoryboard\">\n <div class=\"pkt_ext_introstory pkt_ext_introstoryone\">\n <div class=\"pkt_ext_introstory_text\">\n <p class=\"pkt_ext_tagline\">" - + escapeExpression(((helper = (helper = helpers.taglinestory_one || (depth0 != null ? depth0.taglinestory_one : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"taglinestory_one","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.taglinestory_one || (depth0 != null ? depth0.taglinestory_one : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"taglinestory_one", "hash":{}, "data":data}) : helper))) + "</p>\n </div>\n <div class=\"pkt_ext_introstoryone_img\"></div>\n </div>\n <div class=\"pkt_ext_introstorydivider\"></div>\n <div class=\"pkt_ext_introstory pkt_ext_introstorytwo\">\n <div class=\"pkt_ext_introstory_text\">\n <p class=\"pkt_ext_tagline\">" - + escapeExpression(((helper = (helper = helpers.taglinestory_two || (depth0 != null ? depth0.taglinestory_two : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"taglinestory_two","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.taglinestory_two || (depth0 != null ? depth0.taglinestory_two : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"taglinestory_two", "hash":{}, "data":data}) : helper))) + "</p>\n"; - stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.showlearnmore : depth0), {"name":"if","hash":{},"fn":this.program(1, data),"inverse":this.program(3, data),"data":data}); + stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.showlearnmore : depth0), {"name":"if", "hash":{}, "fn":this.program(1, data), "inverse":this.program(3, data), "data":data}); if (stack1 != null) { buffer += stack1; } buffer += " </div>\n <div class=\"pkt_ext_introstorytwo_img\"></div>\n </div>\n</div>\n<div class=\"pkt_ext_signupdetail\">\n <h4>" - + escapeExpression(((helper = (helper = helpers.signuptosave || (depth0 != null ? depth0.signuptosave : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"signuptosave","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.signuptosave || (depth0 != null ? depth0.signuptosave : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"signuptosave", "hash":{}, "data":data}) : helper))) + "</h4>\n"; - stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.fxasignedin : depth0), {"name":"if","hash":{},"fn":this.program(5, data),"inverse":this.program(7, data),"data":data}); + stack1 = helpers['if'].call(depth0, (depth0 != null ? depth0.fxasignedin : depth0), {"name":"if", "hash":{}, "fn":this.program(5, data), "inverse":this.program(7, data), "data":data}); if (stack1 != null) { buffer += stack1; } return buffer + " <p class=\"alreadyhave\">" - + escapeExpression(((helper = (helper = helpers.alreadyhaveacct || (depth0 != null ? depth0.alreadyhaveacct : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"alreadyhaveacct","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.alreadyhaveacct || (depth0 != null ? depth0.alreadyhaveacct : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"alreadyhaveacct", "hash":{}, "data":data}) : helper))) + " <a href=\"https://" - + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"pockethost","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.pockethost || (depth0 != null ? depth0.pockethost : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"pockethost", "hash":{}, "data":data}) : helper))) + "/login?ep=3&src=extension&s=ffi&t=login&v=" - + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"variant","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.variant || (depth0 != null ? depth0.variant : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"variant", "hash":{}, "data":data}) : helper))) + "\" target=\"_blank\">" - + escapeExpression(((helper = (helper = helpers.loginnow || (depth0 != null ? depth0.loginnow : depth0)) != null ? helper : helperMissing),(typeof helper === functionType ? helper.call(depth0, {"name":"loginnow","hash":{},"data":data}) : helper))) + + escapeExpression(((helper = (helper = helpers.loginnow || (depth0 != null ? depth0.loginnow : depth0)) != null ? helper : helperMissing), (typeof helper === functionType ? helper.call(depth0, {"name":"loginnow", "hash":{}, "data":data}) : helper))) + "</a>.</p>\n</div>"; -},"useData":true}); +}, "useData":true}); })();
--- a/browser/extensions/pocket/content/pktApi.jsm +++ b/browser/extensions/pocket/content/pktApi.jsm @@ -290,17 +290,17 @@ var pktApi = (function() { var error = {message: errorMessage}; options.error(error, request); } } }; // Set headers request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); - request.setRequestHeader('X-Accept',' application/json'); + request.setRequestHeader('X-Accept', ' application/json'); // Serialize and Fire off the request var str = []; for (var p in data) { if (data.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + "=" + encodeURIComponent(data[p])); } }
--- a/browser/modules/DirectoryLinksProvider.jsm +++ b/browser/modules/DirectoryLinksProvider.jsm @@ -1201,17 +1201,17 @@ var DirectoryLinksProvider = { /** * Removes clicked flag from frequency cap entry for tile landing url * @param url String url of the suggested link * @return promise resolved upon disk write completion */ _removeTileClick: function DirectoryLinksProvider_removeTileClick(url = "") { // remove trailing slash, to accomodate Places sending site urls ending with '/' - let noTrailingSlashUrl = url.replace(/\/$/,""); + let noTrailingSlashUrl = url.replace(/\/$/, ""); let capObject = this._frequencyCaps[url] || this._frequencyCaps[noTrailingSlashUrl]; // return resolved promise if capObject is not found if (!capObject) { return Promise.resolve(); } // otherwise remove clicked flag delete capObject.clicked; return this._writeFrequencyCapFile();
--- a/browser/modules/ReaderParent.jsm +++ b/browser/modules/ReaderParent.jsm @@ -8,17 +8,17 @@ const { classes: Cc, interfaces: Ci, utils: Cu } = Components; this.EXPORTED_SYMBOLS = [ "ReaderParent" ]; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Task.jsm"); -XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils","resource://gre/modules/PlacesUtils.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "UITour", "resource:///modules/UITour.jsm"); const gStringBundle = Services.strings.createBundle("chrome://global/locale/aboutReader.properties"); var ReaderParent = { _readerModeInfoPanelOpen: false,
--- a/browser/modules/test/browser_taskbar_preview.js +++ b/browser/modules/test/browser_taskbar_preview.js @@ -37,17 +37,17 @@ function test() { gPrefService.setBoolPref(ENABLE_PREF_NAME, false); is(0, AeroPeek.previews.length, "Should have 0 previews when disabled"); gPrefService.setBoolPref(ENABLE_PREF_NAME, true); checkPreviews(4, "Previews are back when re-enabling"); for (let preview of AeroPeek.previews) ok(preview.visible, "Preview is shown as expected after re-enabling"); - [1,2,3,4].forEach(function (idx) { + [1, 2, 3, 4].forEach(function (idx) { gBrowser.selectedTab = gBrowser.tabs[idx]; ok(checkSelectedTab(), "Current tab is correctly selected"); }); // Close #4 getPreviewForTab(gBrowser.selectedTab).controller.onClose(); checkPreviews(3, "Expected number of previews after closing selected tab via controller"); ok(gBrowser.tabs.length == 3, "Successfully closed a tab");
--- a/browser/modules/test/browser_urlBar_zoom.js +++ b/browser/modules/test/browser_urlBar_zoom.js @@ -47,17 +47,17 @@ add_task(function* () { }); add_task(function* asyncCleanup() { // reset zoom level and customizable widget ZoomManager.zoom = initialPageZoom; is(ZoomManager.zoom, 1, "Zoom level was restored"); if (document.getElementById("zoom-controls")) { CustomizableUI.removeWidgetFromArea("zoom-controls", CustomizableUI.AREA_NAVBAR); - ok(!document.getElementById("zoom-controls"),"Customizable zoom widget removed from toolbar"); + ok(!document.getElementById("zoom-controls"), "Customizable zoom widget removed from toolbar"); } }); function promiseObserverNotification(aObserver) { let deferred = Promise.defer(); function notificationCallback(e) { Services.obs.removeObserver(notificationCallback, aObserver, false);
--- a/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js +++ b/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js @@ -25,17 +25,17 @@ XPCOMUtils.defineLazyModuleGetter(this, XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils", "resource://testing-common/PlacesTestUtils.jsm"); do_get_profile(); const DIRECTORY_LINKS_FILE = "directoryLinks.json"; const DIRECTORY_FRECENCY = 1000; const SUGGESTED_FRECENCY = Infinity; -const kURLData = {"directory": [{"url":"http://example.com","title":"LocalSource"}]}; +const kURLData = {"directory": [{"url":"http://example.com", "title":"LocalSource"}]}; const kTestURL = 'data:application/json,' + JSON.stringify(kURLData); // DirectoryLinksProvider preferences const kLocalePref = DirectoryLinksProvider._observedPrefs.prefSelectedLocale; const kSourceUrlPref = DirectoryLinksProvider._observedPrefs.linksURL; const kPingUrlPref = "browser.newtabpage.directory.ping"; const kNewtabEnhancedPref = "browser.newtabpage.enhanced"; @@ -52,17 +52,17 @@ const kPingUrl = kBaseUrl + kPingPath; // app/profile/firefox.js are not avaialble in xpcshell: hence, preset them Services.prefs.setCharPref(kLocalePref, "en-US"); Services.prefs.setCharPref(kSourceUrlPref, kTestURL); Services.prefs.setCharPref(kPingUrlPref, kPingUrl); Services.prefs.setBoolPref(kNewtabEnhancedPref, true); const kHttpHandlerData = {}; -kHttpHandlerData[kExamplePath] = {"directory": [{"url":"http://example.com","title":"RemoteSource"}]}; +kHttpHandlerData[kExamplePath] = {"directory": [{"url":"http://example.com", "title":"RemoteSource"}]}; const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream", "setInputStream"); var gLastRequestPath; var suggestedTile1 = { @@ -1433,17 +1433,17 @@ add_task(function* test_DirectoryLinksPr // exhaust daily views DirectoryLinksProvider._addFrequencyCapView("1") do_check_true(DirectoryLinksProvider._testFrequencyCapLimits("1")); DirectoryLinksProvider._addFrequencyCapView("1") do_check_false(DirectoryLinksProvider._testFrequencyCapLimits("1")); // now step into the furture let _wasTodayOrig = DirectoryLinksProvider._wasToday; - DirectoryLinksProvider._wasToday = function () {return false;} + DirectoryLinksProvider._wasToday = function () { return false; } // exhaust total views DirectoryLinksProvider._addFrequencyCapView("1") do_check_true(DirectoryLinksProvider._testFrequencyCapLimits("1")); DirectoryLinksProvider._addFrequencyCapView("1") // reached totalViews 4, should return false do_check_false(DirectoryLinksProvider._testFrequencyCapLimits("1")); // add more views by updating configuration @@ -1482,17 +1482,17 @@ add_task(function* test_DirectoryLinksPr do_check_true(DirectoryLinksProvider._testFrequencyCapLimits("bar.com")); // report site action yield DirectoryLinksProvider.reportSitesAction([{ link: { targetedSite: "foo.com", url: "bar.com" }, - isPinned: function() {return false;}, + isPinned: function() { return false; }, }], "view", 0); // read file content and ensure that view counters are updated let data = yield readJsonFile(DirectoryLinksProvider._frequencyCapFilePath); do_check_eq(data["bar.com"].dailyViews, 1); do_check_eq(data["bar.com"].totalViews, 1); yield promiseCleanDirectoryLinksProvider(); @@ -1526,19 +1526,19 @@ add_task(function* test_DirectoryLinksPr uri: NetUtil.newURI(landingUrl), title: "HELLO", visits: [{ visitDate: Date.now()*1000, transitionType: Ci.nsINavHistoryService.TRANSITION_LINK }] }, { - handleError: function () {do_check_true(false);}, + handleError: function () { do_check_true(false); }, handleResult: function () {}, - handleCompletion: function () {resolve();} + handleCompletion: function () { resolve(); } } ); }); function UrlDeletionTester() { this.promise = new Promise(resolve => { this.onDeleteURI = (directoryLinksProvider, link) => { resolve(); @@ -1823,18 +1823,18 @@ add_task(function* test_blockSuggestedTi }); // ensure that tile is suggested let suggestedLink = DirectoryLinksProvider._updateSuggestedTile(); do_check_true(suggestedLink.frecent_sites); // block suggested tile in a regular way DirectoryLinksProvider.reportSitesAction([{ - isPinned: function() {return false;}, - link: Object.assign({frecency: 1000},suggestedLink) + isPinned: function() { return false; }, + link: Object.assign({frecency: 1000}, suggestedLink) }], "block", 0); // suggested tile still must be recommended suggestedLink = DirectoryLinksProvider._updateSuggestedTile(); do_check_true(suggestedLink.frecent_sites); // timestamp suggested_block in the frequency cap object DirectoryLinksProvider.handleSuggestedTileBlock();
--- a/browser/modules/test/xpcshell/test_SitePermissions.js +++ b/browser/modules/test/xpcshell/test_SitePermissions.js @@ -3,18 +3,18 @@ */ "use strict"; Components.utils.import("resource:///modules/SitePermissions.jsm"); Components.utils.import("resource://gre/modules/Services.jsm"); add_task(function* testPermissionsListing() { Assert.deepEqual(SitePermissions.listPermissions().sort(), - ["camera","cookie","desktop-notification","geo","image", - "indexedDB","install","microphone","popup", "screen"], + ["camera", "cookie", "desktop-notification", "geo", "image", + "indexedDB", "install", "microphone", "popup", "screen"], "Correct list of all permissions"); }); add_task(function* testGetAllByURI() { // check that it returns an empty array on an invalid URI // like a file URI, which doesn't support site permissions let wrongURI = Services.io.newURI("file:///example.js", null, null) Assert.deepEqual(SitePermissions.getAllByURI(wrongURI), []);
--- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -1066,21 +1066,16 @@ toolbar .toolbarbutton-1 > .toolbarbutto #sidebar-button@toolbarButtonPressed@ { -moz-image-region: rect(36px, 1368px, 72px, 1332px); } #panic-button@toolbarButtonPressed@ { -moz-image-region: rect(36px, 1404px, 72px, 1368px); } - - #add-share-provider { - list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png); - -moz-image-region: rect(0px, 192px, 32px, 160px); - } } toolbar .toolbarbutton-1:not([type="menu-button"]), toolbar .toolbarbutton-1 > .toolbarbutton-menubutton-button { min-width: 28px; } #main-window:not([customizing]) .toolbarbutton-1[disabled="true"] > .toolbarbutton-icon,
--- a/browser/themes/shared/menupanel.inc.css +++ b/browser/themes/shared/menupanel.inc.css @@ -309,16 +309,21 @@ toolbarpaletteitem[place="palette"] > #panic-button { -moz-image-region: rect(0, 1792px, 64px, 1728px); } toolbaritem[sdkstylewidget="true"] > toolbarbutton { -moz-image-region: rect(0, 1664px, 64px, 1600px); } + #add-share-provider { + list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png); + -moz-image-region: rect(0px, 192px, 32px, 160px); + } + /* Footer and wide panel control icons */ #edit-controls@inAnyPanel@ > toolbarbutton, #zoom-controls@inAnyPanel@ > toolbarbutton, toolbarpaletteitem[place="palette"] > #edit-controls > toolbarbutton, toolbarpaletteitem[place="palette"] > #zoom-controls > toolbarbutton { list-style-image: url(chrome://browser/skin/menuPanel-small@2x.png); }
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Buttons.jsm +++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Buttons.jsm @@ -15,17 +15,17 @@ Cu.import("resource://gre/modules/Task.j this.Buttons = { init(libDir) { createWidget(); }, configurations: { navBarButtons: { - applyConfig: Task.async(() =>{ + applyConfig: Task.async(() => { let browserWindow = Services.wm.getMostRecentWindow("navigator:browser"); CustomizableUI.addWidgetToArea("screenshot-widget", CustomizableUI.AREA_NAVBAR); }), }, tabsToolbarButtons: { applyConfig: Task.async(() => { let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
deleted file mode 100644 --- a/devtools/client/inspector/inspector.css +++ /dev/null @@ -1,30 +0,0 @@ -/* vim:set ts=2 sw=2 sts=2 et: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Set the minimum width for the side bar so, all tabs are - properly visible. The value can be decreased when bug 1281789 - is fixed and the all-tabs-menu is available again. */ -#inspector-sidebar-container { - overflow: hidden; - min-width: 450px; - position: relative; -} - -#inspector-sidebar { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -/* Override `-moz-user-focus:ignore;` from toolkit/content/minimal-xul.css */ -.inspector-tabpanel > * { - -moz-user-focus: normal; -} - -#inspector-sidebar-toggle-box { - line-height: initial; -}
--- a/devtools/client/inspector/inspector.xul +++ b/devtools/client/inspector/inspector.xul @@ -1,15 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <!-- This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?> -<?xml-stylesheet href="chrome://devtools/content/inspector/inspector.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/inspector.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/rules.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/computed.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/fonts.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/layout.css" type="text/css"?> <?xml-stylesheet href="chrome://devtools/skin/animationinspector.css" type="text/css"?> <?xml-stylesheet href="resource://devtools/client/shared/components/sidebar-toggle.css" type="text/css"?>
--- a/devtools/client/jar.mn +++ b/devtools/client/jar.mn @@ -138,17 +138,16 @@ devtools.jar: content/framework/toolbox-init.js (framework/toolbox-init.js) content/framework/options-panel.css (framework/options-panel.css) content/framework/toolbox-process-window.xul (framework/toolbox-process-window.xul) * content/framework/toolbox-process-window.js (framework/toolbox-process-window.js) content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul) * content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css) content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png) content/inspector/inspector.xul (inspector/inspector.xul) - content/inspector/inspector.css (inspector/inspector.css) content/framework/connect/connect.xhtml (framework/connect/connect.xhtml) content/framework/connect/connect.css (framework/connect/connect.css) content/framework/connect/connect.js (framework/connect/connect.js) content/shared/widgets/graphs-frame.xhtml (shared/widgets/graphs-frame.xhtml) content/shared/widgets/cubic-bezier.css (shared/widgets/cubic-bezier.css) content/shared/widgets/mdn-docs.css (shared/widgets/mdn-docs.css) content/shared/widgets/filter-widget.css (shared/widgets/filter-widget.css) content/shared/widgets/spectrum.css (shared/widgets/spectrum.css)
--- a/devtools/client/shared/widgets/filter-widget.css +++ b/devtools/client/shared/widgets/filter-widget.css @@ -37,20 +37,16 @@ /* Make sure that when the presets list is shown, it has a fixed width */ width: 200px; padding-left: 6px; transition: width .1s; flex-shrink: 0; border-left: 1px solid var(--theme-splitter-color); } -.presets-list .add { - margin-top: 4px; -} - #filter-container:not(.show-presets) .presets-list { width: 0; border-left: none; padding-left: 0; } #filter-container.show-presets .filters-list { width: 300px; @@ -68,16 +64,17 @@ /* The filters and presets list both have footers displayed at the bottom. These footers have some input (taking up as much space as possible) and an add button next */ .footer { display: flex; margin: 10px 3px; + align-items: center; } .footer :not(button) { flex-grow: 1; margin-right: 3px; } /* Styles for 1 filter function item */
--- a/devtools/client/themes/inspector.css +++ b/devtools/client/themes/inspector.css @@ -20,16 +20,23 @@ display: flex; } #inspector-toolbar.devtools-toolbar .devtools-toolbar-spacer { flex-grow: 1; display: inline-block; } +/* Add element toolbar button */ +#inspector-element-add-button::before { + background-image: url("chrome://devtools/skin/images/add.svg"); + list-style-image: url("chrome://devtools/skin/images/add.svg"); + -moz-user-focus: normal; +} + #inspector-searchlabel { overflow: hidden; margin-inline-end: 2px; } #inspector-search { flex: unset; } @@ -47,16 +54,31 @@ .theme-dark #inspector-searchbox, .theme-light #inspector-searchbox { line-height: 19px; } .theme-firebug #inspector-searchbox { line-height: 17px; } +/* Eyedropper toolbar button */ + +#inspector-eyedropper-toggle { + /* hidden by default, until we can check that the required highlighter exists */ + display: none; +} + +#inspector-eyedropper-toggle::before { + background-image: var(--eyedropper-image); +} + +#inspector-sidebar-toggle-box { + line-height: initial; +} + #inspector-breadcrumbs-toolbar { padding: 0px; border-bottom-width: 0px; border-top-width: 1px; display: block; position: relative; } @@ -92,31 +114,35 @@ } #inspector-breadcrumbs .breadcrumbs-widget-item { white-space: nowrap; flex-shrink: 0; font: message-box; } -/* Eyedropper toolbar button */ - -#inspector-eyedropper-toggle { - /* hidden by default, until we can check that the required highlighter exists */ - display: none; +/* Set the minimum width for the side bar so, all tabs are + properly visible. The value can be decreased when bug 1281789 + is fixed and the all-tabs-menu is available again. */ +#inspector-sidebar-container { + overflow: hidden; + min-width: 450px; + position: relative; } -#inspector-eyedropper-toggle::before { - background-image: var(--eyedropper-image); +#inspector-sidebar { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; } -/* Add element toolbar button */ -#inspector-element-add-button::before { - background-image: url("chrome://devtools/skin/images/add.svg"); - list-style-image: url("chrome://devtools/skin/images/add.svg"); +/* Override `-moz-user-focus:ignore;` from toolkit/content/minimal-xul.css */ +.inspector-tabpanel > * { -moz-user-focus: normal; } /* "no results" warning message displayed in the ruleview and in the computed view */ #ruleview-no-results, #computedview-no-results { color: var(--theme-body-color-inactive);
--- a/devtools/client/webconsole/test/browser_webconsole_output_06.js +++ b/devtools/client/webconsole/test/browser_webconsole_output_06.js @@ -151,16 +151,25 @@ var inputTests = [ input: '({0: "a", 1: "b", 2: "c", 3: "d", 4: "e", 5: "f", 6: "g", ' + '7: "h", 8: "i", 9: "j", 10: "k", 11: "l", m: "n"})', output: 'Object { 0: "a", 1: "b", 2: "c", 3: "d", 4: "e", 5: "f", ' + '6: "g", 7: "h", 8: "i", 9: "j", 3 more\u2026 }', printOutput: "[object Object]", inspectable: true, variablesViewLabel: "Object", }, + + // 17 + { + input: '({" ": "a"})', + output: 'Object { : "a" }', + printOutput: "[object Object]", + inspectable: true, + variablesViewLabel: "Object", + }, ]; function test() { requestLongerTimeout(2); Task.spawn(function* () { let {tab} = yield loadTab(TEST_URI); let hud = yield openConsole(tab); return checkOutputForInputs(hud, inputTests);
--- a/devtools/server/actors/object.js +++ b/devtools/server/actors/object.js @@ -1790,23 +1790,28 @@ DebuggerServer.ObjectActorPreviewers.Obj }; return true; }, function PseudoArray({obj, hooks}, grip, rawObj) { let length = 0; - // Making sure all keys are numbers from 0 to length-1 let keys = obj.getOwnPropertyNames(); if (keys.length == 0) { return false; } + + // Making sure that all keys are array indices, that is: + // `ToString(ToUint32(key)) === key && key !== "4294967295"`. + // Also ensuring that the keys are consecutive and start at "0", + // this implies checking `key !== "4294967295"` is not necessary. for (let key of keys) { - if (isNaN(key) || key != length++) { + let numKey = key >>> 0; // ToUint32(key) + if (numKey + '' != key || numKey != length++) { return false; } } grip.preview = { kind: "ArrayLike", length: length, };
--- a/testing/talos/talos/profiler/symbolication.py +++ b/testing/talos/talos/profiler/symbolication.py @@ -11,16 +11,26 @@ import re import subprocess import urllib2 import zipfile from distutils import spawn from symFileManager import SymFileManager from symbolicationRequest import SymbolicationRequest from symLogging import LogMessage +""" +Symbolication is broken when using type 'str' in python 2.7, so we use 'basestring'. +But for python 3.0 compatibility, 'basestring' isn't defined, but the 'str' type works. +So we force 'basestring' to 'str'. +""" +try: + basestring +except NameError: + basestring = str + class SymbolError(Exception): pass class OSXSymbolDumper: def __init__(self): @@ -261,17 +271,17 @@ class ProfileSymbolicator: self.main_start_time = profile_start_time else: # We're a subprocess, so our markers will need to be offset # by the difference between the parent process start time # and this process's start time. delta_time = profile_start_time - self.main_start_time for i, thread in enumerate(profile_json["threads"]): - if isinstance(thread, str): + if isinstance(thread, basestring): thread_json = json.loads(thread) self.symbolicate_profile(thread_json) profile_json["threads"][i] = json.dumps(thread_json) else: for marker in thread["markers"]["data"]: if marker[1]: marker[1] += delta_time @@ -292,26 +302,26 @@ class ProfileSymbolicator: addresses, shared_libraries) # print symbols_to_resolve symbolication_table = self._resolve_symbols(symbols_to_resolve) self._substitute_symbols_v3(profile_json, symbolication_table) def _find_addresses_v3(self, profile_json): addresses = set() for thread in profile_json["threads"]: - if isinstance(thread, str): + if isinstance(thread, basestring): continue for s in thread["stringTable"]: if s[0:2] == "0x": addresses.add(s) return addresses def _substitute_symbols_v3(self, profile_json, symbolication_table): for thread in profile_json["threads"]: - if isinstance(thread, str): + if isinstance(thread, basestring): continue for i, s in enumerate(thread["stringTable"]): thread["stringTable"][i] = symbolication_table.get(s, s) def _find_addresses_v2(self, profile_json): addresses = set() for thread in profile_json["threads"]: for sample in thread["samples"]:
--- a/testing/talos/talos/profiler/symbolicationRequest.py +++ b/testing/talos/talos/profiler/symbolicationRequest.py @@ -11,30 +11,40 @@ import urllib2 # Precompiled regex for validating lib names # Empty lib name means client couldn't associate frame with any lib gLibNameRE = re.compile("[0-9a-zA-Z_+\-\.]*$") # Maximum number of times a request can be forwarded to a different server # for symbolication. Also prevents loops. MAX_FORWARDED_REQUESTS = 3 +""" +Symbolication is broken when using type 'str' in python 2.7, so we use 'basestring'. +But for python 3.0 compatibility, 'basestring' isn't defined, but the 'str' type works. +So we force 'basestring' to 'str'. +""" +try: + basestring +except NameError: + basestring = str + class ModuleV3: def __init__(self, libName, breakpadId): self.libName = libName self.breakpadId = breakpadId def getModuleV3(libName, breakpadId): - if not isinstance(libName, str) or not gLibNameRE.match(libName): + if not isinstance(libName, basestring) or not gLibNameRE.match(libName): LogTrace("Bad library name: " + str(libName)) return None - if not isinstance(breakpadId, str): + if not isinstance(breakpadId, basestring): LogTrace("Bad breakpad id: " + str(breakpadId)) return None return ModuleV3(libName, breakpadId) class SymbolicationRequest:
--- a/toolkit/.eslintrc +++ b/toolkit/.eslintrc @@ -1,32 +1,32 @@ { // When adding items to this file please check for effects on all of toolkit // and browser "rules": { // Braces only needed for multi-line arrow function blocks // "arrow-body-style": [2, "as-needed"], // Require spacing around => - // "arrow-spacing": 2, + "arrow-spacing": 2, // Always require spacing around a single line block - // "block-spacing": 1, + "block-spacing": 2, // No newline before open brace for a block // "brace-style": 2, // No space before always a space after a comma - // "comma-spacing": [2, {"before": false, "after": true}], + "comma-spacing": [2, {"before": false, "after": true}], // Commas at the end of the line not the start // "comma-style": 2, // Don't require spaces around computed properties - // "computed-property-spacing": [2, "never"], + "computed-property-spacing": [2, "never"], // Functions must always return something or nothing "consistent-return": 2, // Require braces around blocks that start a new line // Note that this rule is likely to be overridden on a per-directory basis // very frequently. // "curly": [2, "multi-line"],
--- a/toolkit/components/aboutperformance/content/aboutPerformance.js +++ b/toolkit/components/aboutperformance/content/aboutPerformance.js @@ -125,17 +125,17 @@ let tabFinder = { * In mochi tests, it's possible for this to be called after the * about:performance window has been torn down, which causes `setTimeout` to * throw an NS_ERROR_NOT_INITIALIZED exception. In that case, returning * `undefined` is fine. */ function wait(ms = 0) { try { let resolve; - let p = new Promise(resolve_ => {resolve = resolve_}); + let p = new Promise(resolve_ => { resolve = resolve_ }); setTimeout(resolve, ms); return p; } catch (e) { dump("WARNING: wait aborted because of an invalid Window state in aboutPerformance.js.\n"); return undefined; } }
--- a/toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js +++ b/toolkit/components/autocomplete/tests/unit/test_autocomplete_multiple.js @@ -223,18 +223,18 @@ function unregisterAutoCompleteSearch(aS } /** * Test AutoComplete with multiple AutoCompleteSearch sources. */ function run_test() { - var expected1 = ["1","2","3"]; - var expected2 = ["a","b","c"]; + var expected1 = ["1", "2", "3"]; + var expected2 = ["a", "b", "c"]; var search1 = new AutoCompleteSearch("search1", new AutoCompleteResult(expected1, [], [])); var search2 = new AutoCompleteSearch("search2", new AutoCompleteResult(expected2, [], [])); // Register searches so AutoCompleteController can find them registerAutoCompleteSearch(search1); registerAutoCompleteSearch(search2);
--- a/toolkit/components/captivedetect/test/unit/test_captive_portal_not_found.js +++ b/toolkit/components/captivedetect/test/unit/test_captive_portal_not_found.js @@ -35,17 +35,17 @@ function test_portal_not_found() { prepare: function prepare() { do_check_eq(++step, 1); gCaptivePortalDetector.finishPreparation(kInterfaceName); }, complete: function complete(success) { do_check_eq(++step, 2); do_check_true(success); do_check_eq(attempt, 1); - gServer.stop(function() {dump('server stop\n'); do_test_finished(); }); + gServer.stop(function() { dump('server stop\n'); do_test_finished(); }); } }; gCaptivePortalDetector.checkCaptivePortal(kInterfaceName, callback); } function run_test() { run_captivedetect_test(xhr_handler, fakeUIResponse, test_portal_not_found);
--- a/toolkit/components/contentprefs/ContentPrefService2.jsm +++ b/toolkit/components/contentprefs/ContentPrefService2.jsm @@ -344,17 +344,17 @@ ContentPrefService2.prototype = { removeBySubdomainAndName: function CPS2_removeBySubdomainAndName(group, name, context, callback) { checkGroupArg(group); this._remove(group, name, true, context, callback); }, - removeGlobal: function CPS2_removeGlobal(name, context,callback) { + removeGlobal: function CPS2_removeGlobal(name, context, callback) { this._remove(null, name, false, context, callback); }, _remove: function CPS2__remove(group, name, includeSubdomains, context, callback) { group = this._parseGroup(group); checkNameArg(name); checkCallbackArg(callback, false);
--- a/toolkit/components/contentprefs/nsContentPrefService.js +++ b/toolkit/components/contentprefs/nsContentPrefService.js @@ -223,17 +223,17 @@ ContentPrefService.prototype = { Cr.NS_ERROR_ILLEGAL_VALUE); var group = this._parseGroupParam(aGroup); if (aContext && aContext.usePrivateBrowsing) { if (this._privModeStorage.has(group, aName)) { let value = this._privModeStorage.get(group, aName); if (aCallback) { - this._scheduleCallback(function() {aCallback.onResult(value);}); + this._scheduleCallback(function() { aCallback.onResult(value); }); return undefined; } return value; } // if we don't have a pref specific to this private mode browsing // session, to try to get one from normal mode } @@ -592,17 +592,17 @@ ContentPrefService.prototype = { tm.mainThread.dispatch(func, Ci.nsIThread.DISPATCH_NORMAL); }, _selectPref: function ContentPrefService__selectPref(aGroup, aSetting, aCallback) { let value = undefined; if (this._cache.has(aGroup, aSetting)) { value = this._cache.get(aGroup, aSetting); if (aCallback) { - this._scheduleCallback(function() {aCallback.onResult(value);}); + this._scheduleCallback(function() { aCallback.onResult(value); }); return undefined; } return value; } try { this._stmtSelectPref.params.group = aGroup; this._stmtSelectPref.params.setting = aSetting; @@ -642,17 +642,17 @@ ContentPrefService.prototype = { return this.__stmtSelectGlobalPref; }, _selectGlobalPref: function ContentPrefService__selectGlobalPref(aName, aCallback) { let value = undefined; if (this._cache.has(null, aName)) { value = this._cache.get(null, aName); if (aCallback) { - this._scheduleCallback(function() {aCallback.onResult(value);}); + this._scheduleCallback(function() { aCallback.onResult(value); }); return undefined; } return value; } try { this._stmtSelectGlobalPref.params.name = aName;
--- a/toolkit/components/contentprefs/tests/unit/test_stringGroups.js +++ b/toolkit/components/contentprefs/tests/unit/test_stringGroups.js @@ -74,32 +74,32 @@ function run_test() { } { // test getPrefs returns the same prefs do_check_eq(cps.setPref(stringObjectURI, "test.5", 5), undefined); do_check_eq(cps.setPref(stringURI, "test.2", 2), undefined); do_check_eq(cps.setPref(uri, "test.1", 1), undefined); - enumerateAndCheck(cps.getPrefs(uri), 8, ["test.1","test.2","test.5"]); - enumerateAndCheck(cps.getPrefs(stringURI), 8, ["test.1","test.2","test.5"]); - enumerateAndCheck(cps.getPrefs(stringObjectURI), 8, ["test.1","test.2","test.5"]); + enumerateAndCheck(cps.getPrefs(uri), 8, ["test.1", "test.2", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringURI), 8, ["test.1", "test.2", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringObjectURI), 8, ["test.1", "test.2", "test.5"]); do_check_eq(cps.setPref(uri, "test.4", 4), undefined); do_check_eq(cps.setPref(stringObjectURI, "test.0", 0), undefined); - enumerateAndCheck(cps.getPrefs(uri), 12, ["test.0","test.1","test.2","test.4","test.5"]); - enumerateAndCheck(cps.getPrefs(stringURI), 12, ["test.0","test.1","test.2","test.4","test.5"]); - enumerateAndCheck(cps.getPrefs(stringObjectURI), 12, ["test.0","test.1","test.2","test.4","test.5"]); + enumerateAndCheck(cps.getPrefs(uri), 12, ["test.0", "test.1", "test.2", "test.4", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringURI), 12, ["test.0", "test.1", "test.2", "test.4", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringObjectURI), 12, ["test.0", "test.1", "test.2", "test.4", "test.5"]); do_check_eq(cps.setPref(stringURI, "test.3", 3), undefined); - enumerateAndCheck(cps.getPrefs(uri), 15, ["test.0","test.1","test.2","test.3","test.4","test.5"]); - enumerateAndCheck(cps.getPrefs(stringURI), 15, ["test.0","test.1","test.2","test.3","test.4","test.5"]); - enumerateAndCheck(cps.getPrefs(stringObjectURI), 15, ["test.0","test.1","test.2","test.3","test.4","test.5"]); + enumerateAndCheck(cps.getPrefs(uri), 15, ["test.0", "test.1", "test.2", "test.3", "test.4", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringURI), 15, ["test.0", "test.1", "test.2", "test.3", "test.4", "test.5"]); + enumerateAndCheck(cps.getPrefs(stringObjectURI), 15, ["test.0", "test.1", "test.2", "test.3", "test.4", "test.5"]); } } function do_check_thrown (aCallback) { var exThrown = false; try { aCallback(); do_throw("NS_ERROR_ILLEGAL_VALUE should have been thrown here");
--- a/toolkit/components/cookie/content/cookieAcceptDialog.js +++ b/toolkit/components/cookie/content/cookieAcceptDialog.js @@ -30,19 +30,19 @@ function onload() document.getElementById("ok").label = dialog.getAttribute("acceptLabel"); document.getElementById("ok").accessKey = dialog.getAttribute("acceptKey"); document.getElementById("Button2").label = dialog.getAttribute("extra1Label"); document.getElementById("Button2").accessKey = dialog.getAttribute("extra1Key"); document.getElementById("cancel").label = dialog.getAttribute("cancelLabel"); document.getElementById("cancel").accessKey = dialog.getAttribute("cancelKey"); // hook up button icons where implemented - document.getElementById("ok").setAttribute("icon","accept"); - document.getElementById("cancel").setAttribute("icon","cancel"); - document.getElementById("disclosureButton").setAttribute("icon","properties"); + document.getElementById("ok").setAttribute("icon", "accept"); + document.getElementById("cancel").setAttribute("icon", "cancel"); + document.getElementById("disclosureButton").setAttribute("icon", "properties"); if (!gDateService) { const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1"; const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; gDateService = Components.classes[nsScriptableDateFormat_CONTRACTID] .getService(nsIScriptableDateFormat); } @@ -53,74 +53,74 @@ function onload() showDetails = cookieBundle.getString('showDetails'); } if (!hideDetails) { hideDetails = cookieBundle.getString('hideDetails'); } detailsAccessKey = cookieBundle.getString('detailsAccessKey'); if (document.getElementById('infobox').hidden) { - document.getElementById('disclosureButton').setAttribute("label",showDetails); + document.getElementById('disclosureButton').setAttribute("label", showDetails); } else { - document.getElementById('disclosureButton').setAttribute("label",hideDetails); + document.getElementById('disclosureButton').setAttribute("label", hideDetails); } - document.getElementById('disclosureButton').setAttribute("accesskey",detailsAccessKey); + document.getElementById('disclosureButton').setAttribute("accesskey", detailsAccessKey); if ("arguments" in window && window.arguments.length >= 1 && window.arguments[0]) { try { params = window.arguments[0].QueryInterface(nsIDialogParamBlock); var objects = params.objects; - var cookie = params.objects.queryElementAt(0,nsICookie); + var cookie = params.objects.queryElementAt(0, nsICookie); var cookiesFromHost = params.GetInt(nsICookieAcceptDialog.COOKIESFROMHOST); var messageFormat; if (params.GetInt(nsICookieAcceptDialog.CHANGINGCOOKIE)) messageFormat = 'permissionToModifyCookie'; else if (cookiesFromHost > 1) messageFormat = 'permissionToSetAnotherCookie'; else if (cookiesFromHost == 1) messageFormat = 'permissionToSetSecondCookie'; else messageFormat = 'permissionToSetACookie'; var hostname = params.GetString(nsICookieAcceptDialog.HOSTNAME); var messageText; if (cookie) - messageText = cookieBundle.getFormattedString(messageFormat,[hostname, cookiesFromHost]); + messageText = cookieBundle.getFormattedString(messageFormat, [hostname, cookiesFromHost]); else // No cookies means something went wrong. Bring up the dialog anyway // to not make the mess worse. - messageText = cookieBundle.getFormattedString(messageFormat,["",cookiesFromHost]); + messageText = cookieBundle.getFormattedString(messageFormat, ["", cookiesFromHost]); var messageParent = document.getElementById("dialogtextbox"); var messageParagraphs = messageText.split("\n"); // use value for the header, so it doesn't wrap. var headerNode = document.getElementById("dialog-header"); - headerNode.setAttribute("value",messageParagraphs[0]); + headerNode.setAttribute("value", messageParagraphs[0]); // use childnodes here, the text can wrap for (var i = 1; i < messageParagraphs.length; i++) { var descriptionNode = document.createElement("description"); text = document.createTextNode(messageParagraphs[i]); descriptionNode.appendChild(text); messageParent.appendChild(descriptionNode); } if (cookie) { - document.getElementById('ifl_name').setAttribute("value",cookie.name); - document.getElementById('ifl_value').setAttribute("value",cookie.value); - document.getElementById('ifl_host').setAttribute("value",cookie.host); - document.getElementById('ifl_path').setAttribute("value",cookie.path); + document.getElementById('ifl_name').setAttribute("value", cookie.name); + document.getElementById('ifl_value').setAttribute("value", cookie.value); + document.getElementById('ifl_host').setAttribute("value", cookie.host); + document.getElementById('ifl_path').setAttribute("value", cookie.path); document.getElementById('ifl_isSecure').setAttribute("value", cookie.isSecure ? cookieBundle.getString("forSecureOnly") : cookieBundle.getString("forAnyConnection") ); - document.getElementById('ifl_expires').setAttribute("value",GetExpiresString(cookie.expires)); + document.getElementById('ifl_expires').setAttribute("value", GetExpiresString(cookie.expires)); document.getElementById('ifl_isDomain').setAttribute("value", cookie.isDomain ? cookieBundle.getString("domainColon") : cookieBundle.getString("hostColon") ); } // set default result to not accept the cookie params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, 0); // and to not persist @@ -139,21 +139,21 @@ function onload() } catch (ex) {} } function showhideinfo() { var infobox=document.getElementById('infobox'); if (infobox.hidden) { - infobox.setAttribute("hidden","false"); - document.getElementById('disclosureButton').setAttribute("label",hideDetails); + infobox.setAttribute("hidden", "false"); + document.getElementById('disclosureButton').setAttribute("label", hideDetails); } else { - infobox.setAttribute("hidden","true"); - document.getElementById('disclosureButton').setAttribute("label",showDetails); + infobox.setAttribute("hidden", "true"); + document.getElementById('disclosureButton').setAttribute("label", showDetails); } sizeToContent(); } function cookieAcceptNormal() { // accept the cookie normally params.SetInt(nsICookieAcceptDialog.ACCEPT_COOKIE, nsICookiePromptService.ACCEPT_COOKIE);
--- a/toolkit/components/ctypes/tests/unit/test_jsctypes.js +++ b/toolkit/components/ctypes/tests/unit/test_jsctypes.js @@ -2647,17 +2647,17 @@ function run_single_closure_tests(librar var fn_v_t = ctypes.FunctionType(ctypes.default_abi, ctypes.void_t, []).ptr; fn_v_t(function() {})(); // Don't crash // Code evaluated in a sandbox uses (and pushes) a separate JSContext. // Make sure that we don't run into an assertion caused by a cx stack // mismatch with the cx stashed in the closure. try { var sb = Components.utils.Sandbox("http://www.example.com"); - sb.fn = fn_v_t(function() {sb.foo = {};}); + sb.fn = fn_v_t(function() { sb.foo = {}; }); Components.utils.evalInSandbox("fn();", sb); } catch (e) {} // Components not available in workers. // Make sure that a void callback can't return an error sentinel. var sentinelThrew = false; try { fn_v_t(function() {}, null, -1); } catch (e) { @@ -2729,19 +2729,19 @@ function run_variadic_tests(library) { add_char_short_int_va(result.address(), ctypes.char(5), ctypes.short(7), ctypes.uint32_t(11)); do_check_eq(result.value, 3 + 5 + 7 + 11); - result = ctypes.int32_t.array(3)([1,1,1]), - v1 = ctypes.int32_t.array(4)([1,2,3,5]), - v2 = ctypes.int32_t.array(3)([7,11,13]), + result = ctypes.int32_t.array(3)([1, 1, 1]), + v1 = ctypes.int32_t.array(4)([1, 2, 3, 5]), + v2 = ctypes.int32_t.array(3)([7, 11, 13]), vector_add_va = library.declare("test_vector_add_va_cdecl", ctypes.default_abi, ctypes.int32_t.ptr, ctypes.uint8_t, ctypes.uint8_t, "..."), // Note that vector_add_va zeroes out result first. vec_sum = vector_add_va(2, 3, result, v1, v2); do_check_eq(vec_sum.contents, 8); do_check_eq(result[0], 8); do_check_eq(result[1], 13);
--- a/toolkit/components/exthelper/extApplication.js +++ b/toolkit/components/exthelper/extApplication.js @@ -358,17 +358,17 @@ Preference.prototype = { return this.branch.setValue(this._name, aValue); }, get locked() { return this.branch._prefs.prefIsLocked(this.name); }, set locked(aValue) { - this.branch._prefs[ aValue ? "lockPref" : "unlockPref" ](this.name); + this.branch._prefs[aValue ? "lockPref" : "unlockPref"](this.name); }, get modified() { return this.branch._prefs.prefHasUserValue(this.name); }, get branch() { return this._branch;
--- a/toolkit/components/feeds/FeedProcessor.js +++ b/toolkit/components/feeds/FeedProcessor.js @@ -88,17 +88,17 @@ function isIArray(a) { return isIID(a, Ci.nsIArray); } function isIFeedContainer(a) { return isIID(a, Ci.nsIFeedContainer); } function stripTags(someHTML) { - return someHTML.replace(/<[^>]+>/g,""); + return someHTML.replace(/<[^>]+>/g, ""); } /** * Searches through an array of links and returns a JS array * of matching property bags. */ const IANA_URI = "http://www.iana.org/assignments/relation/"; function findAtomLinks(rel, links) { @@ -223,26 +223,26 @@ function Feed() { this.baseURI = null; this.enclosureCount = 0; this.type = Ci.nsIFeed.TYPE_FEED; } Feed.prototype = { searchLists: { title: ["title", "rss1:title", "atom03:title", "atom:title"], - subtitle: ["description","dc:description","rss1:description", - "atom03:tagline","atom:subtitle"], - items: ["items","atom03_entries","entries"], - id: ["atom:id","rdf:about"], + subtitle: ["description", "dc:description", "rss1:description", + "atom03:tagline", "atom:subtitle"], + items: ["items", "atom03_entries", "entries"], + id: ["atom:id", "rdf:about"], generator: ["generator"], authors : ["authors"], contributors: ["contributors"], - link: [["link",strToURI],["rss1:link",strToURI]], + link: [["link", strToURI], ["rss1:link", strToURI]], categories: ["categories", "dc:subject"], - rights: ["atom03:rights","atom:rights"], + rights: ["atom03:rights", "atom:rights"], cloud: ["cloud"], image: ["image", "rss1:image", "atom:logo"], textInput: ["textInput", "rss1:textinput"], skipDays: ["skipDays"], skipHours: ["skipHours"], updated: ["pubDate", "lastBuildDate", "atom03:modified", "dc:date", "dcterms:modified", "atom:updated"] }, @@ -401,25 +401,25 @@ function Entry() { Entry.prototype = { fields: null, enclosures: null, mediaContent: null, searchLists: { title: ["title", "rss1:title", "atom03:title", "atom:title"], - link: [["link",strToURI],["rss1:link",strToURI]], + link: [["link", strToURI], ["rss1:link", strToURI]], id: [["guid", makePropGetter("guid")], "rdf:about", "atom03:id", "atom:id"], authors : ["authors"], contributors: ["contributors"], summary: ["description", "rss1:description", "dc:description", "atom03:summary", "atom:summary"], - content: ["content:encoded","atom03:content","atom:content"], - rights: ["atom03:rights","atom:rights"], + content: ["content:encoded", "atom03:content", "atom:content"], + rights: ["atom03:rights", "atom:rights"], published: ["pubDate", "atom03:issued", "dcterms:issued", "atom:published"], updated: ["pubDate", "atom03:modified", "dc:date", "dcterms:modified", "atom:updated"] }, normalize: function Entry_normalize() { fieldsToObj(this, this.searchLists); @@ -654,23 +654,23 @@ function Generator() { Generator.prototype = { get attributes() { return this._attributes; }, set attributes(value) { this._attributes = value; - this.version = this._attributes.getValueFromName("","version"); - var uriAttribute = this._attributes.getValueFromName("","uri") || - this._attributes.getValueFromName("","url"); + this.version = this._attributes.getValueFromName("", "version"); + var uriAttribute = this._attributes.getValueFromName("", "uri") || + this._attributes.getValueFromName("", "url"); this.uri = strToURI(uriAttribute, this.baseURI); // RSS1 - uriAttribute = this._attributes.getValueFromName(RDF_NS,"resource"); + uriAttribute = this._attributes.getValueFromName(RDF_NS, "resource"); if (uriAttribute) { this.agent = uriAttribute; this.uri = strToURI(uriAttribute, this.baseURI); } }, // XPCOM stuff classID: GENERATOR_CLASSID, @@ -701,17 +701,17 @@ Person.prototype = { * Map a list of fields into properties on a container. * * @param container An nsIFeedContainer * @param fields A list of fields to search for. List members can * be a list, in which case the second member is * transformation function (like parseInt). */ function fieldsToObj(container, fields) { - var props,prop,field,searchList; + var props, prop, field, searchList; for (var key in fields) { searchList = fields[key]; for (var i=0; i < searchList.length; ++i) { props = searchList[i]; prop = null; field = isArray(props) ? props[0] : props; try { prop = container.fields.getProperty(field); @@ -770,17 +770,17 @@ function rssGuid(s, guid) { // // or, delightfully, a field like this: // // <dc:creator>Simon St.Laurent (mailto:simonstl@simonstl.com)</dc:creator> // // We want to split this up and assign it to corresponding Atom // fields. // -function rssAuthor(s,author) { +function rssAuthor(s, author) { author.QueryInterface(Ci.nsIFeedPerson); // check for RSS2 string format var chars = s.trim(); var matches = chars.match(/(.*)\((.*)\)/); var emailCheck = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (matches) { var match1 = matches[1].trim(); @@ -1395,17 +1395,17 @@ FeedProcessor.prototype = { // // "A title with <b>bold</b> and <i>italics</i>." // // The Atom spec explicitly says the div is not part of the content, // and explicitly allows whitespace collapsing. // if ((this._result.version == "atom" || this._result.version == "atom03") && this._textConstructs[key] != null) { - var type = attributes.getValueFromName("","type"); + var type = attributes.getValueFromName("", "type"); if (type != null && type.indexOf("xhtml") >= 0) { this._xhtmlHandler = new XHTMLHandler(this, (this._result.version == "atom")); this._reader.contentHandler = this._xhtmlHandler; return; } } @@ -1540,28 +1540,28 @@ FeedProcessor.prototype = { createInstance(Ci.nsIMutableArray)); } newProp = container.getProperty(elementInfo.fieldName); // XXX This QI should not be necessary, but XPConnect seems to fly // off the handle in the browser, and loses track of the interface // on large files. Bug 335638. newProp.QueryInterface(Ci.nsIMutableArray); - newProp.appendElement(obj,false); + newProp.appendElement(obj, false); // If new object is an nsIFeedContainer, we want to deal with // its member nsIPropertyBag instead. if (isIFeedContainer(obj)) newProp = obj.fields; } else { // If it doesn't, set it. if (!prop) { - container.setPropertyAsInterface(elementInfo.fieldName,obj); + container.setPropertyAsInterface(elementInfo.fieldName, obj); } newProp = container.getProperty(elementInfo.fieldName); } // make our new state name, and push the property onto the stack var newState = "IN_" + elementInfo.fieldName.toUpperCase(); this._stack.push([newProp, newState, obj]); return newState; @@ -1624,17 +1624,17 @@ FeedProcessor.prototype = { _findRSSVersion: function FP__findRSSVersion(attributes) { var versionAttr = attributes.getValueFromName("", "version").trim(); var versions = { "0.91":"rss091", "0.92":"rss092", "0.93":"rss093", "0.94":"rss094" } if (versions[versionAttr]) return versions[versionAttr]; - if (versionAttr.substr(0,2) != "2.") + if (versionAttr.substr(0, 2) != "2.") return "rssUnknown"; return "rss2"; }, // unknown element values are returned here. See startElement above // for how this works. returnFromExtHandler: function FP_returnExt(uri, localName, chars, attributes) { @@ -1707,17 +1707,17 @@ FeedProcessor.prototype = { // we need to know about that. if (this._textConstructs[propName] != null && this._handlerStack[this._depth].containerClass !== null) { var newProp = Cc[TEXTCONSTRUCT_CONTRACTID]. createInstance(Ci.nsIFeedTextConstruct); newProp.text = chars; // Look up the default type in our table var type = this._textConstructs[propName]; - var typeAttribute = attributes.getValueFromName("","type"); + var typeAttribute = attributes.getValueFromName("", "type"); if (this._result.version == "atom" && typeAttribute != null) { type = typeAttribute; } else if (this._result.version == "atom03" && typeAttribute != null) { if (typeAttribute.toLowerCase().indexOf("xhtml") >= 0) { type = "xhtml"; } else if (typeAttribute.toLowerCase().indexOf("html") >= 0) {
--- a/toolkit/components/filepicker/content/filepicker.js +++ b/toolkit/components/filepicker/content/filepicker.js @@ -806,17 +806,17 @@ function processPathEntry(path, fileArra // Unescape quotes filePath = filePath.replace(/\\\"/g, "\""); if (filePath[0] == '/') /* an absolute path was entered */ file.initWithPath(filePath); else if ((filePath.indexOf("/../") > 0) || (filePath.substr(-3) == "/..") || - (filePath.substr(0,3) == "../") || + (filePath.substr(0, 3) == "../") || (filePath == "..")) { /* appendRelativePath doesn't allow .. */ try { file.initWithPath(file.path + "/" + filePath); } catch (e) { dump("Couldn't init path\n"+e); return false; }
--- a/toolkit/components/gfx/SanityTest.js +++ b/toolkit/components/gfx/SanityTest.js @@ -304,14 +304,14 @@ SanityTest.prototype = { var sanityTest = Services.ww.openWindow(null, "chrome://gfxsanity/content/sanityparent.html", "Test Page", "width=" + PAGE_WIDTH + ",height=" + PAGE_HEIGHT + ",chrome,titlebar=0,scrollbars=0", null); // There's no clean way to have an invisible window and ensure it's always painted. // Instead, move the window far offscreen so it doesn't show up during launch. - sanityTest.moveTo(100000000,1000000000); + sanityTest.moveTo(100000000, 1000000000); tester.scheduleTest(sanityTest); }, }; this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SanityTest]);
--- a/toolkit/components/jsdownloads/test/unit/head.js +++ b/toolkit/components/jsdownloads/test/unit/head.js @@ -68,20 +68,20 @@ XPCOMUtils.defineLazyServiceGetter(this, const TEST_TARGET_FILE_NAME = "test-download.txt"; const TEST_STORE_FILE_NAME = "test-downloads.json"; const TEST_REFERRER_URL = "http://www.example.com/referrer.html"; const TEST_DATA_SHORT = "This test string is downloaded."; // Generate using gzipCompressString in TelemetryController.jsm. const TEST_DATA_SHORT_GZIP_ENCODED_FIRST = [ - 31,139,8,0,0,0,0,0,0,3,11,201,200,44,86,40,73,45,46,81,40,46,41,202,204 + 31, 139, 8, 0, 0, 0, 0, 0, 0, 3, 11, 201, 200, 44, 86, 40, 73, 45, 46, 81, 40, 46, 41, 202, 204 ]; const TEST_DATA_SHORT_GZIP_ENCODED_SECOND = [ - 75,87,0,114,83,242,203,243,114,242,19,83,82,83,244,0,151,222,109,43,31,0,0,0 + 75, 87, 0, 114, 83, 242, 203, 243, 114, 242, 19, 83, 82, 83, 244, 0, 151, 222, 109, 43, 31, 0, 0, 0 ]; const TEST_DATA_SHORT_GZIP_ENCODED = TEST_DATA_SHORT_GZIP_ENCODED_FIRST.concat(TEST_DATA_SHORT_GZIP_ENCODED_SECOND); /** * All the tests are implemented with add_task, this starts them automatically. */ function run_test()
--- a/toolkit/components/microformats/microformat-shiv.js +++ b/toolkit/components/microformats/microformat-shiv.js @@ -326,17 +326,17 @@ var Microformats; // jshint ignore:line this.options.baseUrl = this.document.location.href; } } catch (e) { // there is no alt action } // find base tag to set baseUrl - baseTag = modules.domUtils.querySelector(this.document,'base'); + baseTag = modules.domUtils.querySelector(this.document, 'base'); if (baseTag) { href = modules.domUtils.getAttribute(baseTag, 'href'); if (href) { this.options.baseUrl = href; } } // get path to rootNode @@ -816,17 +816,17 @@ var Microformats; // jshint ignore:line out = this.getValueTitle(node); } if (!out) { out = modules.domUtils.getAttrValFromTagList(node, ['abbr'], 'title'); } if (!out) { - out = modules.domUtils.getAttrValFromTagList(node, ['data','input'], 'value'); + out = modules.domUtils.getAttrValFromTagList(node, ['data', 'input'], 'value'); } if (node.name === 'br' || node.name === 'hr') { out = ''; } if (!out) { out = modules.domUtils.getAttrValFromTagList(node, ['img', 'area'], 'alt'); @@ -877,34 +877,34 @@ var Microformats; // jshint ignore:line out = this.getValueTitle(node); } if (!out) { out = modules.domUtils.getAttrValFromTagList(node, ['a', 'area'], 'href'); } if (!out) { - out = modules.domUtils.getAttrValFromTagList(node, ['img','audio','video','source'], 'src'); + out = modules.domUtils.getAttrValFromTagList(node, ['img', 'audio', 'video', 'source'], 'src'); } if (!out) { out = modules.domUtils.getAttrValFromTagList(node, ['object'], 'data'); } // if we have no protocol separator, turn relative url to absolute url if (out && out !== '' && out.indexOf('://') === -1) { out = modules.url.resolve(out, this.options.baseUrl); } if (!out) { out = modules.domUtils.getAttrValFromTagList(node, ['abbr'], 'title'); } if (!out) { - out = modules.domUtils.getAttrValFromTagList(node, ['data','input'], 'value'); + out = modules.domUtils.getAttrValFromTagList(node, ['data', 'input'], 'value'); } if (!out) { out = modules.text.parse(this.document, node, this.options.textFormat); } return (out) ? out : ''; }, @@ -972,18 +972,18 @@ var Microformats; // jshint ignore:line * * @param {DOM Node} node * @param {String} id * @param {String} propertyName */ appendRootID: function(node, id, propertyName) { if (this.hasRootID(node, id, propertyName) === false) { var rootids = []; - if (modules.domUtils.hasAttribute(node,'rootids')) { - rootids = modules.domUtils.getAttributeList(node,'rootids'); + if (modules.domUtils.hasAttribute(node, 'rootids')) { + rootids = modules.domUtils.getAttributeList(node, 'rootids'); } rootids.push('id' + id + '-' + propertyName); modules.domUtils.setAttribute(node, 'rootids', rootids.join(' ')); } }, /** @@ -991,17 +991,17 @@ var Microformats; // jshint ignore:line * * @param {DOM Node} node * @param {String} id * @param {String} propertyName * @return {Boolean} */ hasRootID: function(node, id, propertyName) { var rootids = []; - if (!modules.domUtils.hasAttribute(node,'rootids')) { + if (!modules.domUtils.hasAttribute(node, 'rootids')) { return false; } rootids = modules.domUtils.getAttributeList(node, 'rootids'); return (rootids.indexOf('id' + id + '-' + propertyName) > -1); }, @@ -1048,17 +1048,17 @@ var Microformats; // jshint ignore:line if (out.length > 0) { if (propertyType === 'p') { return modules.text.parseText( this.document, out.join(' '), this.options.textFormat); } if (propertyType === 'u') { return out.join(''); } if (propertyType === 'dt') { - return modules.dates.concatFragments(out,this.options.dateFormat).toString(this.options.dateFormat); + return modules.dates.concatFragments(out, this.options.dateFormat).toString(this.options.dateFormat); } return undefined; } return null; }, /** @@ -1150,17 +1150,17 @@ var Microformats; // jshint ignore:line } out.typeVersion = 'v2'; } // test for property prefix - v2 z = context.propertyPrefixes.length; while (z--) { if (modules.utils.startWith(item, context.propertyPrefixes[z])) { - out.properties.push([item,'v2']); + out.properties.push([item, 'v2']); } } // test for mapped root classnames v1 for (key in modules.maps) { if (modules.maps.hasOwnProperty(key)) { // only add a root once if (modules.maps[key].root === item && out.root.indexOf(key) === -1) { @@ -1204,20 +1204,20 @@ var Microformats; // jshint ignore:line if (prop.uf.indexOf(v2Name) > -1 && out.root.indexOf(v2Name) === -1) { out.root.push(v2Name); out.typeVersion = 'v1'; } y++; } //only add property once if (out.properties.indexOf(propName) === -1) { - out.properties.push([propName,'v1']); + out.properties.push([propName, 'v1']); } } else if (out.properties.indexOf(propName) === -1) { - out.properties.push([propName,'v1']); + out.properties.push([propName, 'v1']); } } } } } } @@ -1420,17 +1420,17 @@ var Microformats; // jshint ignore:line */ removeRootIds: function(rootNode) { var arr, i; arr = modules.domUtils.getNodesByAttribute(rootNode, 'rootids'); i = arr.length; while (i--) { - modules.domUtils.removeAttribute(arr[i],'rootids'); + modules.domUtils.removeAttribute(arr[i], 'rootids'); } }, /** * removes all changes made to the DOM * * @param {DOM Node} rootNode @@ -1656,17 +1656,17 @@ var Microformats; // jshint ignore:line /** * get an implied name value from a node * * @param {DOM Node} node * @return {String || null} */ modules.Parser.prototype.getNameAttr = function(node) { - var value = modules.domUtils.getAttrValFromTagList(node, ['img','area'], 'alt'); + var value = modules.domUtils.getAttrValFromTagList(node, ['img', 'area'], 'alt'); if (!value) { value = modules.domUtils.getAttrValFromTagList(node, ['abbr'], 'title'); } return value; }; /** @@ -1745,25 +1745,25 @@ var Microformats; // jshint ignore:line * @param {String} parentPropertyName * @param {String} propertyName * @param {String} value * @return {Object} */ modules.Parser.prototype.getAltValue = function(uf, parentPropertyName, propertyName, value) { if (uf.value && !uf.altValue) { // first p-name of the h-* child - if (modules.utils.startWith(parentPropertyName,'p-') && propertyName === 'p-name') { + if (modules.utils.startWith(parentPropertyName, 'p-') && propertyName === 'p-name') { uf.altValue = {name: propertyName, value: value}; } // if it's an e-* property element - if (modules.utils.startWith(parentPropertyName,'e-') && modules.utils.startWith(propertyName,'e-')) { + if (modules.utils.startWith(parentPropertyName, 'e-') && modules.utils.startWith(propertyName, 'e-')) { uf.altValue = {name: propertyName, value: value}; } // if it's an u-* property element - if (modules.utils.startWith(parentPropertyName,'u-') && propertyName === 'u-url') { + if (modules.utils.startWith(parentPropertyName, 'u-') && propertyName === 'u-url') { uf.altValue = {name: propertyName, value: value}; } } return uf; }; /** @@ -1806,17 +1806,17 @@ var Microformats; // jshint ignore:line // has no latitude or longitude property if (uf.properties.latitude === undefined || uf.properties.longitude === undefined ) { geoPair = (uf.properties.name)? uf.properties.name[0] : null; geoPair = (!geoPair && uf.properties.value)? uf.properties.value : geoPair; if (geoPair) { // allow for the use of a ';' as in microformats and also ',' as in Geo URL - geoPair = geoPair.replace(';',','); + geoPair = geoPair.replace(';', ','); // has sep char if (geoPair.indexOf(',') > -1 ) { parts = geoPair.split(','); // only correct if we have two or more parts if (parts.length > 1) { @@ -1852,17 +1852,17 @@ var Microformats; // jshint ignore:line * @param {Object} uf * @return {Object} */ modules.Parser.prototype.impliedBackwardComp = function(node, uf, parentClasses) { // look for pattern in parent classes like "p-geo h-geo" // these are structures built from backwards compat parsing of geo if (parentClasses.root.length === 1 && parentClasses.properties.length === 1) { - if (parentClasses.root[0].replace('h-','') === this.removePropPrefix(parentClasses.properties[0][0])) { + if (parentClasses.root[0].replace('h-', '') === this.removePropPrefix(parentClasses.properties[0][0])) { // if microformat has no properties apply the impliedName rule to get value from containing node // this will get value from html such as <abbr class="geo" title="30.267991;-97.739568">Brighton</abbr> if ( modules.utils.hasProperties(uf.properties) === false ) { uf = this.impliedName( node, uf ); } } } @@ -1998,17 +1998,17 @@ var Microformats; // jshint ignore:line modules.Parser.prototype.removeIncludes = function(rootNode) { var arr, i; // remove all the items that were added as includes arr = modules.domUtils.getNodesByAttribute(rootNode, 'data-include'); i = arr.length; while (i--) { - modules.domUtils.removeChild(rootNode,arr[i]); + modules.domUtils.removeChild(rootNode, arr[i]); } }; } // check parser module is loaded @@ -2981,18 +2981,18 @@ var Microformats; // jshint ignore:line * creates DOM objects needed to resolve URLs */ init: function() { //this._domParser = new DOMParser(); this._domParser = modules.domUtils.getDOMParser(); // do not use a head tag it does not work with IE9 this._html = '<base id="base" href=""></base><a id="link" href=""></a>'; this._nodes = this._domParser.parseFromString( this._html, 'text/html' ); - this._baseNode = modules.domUtils.getElementById(this._nodes,'base'); - this._linkNode = modules.domUtils.getElementById(this._nodes,'link'); + this._baseNode = modules.domUtils.getElementById(this._nodes, 'base'); + this._linkNode = modules.domUtils.getElementById(this._nodes, 'link'); }, /** * resolves url to absolute version using baseUrl * * @param {String} url * @param {String} baseUrl @@ -3155,17 +3155,17 @@ var Microformats; // jshint ignore:line if (dateString.indexOf('Z') > -1) { this.autoProfile.tzZulu = 'Z'; } if (dateString.toUpperCase().indexOf('T') === -1) { this.autoProfile.sep = ' '; } - dateString = dateString.toUpperCase().replace(' ','T'); + dateString = dateString.toUpperCase().replace(' ', 'T'); // break on 'T' divider or space if (dateString.indexOf('T') > -1) { parts = dateString.split('T'); datePart = parts[0]; timePart = parts[1]; // zulu UTC @@ -3718,17 +3718,17 @@ var Microformats; // jshint ignore:line /** * parses text by splitting it into an array of time and timezone strings * * @param {String} text * @return {Array} Modules.ISODate */ splitTimeAndZone: function ( text ) { var out = [text], - chars = ['-','+','z','Z'], + chars = ['-', '+', 'z', 'Z'], i = chars.length; while (i--) { if (text.indexOf(chars[i]) > -1) { out[0] = text.slice( 0, text.indexOf(chars[i]) ); out.push( text.slice( text.indexOf(chars[i]) ) ); break; } @@ -4204,17 +4204,17 @@ var Microformats; // jshint ignore:line 'map': 'dt-listed' }, 'dtexpired': { 'map': 'dt-expired' }, 'location': {}, 'price': {}, 'item': { - 'uf': ['h-card','a-adr','h-geo'] + 'uf': ['h-card', 'a-adr', 'h-geo'] }, 'summary': { 'map': 'p-name' }, 'description': { 'map': 'e-description' }, 'listing': {} @@ -4418,48 +4418,48 @@ var Microformats; // jshint ignore:line 'relAlt': ['self', 'bookmark'] } } }; modules.rels = { // xfn - 'friend': [ 'yes','external'], - 'acquaintance': [ 'yes','external'], - 'contact': [ 'yes','external'], - 'met': [ 'yes','external'], - 'co-worker': [ 'yes','external'], - 'colleague': [ 'yes','external'], - 'co-resident': [ 'yes','external'], - 'neighbor': [ 'yes','external'], - 'child': [ 'yes','external'], - 'parent': [ 'yes','external'], - 'sibling': [ 'yes','external'], - 'spouse': [ 'yes','external'], - 'kin': [ 'yes','external'], - 'muse': [ 'yes','external'], - 'crush': [ 'yes','external'], - 'date': [ 'yes','external'], - 'sweetheart': [ 'yes','external'], - 'me': [ 'yes','external'], + 'friend': [ 'yes', 'external'], + 'acquaintance': [ 'yes', 'external'], + 'contact': [ 'yes', 'external'], + 'met': [ 'yes', 'external'], + 'co-worker': [ 'yes', 'external'], + 'colleague': [ 'yes', 'external'], + 'co-resident': [ 'yes', 'external'], + 'neighbor': [ 'yes', 'external'], + 'child': [ 'yes', 'external'], + 'parent': [ 'yes', 'external'], + 'sibling': [ 'yes', 'external'], + 'spouse': [ 'yes', 'external'], + 'kin': [ 'yes', 'external'], + 'muse': [ 'yes', 'external'], + 'crush': [ 'yes', 'external'], + 'date': [ 'yes', 'external'], + 'sweetheart': [ 'yes', 'external'], + 'me': [ 'yes', 'external'], // other rel=* - 'license': [ 'yes','yes'], - 'nofollow': [ 'no','external'], - 'tag': [ 'no','yes'], - 'self': [ 'no','external'], - 'bookmark': [ 'no','external'], - 'author': [ 'no','external'], - 'home': [ 'no','external'], - 'directory': [ 'no','external'], - 'enclosure': [ 'no','external'], - 'pronunciation': [ 'no','external'], - 'payment': [ 'no','external'], - 'principles': [ 'no','external'] + 'license': [ 'yes', 'yes'], + 'nofollow': [ 'no', 'external'], + 'tag': [ 'no', 'yes'], + 'self': [ 'no', 'external'], + 'bookmark': [ 'no', 'external'], + 'author': [ 'no', 'external'], + 'home': [ 'no', 'external'], + 'directory': [ 'no', 'external'], + 'enclosure': [ 'no', 'external'], + 'pronunciation': [ 'no', 'external'], + 'payment': [ 'no', 'external'], + 'principles': [ 'no', 'external'] }; var External = { version: modules.version, livingStandard: modules.livingStandard
--- a/toolkit/components/microformats/update/update.js +++ b/toolkit/components/microformats/update/update.js @@ -25,25 +25,25 @@ var deployDir = '../' var path = require('path'), request = require('request'), fs = require('fs-extra'), download = require('download-github-repo'); var repo = 'glennjones/microformat-shiv', - tempDir = path.resolve(__dirname,'temp-repo'), + tempDir = path.resolve(__dirname, 'temp-repo'), deployDirResolved = path.resolve(__dirname, deployDir), pathList = [ - ['/modern/microformat-shiv-modern.js','/microformat-shiv.js'], - ['/lib','/test/lib'], - ['/test/interface-tests','/test/interface-tests'], - ['/test/module-tests','/test/module-tests'], - ['/test/standards-tests','/test/standards-tests'], - ['/test/static','/test/static'] + ['/modern/microformat-shiv-modern.js', '/microformat-shiv.js'], + ['/lib', '/test/lib'], + ['/test/interface-tests', '/test/interface-tests'], + ['/test/module-tests', '/test/module-tests'], + ['/test/standards-tests', '/test/standards-tests'], + ['/test/static', '/test/static'] ]; getLastBuildState( repo, function( err, buildState) { if (buildState) { console.log('last build state:', buildState); @@ -126,17 +126,17 @@ function addNewFiles( pathList, deployDi /** * gets the repo version number * * @return {String} */ function getRepoVersion() { - var pack = fs.readFileSync(path.resolve(tempDir,'package.json'), {encoding: 'utf8'}); + var pack = fs.readFileSync(path.resolve(tempDir, 'package.json'), {encoding: 'utf8'}); if (pack) { pack = JSON.parse(pack) if (pack && pack.version) { return pack.version; } } return ''; }
--- a/toolkit/components/narrate/NarrateControls.jsm +++ b/toolkit/components/narrate/NarrateControls.jsm @@ -116,46 +116,39 @@ function NarrateControls(mm, win) { this.voiceSelect.element.id = "voice-select"; win.speechSynthesis.addEventListener("voiceschanged", this); dropdown.querySelector("#narrate-voices").appendChild( this.voiceSelect.element); dropdown.addEventListener("click", this, true); let rateRange = dropdown.querySelector("#narrate-rate > input"); - rateRange.addEventListener("input", this); - rateRange.addEventListener("mousedown", this); - rateRange.addEventListener("mouseup", this); + rateRange.addEventListener("change", this); // The rate is stored as an integer. rateRange.value = branch.getIntPref("rate"); if (this._setupVoices(branch.getCharPref("voice"))) { // We disable this entire feature if there are no synthesis voices. dropdown.querySelector("#narrate-toggle").hidden = false; } let tb = win.document.getElementById("reader-toolbar"); tb.appendChild(dropdown); } NarrateControls.prototype = { handleEvent: function(evt) { switch (evt.type) { - case "mousedown": - this._rateMousedown = true; - break; - case "mouseup": - this._rateMousedown = false; - break; - case "input": - this._onRateInput(evt); - break; case "change": - this._onVoiceChange(); + if (evt.target.id == "narrate-rate-input") { + this._onRateInput(evt); + } else { + this._onVoiceChange(); + } break; case "click": this._onButtonClick(evt); break; case "voiceschanged": // We disable this entire feature if there are no synthesis voices. this._doc.getElementById("narrate-toggle").hidden = !this._setupVoices(Services.prefs.getCharPref("narrate.voice")); @@ -185,20 +178,18 @@ NarrateControls.prototype = { }); this.voiceSelect.addOptions(options, selectedVoice); } return !!options.length; }, _onRateInput: function(evt) { - if (!this._rateMousedown) { - AsyncPrefs.set("narrate.rate", parseInt(evt.target.value, 10)); - this.narrator.setRate(this._convertRate(evt.target.value)); - } + AsyncPrefs.set("narrate.rate", parseInt(evt.target.value, 10)); + this.narrator.setRate(this._convertRate(evt.target.value)); }, _onVoiceChange: function() { let voice = this.voice; AsyncPrefs.set("narrate.voice", voice); this.narrator.setVoice(voice); },
--- a/toolkit/components/narrate/test/browser_narrate.js +++ b/toolkit/components/narrate/test/browser_narrate.js @@ -77,17 +77,17 @@ add_task(function* testNarrate() { NarrateTestUtils.isStartedState(content, ok); let eventUtils = NarrateTestUtils.getEventUtils(content); promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphstart"); prefChanged = NarrateTestUtils.waitForPrefChange("narrate.rate"); $(NarrateTestUtils.RATE).focus(); - eventUtils.sendKey("PAGE_UP", content); + eventUtils.sendKey("UP", content); let newspeechinfo = (yield promiseEvent).detail; is(newspeechinfo.paragraph, speechinfo.paragraph, "same paragraph"); isnot(newspeechinfo.rate, speechinfo.rate, "rate changed"); yield prefChanged; promiseEvent = ContentTaskUtils.waitForEvent(content, "paragraphend"); $(NarrateTestUtils.STOP).click(); yield promiseEvent;
--- a/toolkit/components/passwordmgr/content/passwordManagerExceptions.js +++ b/toolkit/components/passwordmgr/content/passwordManagerExceptions.js @@ -21,19 +21,19 @@ var rejectsTreeView = { getCellValue : function(row, column) {}, getCellText : function(row, column) { var rv=""; if (column.id=="rejectCol") { rv = rejects[row].host; } return rv; }, - isSeparator : function(index) {return false;}, + isSeparator : function(index) { return false; }, isSorted: function() { return false; }, - isContainer : function(index) {return false;}, + isContainer : function(index) { return false; }, cycleHeader : function(column) {}, getRowProperties : function(row) { return ""; }, getColumnProperties : function(column) { return ""; }, getCellProperties : function(row, column) { if (column.element.getAttribute("id") == "rejectCol") return "ltr"; return "";
--- a/toolkit/components/perfmonitoring/PerformanceWatcher.jsm +++ b/toolkit/components/perfmonitoring/PerformanceWatcher.jsm @@ -154,17 +154,17 @@ ChildManager.getWindow = function(key) { return this._get(this._windows, key); }; ChildManager._windows = new Map(); ChildManager._get = function(map, key) { let result = map.get(key); if (!result) { result = new ChildManager(map, key); - map.set(key ,result); + map.set(key, result); } return result; }; let gListeners = new WeakMap(); /** * An object in charge of managing all the observables for a single * target (window/addon/all windows/all addons).
--- a/toolkit/components/perfmonitoring/tests/browser/browser_Addons_sample/bootstrap.js +++ b/toolkit/components/perfmonitoring/tests/browser/browser_Addons_sample/bootstrap.js @@ -38,21 +38,21 @@ function burnCPU() { * Spend some time in CPOW. */ function burnCPOW() { gBurnCPOW(); } let gBurnCPOW = null; function burnContentCPU() { - setTimeout(() => {try { + setTimeout(() => { try { gBurnContentCPU() } catch (ex) { dump(`test-addon error: ${ex}\n`); - }}, 0); + } }, 0); } let gBurnContentCPU = null; let gTab = null; let gTabBrowser = null; function startup() { Services.obs.addObserver(burnCPU, TOPIC_BURNCPU, false);
--- a/toolkit/components/places/PlacesUtils.jsm +++ b/toolkit/components/places/PlacesUtils.jsm @@ -923,17 +923,17 @@ this.PlacesUtils = { titleString = this._uri(uriString).QueryInterface(Ci.nsIURL) .fileName; } catch (e) {} } // note: this._uri() will throw if uriString is not a valid URI if (this._uri(uriString)) { nodes.push({ uri: uriString, - title: titleString ? titleString : uriString , + title: titleString ? titleString : uriString, type: this.TYPE_X_MOZ_URL }); } } break; } case this.TYPE_UNICODE: { let parts = blob.split("\n"); for (let i = 0; i < parts.length; i++) {
--- a/toolkit/components/places/tests/autocomplete/test_416214.js +++ b/toolkit/components/places/tests/autocomplete/test_416214.js @@ -29,10 +29,10 @@ var kTitles = [ // Add pages that match the tag addPageBook(0, 0, 0, [1]); addPageBook(1, 0, 0, [1]); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Make sure tag matches return the right url as well as '+' remain escaped", - theTag, [0,1]], + theTag, [0, 1]], ];
--- a/toolkit/components/places/tests/autocomplete/test_417798.js +++ b/toolkit/components/places/tests/autocomplete/test_417798.js @@ -23,14 +23,14 @@ addPageBook(1, 0, 0, undefined, undefine // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Match non-javascript: with plain search", "a", [0]], ["1: Match non-javascript: with almost javascript:", "javascript", [0]], ["2: Match javascript:", - "javascript:", [0,1]], + "javascript:", [0, 1]], ["3: Match nothing with non-first javascript:", "5 javascript:", []], ["4: Match javascript: with multi-word search", "javascript: 5", [1]], ];
--- a/toolkit/components/places/tests/autocomplete/test_418257.js +++ b/toolkit/components/places/tests/autocomplete/test_418257.js @@ -18,26 +18,26 @@ var kURIs = [ var kTitles = [ "tag1", "tag2", "tag3", ]; // Add pages with varying number of tags addPageBook(0, 0, 0, [0]); -addPageBook(1, 0, 0, [0,1]); -addPageBook(2, 0, 0, [0,2]); -addPageBook(3, 0, 0, [0,1,2]); +addPageBook(1, 0, 0, [0, 1]); +addPageBook(2, 0, 0, [0, 2]); +addPageBook(3, 0, 0, [0, 1, 2]); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Make sure tags come back in the title when matching tags", "page1 tag", [0]], ["1: Check tags in title for page2", "page2 tag", [1]], ["2: Make sure tags appear even when not matching the tag", "page3", [2]], ["3: Multiple tags come in commas for page4", "page4", [3]], ["4: Extra test just to make sure we match the title", - "tag2", [1,3]], + "tag2", [1, 3]], ];
--- a/toolkit/components/places/tests/autocomplete/test_empty_search.js +++ b/toolkit/components/places/tests/autocomplete/test_empty_search.js @@ -26,33 +26,33 @@ addPageBook(1, 0, 0); // bookmark addPageBook(2, 0); // history typed addPageBook(3, 0, 0); // bookmark typed // Unvisited bookmark addPageBook(4, 0, 0); // bookmark addPageBook(5, 0, 0); // bookmark typed // Set some pages as typed -markTyped([2,3,5], 0); +markTyped([2, 3, 5], 0); // Remove pages from history to treat them as unvisited -removePages([4,5]); +removePages([4, 5]); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Match everything", - "foo", [0,1,2,3,4,5]], + "foo", [0, 1, 2, 3, 4, 5]], ["1: Match only typed history", - "foo ^ ~", [2,3]], + "foo ^ ~", [2, 3]], ["2: Drop-down empty search matches only typed history", - "", [2,3]], + "", [2, 3]], ["3: Drop-down empty search matches only bookmarks", - "", [2,3], matchBookmarks], + "", [2, 3], matchBookmarks], ["4: Drop-down empty search matches only typed", - "", [2,3], matchTyped], + "", [2, 3], matchTyped], ]; function matchBookmarks() { prefs.setBoolPref("browser.urlbar.suggest.history", false); prefs.setBoolPref("browser.urlbar.suggest.bookmark", true); clearPrefs(); }
--- a/toolkit/components/places/tests/autocomplete/test_keyword_search.js +++ b/toolkit/components/places/tests/autocomplete/test_keyword_search.js @@ -40,23 +40,23 @@ var kTitles = [ "Keyword title", "abc", "xyz" ]; // Add the keyword bookmark addPageBook(0, 0, 1, [], keyKey); // Add in the "fake pages" for keyword searches -gPages[1] = [1,2]; -gPages[2] = [2,2]; -gPages[3] = [3,2]; -gPages[4] = [4,2]; +gPages[1] = [1, 2]; +gPages[2] = [2, 2]; +gPages[3] = [3, 2]; +gPages[4] = [4, 2]; // Add a page into history addPageBook(5, 2); -gPages[6] = [6,2]; +gPages[6] = [6, 2]; // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Plain keyword query", keyKey + " term", [1]], ["1: Multi-word keyword query", keyKey + " multi word", [2]],
--- a/toolkit/components/places/tests/autocomplete/test_match_beginning.js +++ b/toolkit/components/places/tests/autocomplete/test_match_beginning.js @@ -31,15 +31,15 @@ var gTests = [ "b", [1]], ["2: Match at the beginning of urls", "x", [0]], ["3: Match at the beginning of urls", "y", [1]], // Tests after this one will match against word boundaries and anywhere ["4: Sanity check that matching anywhere finds more", - "a", [0,1], + "a", [0, 1], () => setBehavior(1)], ]; function setBehavior(aType) { prefs.setIntPref("browser.urlbar.matchBehavior", aType); }
--- a/toolkit/components/places/tests/autocomplete/test_multi_word_search.js +++ b/toolkit/components/places/tests/autocomplete/test_multi_word_search.js @@ -32,18 +32,18 @@ addPageBook(2, 0, 0); addPageBook(3, 0, 1); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: Match 2 terms all in url", "c d", [0]], ["1: Match 1 term in url and 1 term in title", - "b e", [0,1]], + "b e", [0, 1]], ["2: Match 3 terms all in title; display bookmark title if matched", - "b a z", [1,3]], + "b a z", [1, 3]], ["3: Match 2 terms in url and 1 in title; make sure bookmark title is used for search", "k f t", [2]], ["4: Match 3 terms in url and 1 in title", "d i g z", [1]], ["5: Match nothing", "m o z i", []], ];
--- a/toolkit/components/places/tests/autocomplete/test_special_search.js +++ b/toolkit/components/places/tests/autocomplete/test_special_search.js @@ -45,105 +45,105 @@ addPageBook(7, 1, 1); // title and url // Tagged pages addPageBook(8, 0, 0, [1]); // tagged page addPageBook(9, 1, 1, [1]); // title addPageBook(10, 0, 0, [1]); // url addPageBook(11, 1, 1, [1]); // title and url // Remove pages from history to treat them as unvisited, so pages that do have // visits are 0,1,2,3,5,10 -removePages([4,6,7,8,9,11]); +removePages([4, 6, 7, 8, 9, 11]); // Set some pages as typed -markTyped([0,10], 0); +markTyped([0, 10], 0); markTyped([3], 1); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ // Test restricting searches ["0: History restrict", - "^", [0,1,2,3,5,10]], + "^", [0, 1, 2, 3, 5, 10]], ["1: Star restrict", - "*", [4,5,6,7,8,9,10,11]], + "*", [4, 5, 6, 7, 8, 9, 10, 11]], ["2: Tag restrict", - "+", [8,9,10,11]], + "+", [8, 9, 10, 11]], // Test specials as any word position ["3: Special as first word", - "^ foo bar", [1,2,3,5,10]], + "^ foo bar", [1, 2, 3, 5, 10]], ["4: Special as middle word", - "foo ^ bar", [1,2,3,5,10]], + "foo ^ bar", [1, 2, 3, 5, 10]], ["5: Special as last word", - "foo bar ^", [1,2,3,5,10]], + "foo bar ^", [1, 2, 3, 5, 10]], // Test restricting and matching searches with a term ["6.1: foo ^ -> history", - "foo ^", [1,2,3,5,10]], + "foo ^", [1, 2, 3, 5, 10]], ["6.2: foo | -> history (change pref)", - "foo |", [1,2,3,5,10], () => changeRestrict("history", "|")], + "foo |", [1, 2, 3, 5, 10], () => changeRestrict("history", "|")], ["7.1: foo * -> is star", - "foo *", [5,6,7,8,9,10,11], () => resetRestrict("history")], + "foo *", [5, 6, 7, 8, 9, 10, 11], () => resetRestrict("history")], ["7.2: foo | -> is star (change pref)", - "foo |", [5,6,7,8,9,10,11], () => changeRestrict("bookmark", "|")], + "foo |", [5, 6, 7, 8, 9, 10, 11], () => changeRestrict("bookmark", "|")], ["8.1: foo # -> in title", - "foo #", [1,3,5,7,8,9,10,11], () => resetRestrict("bookmark")], + "foo #", [1, 3, 5, 7, 8, 9, 10, 11], () => resetRestrict("bookmark")], ["8.2: foo | -> in title (change pref)", - "foo |", [1,3,5,7,8,9,10,11], () => changeRestrict("title", "|")], + "foo |", [1, 3, 5, 7, 8, 9, 10, 11], () => changeRestrict("title", "|")], ["9.1: foo @ -> in url", - "foo @", [2,3,6,7,10,11], () => resetRestrict("title")], + "foo @", [2, 3, 6, 7, 10, 11], () => resetRestrict("title")], ["9.2: foo | -> in url (change pref)", - "foo |", [2,3,6,7,10,11], () => changeRestrict("url", "|")], + "foo |", [2, 3, 6, 7, 10, 11], () => changeRestrict("url", "|")], ["10: foo + -> is tag", - "foo +", [8,9,10,11], () => resetRestrict("url")], + "foo +", [8, 9, 10, 11], () => resetRestrict("url")], ["10.2: foo | -> is tag (change pref)", - "foo |", [8,9,10,11], () => changeRestrict("tag", "|")], + "foo |", [8, 9, 10, 11], () => changeRestrict("tag", "|")], ["10.3: foo ~ -> is typed", - "foo ~", [3,10], () => resetRestrict("tag")], + "foo ~", [3, 10], () => resetRestrict("tag")], ["10.4: foo | -> is typed (change pref)", - "foo |", [3,10], () => changeRestrict("typed", "|")], + "foo |", [3, 10], () => changeRestrict("typed", "|")], // Test various pairs of special searches ["11: foo ^ * -> history, is star", - "foo ^ *", [5,10], () => resetRestrict("typed")], + "foo ^ *", [5, 10], () => resetRestrict("typed")], ["12: foo ^ # -> history, in title", - "foo ^ #", [1,3,5,10]], + "foo ^ #", [1, 3, 5, 10]], ["13: foo ^ @ -> history, in url", - "foo ^ @", [2,3,10]], + "foo ^ @", [2, 3, 10]], ["14: foo ^ + -> history, is tag", "foo ^ +", [10]], ["14.1: foo ^ ~ -> history, is typed", - "foo ^ ~", [3,10]], + "foo ^ ~", [3, 10]], ["15: foo * # -> is star, in title", - "foo * #", [5,7,8,9,10,11]], + "foo * #", [5, 7, 8, 9, 10, 11]], ["16: foo * @ -> is star, in url", - "foo * @", [6,7,10,11]], + "foo * @", [6, 7, 10, 11]], ["17: foo * + -> same as +", - "foo * +", [8,9,10,11]], + "foo * +", [8, 9, 10, 11]], ["17.1: foo * ~ -> is star, is typed", "foo * ~", [10]], ["18: foo # @ -> in title, in url", - "foo # @", [3,7,10,11]], + "foo # @", [3, 7, 10, 11]], ["19: foo # + -> in title, is tag", - "foo # +", [8,9,10,11]], + "foo # +", [8, 9, 10, 11]], ["19.1: foo # ~ -> in title, is typed", - "foo # ~", [3,10]], + "foo # ~", [3, 10]], ["20: foo @ + -> in url, is tag", - "foo @ +", [10,11]], + "foo @ +", [10, 11]], ["20.1: foo @ ~ -> in url, is typed", - "foo @ ~", [3,10]], + "foo @ ~", [3, 10]], ["20.2: foo + ~ -> is tag, is typed", "foo + ~", [10]], // Test default usage by setting certain bits of default.behavior to 1 ["21: foo -> default history", - "foo", [1,2,3,5,10], function () { setPref({ history: true }); }], + "foo", [1, 2, 3, 5, 10], function () { setPref({ history: true }); }], ["22: foo -> default history or is star", - "foo", [1,2,3,5,6,7,8,9,10,11], () => setPref({ history: true, bookmark: true })], + "foo", [1, 2, 3, 5, 6, 7, 8, 9, 10, 11], () => setPref({ history: true, bookmark: true })], ["22.1: foo -> default history or is star, is typed", - "foo", [3,10], () => setPref({ history: true, bookmark: true, "history.onlyTyped": true })], + "foo", [3, 10], () => setPref({ history: true, bookmark: true, "history.onlyTyped": true })], ]; function setPref(aTypes) { clearSuggestPrefs(); for (let type in aTypes) { prefs.setBoolPref("browser.urlbar.suggest." + type, aTypes[type]); }
--- a/toolkit/components/places/tests/autocomplete/test_swap_protocol.js +++ b/toolkit/components/places/tests/autocomplete/test_swap_protocol.js @@ -31,32 +31,32 @@ addPageBook(0, 0); addPageBook(1, 0); addPageBook(2, 0); addPageBook(3, 0); addPageBook(4, 0); addPageBook(5, 0); addPageBook(6, 0); addPageBook(7, 0); -var allSite = [0,1,2,3,4,5]; +var allSite = [0, 1, 2, 3, 4, 5]; // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ ["0: http://www.site matches all site", "http://www.site", allSite], ["1: http://site matches all site", "http://site", allSite], ["2: ftp://ftp.site matches itself", "ftp://ftp.site", [2]], ["3: ftp://site matches all site", "ftp://site", allSite], ["4: https://www.site matches all site", "https://www.site", allSite], ["5: https://site matches all site", "https://site", allSite], ["6: www.site matches all site", "www.site", allSite], - ["7: w matches none of www.", "w", [6,7]], - ["8: http://w matches none of www.", "w", [6,7]], - ["9: http://www.w matches none of www.", "w", [6,7]], + ["7: w matches none of www.", "w", [6, 7]], + ["8: http://w matches none of www.", "w", [6, 7]], + ["9: http://www.w matches none of www.", "w", [6, 7]], ["10: ww matches none of www.", "ww", [7]], ["11: http://ww matches none of www.", "http://ww", [7]], ["12: http://www.ww matches none of www.", "http://www.ww", [7]], ["13: www matches none of www.", "www", [7]], ["14: http://www matches none of www.", "http://www", [7]], ["15: http://www.www matches none of www.", "http://www.www", [7]],
--- a/toolkit/components/places/tests/autocomplete/test_tabmatches.js +++ b/toolkit/components/places/tests/autocomplete/test_tabmatches.js @@ -42,29 +42,29 @@ addOpenPages(4, 1); gPages[5] = [5, 2]; addOpenPages(6, 1); gPages[7] = [7, 3]; var gTests = [ ["0: single result, that is also a tab match", "abc.com", [1]], ["1: two results, one tab match", - "abc", [1,2]], + "abc", [1, 2]], ["2: two results, both tab matches", - "abc", [1,3], + "abc", [1, 3], function() { addOpenPages(2, 1); }], ["3: two results, both tab matches, one has multiple tabs", - "abc", [1,3], + "abc", [1, 3], function() { addOpenPages(2, 5); }], ["4: two results, no tab matches", - "abc", [0,2], + "abc", [0, 2], function() { removeOpenPages(0, 1); removeOpenPages(2, 6); }], ["5: tab match search with restriction character", gTabRestrictChar + " abc", [1], function() { addOpenPages(0, 1);
--- a/toolkit/components/places/tests/autocomplete/test_word_boundary_search.js +++ b/toolkit/components/places/tests/autocomplete/test_word_boundary_search.js @@ -57,28 +57,28 @@ addPageBook(8, 5); // CamelCase addPageBook(9, 0); // Provide for each test: description; search terms; array of gPages indices of // pages that should match; optional function to be run before the test var gTests = [ // Tests after this one will match only on word boundaries ["0: Match 'match' at the beginning or after / or on a CamelCase", - "match", [0,2,4,9], + "match", [0, 2, 4, 9], () => setBehavior(2)], ["1: Match 'dont' at the beginning or after /", - "dont", [1,3,5]], + "dont", [1, 3, 5]], ["2: Match '2' after the slash and after a word (in tags too)", - "2", [2,3,4,5]], + "2", [2, 3, 4, 5]], ["3: Match 't' at the beginning or after /", - "t", [0,1,2,3,4,5,9]], + "t", [0, 1, 2, 3, 4, 5, 9]], ["4: Match 'word' after many consecutive word boundaries", "word", [6]], ["5: Match a word boundary '/' for everything", - "/", [0,1,2,3,4,5,6,7,8,9]], + "/", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]], ["6: Match word boundaries '()_+' that are among word boundaries", "()_+", [6]], ["7: Katakana characters form a string, so match the beginning", katakana[0], [7]], /*["8: Middle of a katakana word shouldn't be matched", katakana[1], []],*/ @@ -91,15 +91,15 @@ var gTests = [ ["12: Extra negative assert that we don't match in the middle", "ch", []], ["13: Don't match one character after a camel-case word boundary (bug 429498)", "atch", []], // Tests after this one will match against word boundaries and anywhere ["14: Match on word boundaries as well as anywhere (bug 429531)", - "tch", [0,1,2,3,4,5,9], + "tch", [0, 1, 2, 3, 4, 5, 9], () => setBehavior(1)], ]; function setBehavior(aType) { prefs.setIntPref("browser.urlbar.matchBehavior", aType); }
--- a/toolkit/components/places/tests/bookmarks/test_bookmarks_reorder.js +++ b/toolkit/components/places/tests/bookmarks/test_bookmarks_reorder.js @@ -25,17 +25,17 @@ add_task(function* invalid_input_throws( /Must provide a sorted array of children GUIDs./); Assert.throws(() => PlacesUtils.bookmarks.reorder("123456789012", [ null ]), /Invalid GUID found in the sorted children array/); Assert.throws(() => PlacesUtils.bookmarks.reorder("123456789012", [ "" ]), /Invalid GUID found in the sorted children array/); Assert.throws(() => PlacesUtils.bookmarks.reorder("123456789012", [ {} ]), /Invalid GUID found in the sorted children array/); - Assert.throws(() => PlacesUtils.bookmarks.reorder("123456789012", [ "012345678901" , null ]), + Assert.throws(() => PlacesUtils.bookmarks.reorder("123456789012", [ "012345678901", null ]), /Invalid GUID found in the sorted children array/); }); add_task(function* reorder_nonexistent_guid() { yield Assert.rejects(PlacesUtils.bookmarks.reorder("123456789012", [ "012345678901" ]), /No folder found for the provided GUID/, "Should throw for nonexisting guid"); });
--- a/toolkit/components/places/tests/history/test_insert.js +++ b/toolkit/components/places/tests/history/test_insert.js @@ -110,17 +110,17 @@ add_task(function* test_history_insert() do_print(`filter: ${filter}, referrer: ${referrer}, date: ${date}, transition: ${transition}`); let uri = NetUtil.newURI(TEST_URL + Math.random()); let title = "Visit " + Math.random(); let pageInfo = { title, visits: [ - {transition: transition, referrer: referrer, date: date,} + {transition: transition, referrer: referrer, date: date, } ] }; pageInfo.url = yield filter(uri); let result = yield PlacesUtils.history.insert(pageInfo); Assert.ok(PlacesUtils.isValidGuid(result.guid), "guid for pageInfo object is valid"); @@ -179,17 +179,17 @@ add_task(function* test_insert_multiple_ () => PlacesUtils.history.insertMany([validPageInfo, {}]), /TypeError: PageInfo object must have a url property/, "passing a second invalid PageInfo object to History.insertMany should throw a TypeError" ); }); add_task(function* test_history_insertMany() { const BAD_URLS = ["about:config", "chrome://browser/content/browser.xul"]; - const GOOD_URLS = [1, 2, 3].map(x => {return `http://mozilla.com/${x}`;}); + const GOOD_URLS = [1, 2, 3].map(x => { return `http://mozilla.com/${x}`; }); let makePageInfos = Task.async(function*(urls, filter = x => x) { let pageInfos = []; for (let url of urls) { let uri = NetUtil.newURI(url); let pageInfo = { title: `Visit to ${url}`,
--- a/toolkit/components/places/tests/queries/test_415716.js +++ b/toolkit/components/places/tests/queries/test_415716.js @@ -98,11 +98,11 @@ add_task(function test_execute() root.containerOpen = true; let cc = root.childCount; dump("----> cc is: " + cc + "\n"); for (let i = 0; i < root.childCount; ++i) { let resultNode = root.getChild(i); let accesstime = Date(resultNode.time / 1000); dump("----> result: " + resultNode.uri + " Date: " + accesstime.toLocaleString() + "\n"); } - do_check_eq(cc,0); + do_check_eq(cc, 0); root.containerOpen = false; });
--- a/toolkit/components/places/tests/queries/test_abstime-annotation-uri.js +++ b/toolkit/components/places/tests/queries/test_abstime-annotation-uri.js @@ -135,22 +135,22 @@ add_task(function* test_abstime_annotati root.containerOpen = true; // Ensure the result set is correct compareArrayToResult(testData, root); // live update. do_print("change title"); var change1 = [{isDetails: true, uri:"http://foo.com/", - title: "mo"},]; + title: "mo"}, ]; yield task_populateDB(change1); do_check_false(isInResult({uri: "http://foo.com/"}, root)); var change2 = [{isDetails: true, uri:"http://foo.com/", - title: "moz", lastvisit: endTime},]; + title: "moz", lastvisit: endTime}, ]; yield task_populateDB(change2); dump_table("moz_places"); do_check_false(isInResult({uri: "http://foo.com/"}, root)); // Let's delete something from the result set - using annotation var change3 = [{isPageAnnotation: true, uri: "http://foo.com/", annoName: badAnnoName, annoVal: "test"}];
--- a/toolkit/components/places/tests/queries/test_queryMultipleFolder.js +++ b/toolkit/components/places/tests/queries/test_queryMultipleFolder.js @@ -32,17 +32,17 @@ add_task(function* test_queryMultipleFol // using queryStringToQueries let query = {}; let options = {}; let maxResults = 20; let queryString = "place:" + folderIds.map((id) => { return "folder=" + id; }).join('&') + "&sort=5&maxResults=" + maxResults; PlacesUtils.history.queryStringToQueries(queryString, query, {}, options); - let rootNode = PlacesUtils.history.executeQuery(query.value[0],options.value).root; + let rootNode = PlacesUtils.history.executeQuery(query.value[0], options.value).root; rootNode.containerOpen = true; let resultLength = rootNode.childCount; Assert.equal(resultLength, maxResults); for (let i = 0; i < resultLength; ++i) { let node = rootNode.getChild(i); Assert.equal(bookmarkIds[i], node.itemId, node.uri); } rootNode.containerOpen = false;
--- a/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js +++ b/toolkit/components/places/tests/queries/test_results-as-tag-contents-query.js @@ -14,17 +14,17 @@ var testData = [ tagArray: ["bugzilla"] }, { isInQuery: true, isDetails: true, title: "C Moz", uri: "http://foo.com/changeme1.html", isBookmark: true, isTag: true, - tagArray: ["moz","bugzilla"] }, + tagArray: ["moz", "bugzilla"] }, { isInQuery: false, isDetails: true, title: "amo", uri: "http://foo2.com/", isBookmark: true, isTag: true, tagArray: ["moz"] },
--- a/toolkit/components/places/tests/queries/test_searchterms-uri.js +++ b/toolkit/components/places/tests/queries/test_searchterms-uri.js @@ -69,19 +69,19 @@ add_task(function* test_searchterms_uri( } // Check our inital result set compareArrayToResult(testData, root); // live update. do_print("change title"); var change1 = [{isDetails: true, uri:"http://foo.com/", - title: "mo"},]; + title: "mo"}, ]; yield task_populateDB(change1); do_check_false(isInResult({uri: "http://foo.com/"}, root)); var change2 = [{isDetails: true, uri:"http://foo.com/", - title: "moz"},]; + title: "moz"}, ]; yield task_populateDB(change2); do_check_true(isInResult({uri: "http://foo.com/"}, root)); root.containerOpen = false; });
--- a/toolkit/components/places/tests/queries/test_sort-date-site-grouping.js +++ b/toolkit/components/places/tests/queries/test_sort-date-site-grouping.js @@ -63,57 +63,57 @@ var testData = [ lastVisit: olderthansixmonths + 1, title: "test visit", isInQuery: true } ]; var domainsInRange = [2, 3]; var leveledTestData = [// Today [[0], // Today, local files - [1,2]], // Today, example.com + [1, 2]], // Today, example.com // Older than six months [[3], // Older than six months, local files - [4,5], // Older than six months, example.com + [4, 5], // Older than six months, example.com [6] // Older than six months, example.net ]]; // This test data is meant for live updating. The |levels| property indicates // date range index and then domain index. var testDataAddedLater = [ { isVisit: true, uri: "http://example.com/5", lastVisit: olderthansixmonths, title: "test visit", isInQuery: true, - levels: [1,1] + levels: [1, 1] }, { isVisit: true, uri: "http://example.com/6", lastVisit: olderthansixmonths, title: "test visit", isInQuery: true, - levels: [1,1] + levels: [1, 1] }, { isVisit: true, uri: "http://example.com/7", lastVisit: today, title: "test visit", isInQuery: true, - levels: [0,1] + levels: [0, 1] }, { isVisit: true, uri: "file:///directory/3", lastVisit: today, title: "test visit", isInQuery: true, - levels: [0,0] + levels: [0, 0] } ]; function run_test() { run_next_test(); }
--- a/toolkit/components/places/tests/queries/test_transitions.js +++ b/toolkit/components/places/tests/queries/test_transitions.js @@ -103,17 +103,17 @@ add_task(function* test_transitions() visitDate: timeNow++ * 1000, title: item.title }); } //dump_table("moz_places"); //dump_table("moz_historyvisits"); - var numSortFunc = function (a,b) { return (a - b); }; + var numSortFunc = function (a, b) { return (a - b); }; var arrs = testDataTyped.concat(testDataDownload).concat(testDataBookmark) .sort(numSortFunc); // Four tests which compare the result of a query to an expected set. var data = arrs.filter(function (index) { return (testData[index].uri.match(/arewefastyet\.com/) && testData[index].transType == Ci.nsINavHistoryService.TRANSITION_DOWNLOAD);
--- a/toolkit/components/places/tests/unifiedcomplete/test_searchEngine_host.js +++ b/toolkit/components/places/tests/unifiedcomplete/test_searchEngine_host.js @@ -7,17 +7,17 @@ add_task(function* test_searchEngine_aut "GET", "http://my.search.com/"); let engine = Services.search.getEngineByName("MySearchEngine"); do_register_cleanup(() => Services.search.removeEngine(engine)); // Add an uri that matches the search string with high frecency. let uri = NetUtil.newURI("http://www.example.com/my/"); let visits = []; for (let i = 0; i < 100; ++i) { - visits.push({ uri , title: "Terms - SearchEngine Search" }); + visits.push({ uri, title: "Terms - SearchEngine Search" }); } yield PlacesTestUtils.addVisits(visits); yield addBookmark({ uri: uri, title: "Example bookmark" }); yield PlacesTestUtils.promiseAsyncUpdates(); ok(frecencyForUrl(uri) > 10000, "Added URI should have expected high frecency"); do_print("Check search domain is autoFilled even if there's an higher frecency match"); yield check_autocomplete({
--- a/toolkit/components/places/tests/unit/test_000_frecency.js +++ b/toolkit/components/places/tests/unit/test_000_frecency.js @@ -204,17 +204,17 @@ add_task(function* test_frecency() // Disable autoFill for this test. Services.prefs.setBoolPref("browser.urlbar.autoFill", false); do_register_cleanup(() => Services.prefs.clearUserPref("browser.urlbar.autoFill")); for (let bucket of bucketPrefs) { yield task_initializeBucket(bucket); } // sort results by frecency - results.sort((a,b) => b[1] - a[1]); + results.sort((a, b) => b[1] - a[1]); // Make sure there's enough results returned prefs.setIntPref("browser.urlbar.maxRichResults", results.length); // DEBUG //results.every(function(el) { dump("result: " + el[1] + ": " + el[0].spec + " (" + el[2] + ")\n"); return true; }) yield PlacesTestUtils.promiseAsyncUpdates();
--- a/toolkit/components/places/tests/unit/test_418643_removeFolderChildren.js +++ b/toolkit/components/places/tests/unit/test_418643_removeFolderChildren.js @@ -95,17 +95,17 @@ function add_bookmarks() { return validFolderId; } function check_bookmarks(aFolderId) { // check that we still have valid bookmarks var bookmarks = bmSvc.getBookmarkIdsForURI(bookmarkedURI); for (var i = 0; i < bookmarks.length; i++) { do_check_eq(bmSvc.getItemTitle(bookmarks[i]), validItemName); - do_check_true(annoSvc.itemHasAnnotation(bookmarks[i],validAnnoName)); + do_check_true(annoSvc.itemHasAnnotation(bookmarks[i], validAnnoName)); } // check that folder exists and has still its annotation do_check_eq(bmSvc.getItemTitle(aFolderId), validItemName); do_check_true(annoSvc.itemHasAnnotation(aFolderId, validAnnoName)); // check that folder is empty var options = histSvc.getNewQueryOptions();
--- a/toolkit/components/places/tests/unit/test_463863.js +++ b/toolkit/components/places/tests/unit/test_463863.js @@ -29,18 +29,18 @@ function runQuery(aResultType) { options).root; root.containerOpen = true; let cc = root.childCount; do_check_eq(cc, transitions.length - 2); for (let i = 0; i < cc; i++) { let node = root.getChild(i); // Check that all transition types but EMBED and FRAMED appear in results - do_check_neq(node.uri.substr(6,1), TRANSITION_EMBED); - do_check_neq(node.uri.substr(6,1), TRANSITION_FRAMED_LINK); + do_check_neq(node.uri.substr(6, 1), TRANSITION_EMBED); + do_check_neq(node.uri.substr(6, 1), TRANSITION_FRAMED_LINK); } root.containerOpen = false; } function run_test() { run_next_test(); }
--- a/toolkit/components/places/tests/unit/test_async_transactions.js +++ b/toolkit/components/places/tests/unit/test_async_transactions.js @@ -1293,19 +1293,19 @@ add_task(function* test_annotate_multipl yield PT.undo(); observer.reset(); }); add_task(function* test_sort_folder_by_name() { let folder_info = createTestFolderInfo(); let url = NetUtil.newURI("http://sort.by.name/"); - let preSep = ["3","2","1"].map(i => ({ title: i, url })); + let preSep = ["3", "2", "1"].map(i => ({ title: i, url })); let sep = {}; - let postSep = ["c","b","a"].map(l => ({ title: l, url })); + let postSep = ["c", "b", "a"].map(l => ({ title: l, url })); let originalOrder = [...preSep, sep, ...postSep]; let sortedOrder = [...preSep.slice(0).reverse(), sep, ...postSep.slice(0).reverse()]; yield PT.batch(function* () { folder_info.guid = yield PT.NewFolder(folder_info).transact(); for (let info of originalOrder) { info.parentGuid = folder_info.guid;
--- a/toolkit/components/places/tests/unit/test_history_sidebar.js +++ b/toolkit/components/places/tests/unit/test_history_sidebar.js @@ -55,31 +55,33 @@ function days_for_x_months_ago(aNowObj, oldTime.setSeconds(0); // Stay larger for eventual timezone issues, add 2 days. return parseInt((aNowObj - oldTime) / (1000*60*60*24)) + 2; } var nowObj = new Date(); // This test relies on en-US locale // Offset is number of days +/* eslint-disable comma-spacing */ var containers = [ { label: "Today" , offset: 0 , visible: true }, { label: "Yesterday" , offset: -1 , visible: true }, { label: "Last 7 days" , offset: -3 , visible: true }, { label: "This month" , offset: -8 , visible: nowObj.getDate() > 8 }, { label: "" , offset: -days_for_x_months_ago(nowObj, 0) , visible: true }, { label: "" , offset: -days_for_x_months_ago(nowObj, 1) , visible: true }, { label: "" , offset: -days_for_x_months_ago(nowObj, 2) , visible: true }, { label: "" , offset: -days_for_x_months_ago(nowObj, 3) , visible: true }, { label: "" , offset: -days_for_x_months_ago(nowObj, 4) , visible: true }, { label: "Older than 6 months" , offset: -days_for_x_months_ago(nowObj, 5) , visible: true }, ]; +/* eslint-enable comma-spacing */ var visibleContainers = containers.filter( - function(aContainer) {return aContainer.visible}); + function(aContainer) { return aContainer.visible }); /** * Asynchronous task that fills history and checks containers' labels. */ function* task_fill_history() { print("\n\n*** TEST Fill History\n"); // We can't use "now" because our hardcoded offsets would be invalid for some // date. So we hardcode a date.
--- a/toolkit/components/places/tests/unit/test_mozIAsyncLivemarks.js +++ b/toolkit/components/places/tests/unit/test_mozIAsyncLivemarks.js @@ -437,17 +437,17 @@ add_task(function* test_getLivemark_id_s do_check_eq(livemark.index, bookmark.index); }); add_task(function* test_getLivemark_removeItem_contention() { // do not yield. PlacesUtils.livemarks.addLivemark({ title: "test" , parentGuid: PlacesUtils.bookmarks.unfiledGuid , feedURI: FEED_URI - }).catch(() => {/* swallow errors*/}); + }).catch(() => { /* swallow errors*/ }); yield PlacesUtils.bookmarks.eraseEverything(); let livemark = yield PlacesUtils.livemarks.addLivemark( { title: "test" , parentGuid: PlacesUtils.bookmarks.unfiledGuid , feedURI: FEED_URI }); livemark = yield PlacesUtils.livemarks.getLivemark({ guid: livemark.guid });
--- a/toolkit/components/places/tests/unit/test_placesTxn.js +++ b/toolkit/components/places/tests/unit/test_placesTxn.js @@ -706,32 +706,32 @@ add_task(function* test_tagURI_untagURI( const TAG_1 = "tag-test_tagURI_untagURI-bar"; const TAG_2 = "tag-test_tagURI_untagURI-foo"; let tagURI = NetUtil.newURI("http://test_tagURI_untagURI.com"); // Test tagURI let tagTxn = new PlacesTagURITransaction(tagURI, [TAG_1, TAG_2]); tagTxn.doTransaction(); - do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1,TAG_2])); + do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1, TAG_2])); tagTxn.undoTransaction(); do_check_eq(tagssvc.getTagsForURI(tagURI).length, 0); tagTxn.redoTransaction(); - do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1,TAG_2])); + do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1, TAG_2])); // Test untagURI let untagTxn = new PlacesUntagURITransaction(tagURI, [TAG_1]); untagTxn.doTransaction(); do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_2])); untagTxn.undoTransaction(); - do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1,TAG_2])); + do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_1, TAG_2])); untagTxn.redoTransaction(); do_check_eq(JSON.stringify(tagssvc.getTagsForURI(tagURI)), JSON.stringify([TAG_2])); }); add_task(function* test_aggregate_removeItem_Txn() { let testFolder = bmsvc.createFolder(root, "Test aggregate removeItem transaction", bmsvc.DEFAULT_INDEX);
--- a/toolkit/components/places/tests/unit/test_promiseBookmarksTree.js +++ b/toolkit/components/places/tests/unit/test_promiseBookmarksTree.js @@ -130,17 +130,17 @@ function* compareToNode(aItem, aNode, aI compare_prop("uri"); // node.tags's format is "a, b" whilst promiseBoookmarksTree is "a,b" if (aNode.tags === null) check_unset("tags"); else compare_prop_to_value("tags", aNode.tags.replace(/, /g, ","), false); if (aNode.icon) { - let nodeIconData = aNode.icon.replace("moz-anno:favicon:",""); + let nodeIconData = aNode.icon.replace("moz-anno:favicon:", ""); compare_prop_to_value("iconuri", nodeIconData); } else { check_unset(aItem.iconuri); } check_unset(...FOLDER_ONLY_PROPS);
--- a/toolkit/components/printing/content/printPageSetup.js +++ b/toolkit/components/printing/content/printPageSetup.js @@ -49,21 +49,21 @@ function initDialog() gDialog.fCenterOption = document.getElementById("fCenterOption"); gDialog.fRightOption = document.getElementById("fRightOption"); gDialog.scalingLabel = document.getElementById("scalingInput"); gDialog.scalingInput = document.getElementById("scalingInput"); gDialog.enabled = false; - gDialog.strings = new Array; - gDialog.strings[ "marginUnits.inches" ] = document.getElementById("marginUnits.inches").childNodes[0].nodeValue; - gDialog.strings[ "marginUnits.metric" ] = document.getElementById("marginUnits.metric").childNodes[0].nodeValue; - gDialog.strings[ "customPrompt.title" ] = document.getElementById("customPrompt.title").childNodes[0].nodeValue; - gDialog.strings[ "customPrompt.prompt" ] = document.getElementById("customPrompt.prompt").childNodes[0].nodeValue; + gDialog.strings = new Array; + gDialog.strings["marginUnits.inches"] = document.getElementById("marginUnits.inches").childNodes[0].nodeValue; + gDialog.strings["marginUnits.metric"] = document.getElementById("marginUnits.metric").childNodes[0].nodeValue; + gDialog.strings["customPrompt.title"] = document.getElementById("customPrompt.title").childNodes[0].nodeValue; + gDialog.strings["customPrompt.prompt"] = document.getElementById("customPrompt.prompt").childNodes[0].nodeValue; } //--------------------------------------------------- function isListOfPrinterFeaturesAvailable() { var has_printerfeatures = false; @@ -154,20 +154,20 @@ function changeMargins() changeMargin( gDialog.rightInput ); } //--------------------------------------------------- function customize( node ) { // If selection is now "Custom..." then prompt user for custom setting. if ( node.value == 6 ) { - var prompter = Components.classes[ "@mozilla.org/embedcomp/prompt-service;1" ] + var prompter = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService( Components.interfaces.nsIPromptService ); - var title = gDialog.strings[ "customPrompt.title" ]; - var promptText = gDialog.strings[ "customPrompt.prompt" ]; + var title = gDialog.strings["customPrompt.title"]; + var promptText = gDialog.strings["customPrompt.prompt"]; var result = { value: node.custom }; var ok = prompter.prompt(window, title, promptText, result, null, { value: false } ); if ( ok ) { node.custom = result.value; } } } @@ -180,21 +180,21 @@ function setHeaderFooter( node, value ) node.custom = value; } else { // Start with empty Custom... value. node.custom = ""; } } var gHFValues = new Array; -gHFValues[ "&T" ] = 1; -gHFValues[ "&U" ] = 2; -gHFValues[ "&D" ] = 3; -gHFValues[ "&P" ] = 4; -gHFValues[ "&PT" ] = 5; +gHFValues["&T"] = 1; +gHFValues["&U"] = 2; +gHFValues["&D"] = 3; +gHFValues["&P"] = 4; +gHFValues["&PT"] = 5; function hfValueToId(val) { if ( val in gHFValues ) { return gHFValues[val]; } if ( val.length ) { return 6; // Custom... @@ -334,17 +334,17 @@ function loadDialog() gDialog.scalingInput.value = (gPrintSettings.scaling * 100).toFixed(0); // Enable/disable widgets based in the information whether the selected // printer supports the matching feature or not if (isListOfPrinterFeaturesAvailable()) { if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".can_change_orientation")) gDialog.orientation.removeAttribute("disabled"); else - gDialog.orientation.setAttribute("disabled","true"); + gDialog.orientation.setAttribute("disabled", "true"); } // Give initial focus to the orientation radio group. // Done on a timeout due to to bug 103197. setTimeout( function() { gDialog.orientation.focus(); }, 0 ); } //---------------------------------------------------
--- a/toolkit/components/printing/content/printPreviewProgress.js +++ b/toolkit/components/printing/content/printPreviewProgress.js @@ -137,17 +137,17 @@ function getString (stringId) { // If the user presses cancel, tell the app launcher and close the dialog... function onCancel () { // Cancel app launcher. try { printProgress.processCanceledByUser = true; } - catch (e) {return true;} + catch (e) { return true; } // don't Close up dialog by returning false, the backend will close the dialog when everything will be aborted. return false; } function doneIniting() { // called by function timeout in onLoad
--- a/toolkit/components/printing/content/printProgress.js +++ b/toolkit/components/printing/content/printProgress.js @@ -175,24 +175,24 @@ function getString( stringId ) { try { if ( elem && elem.childNodes && elem.childNodes[0] && elem.childNodes[0].nodeValue ) { - dialog.strings[ stringId ] = elem.childNodes[0].nodeValue; + dialog.strings[stringId] = elem.childNodes[0].nodeValue; } else { // If unable to fetch string, use an empty string. - dialog.strings[ stringId ] = ""; + dialog.strings[stringId] = ""; } - } catch (e) { dialog.strings[ stringId ] = ""; } + } catch (e) { dialog.strings[stringId] = ""; } } - return dialog.strings[ stringId ]; + return dialog.strings[stringId]; } function loadDialog() { } function replaceInsert( text, index, value ) { var result = text; @@ -239,17 +239,17 @@ function onLoad() { progressLabel = "Preparing..."; // better than nothing } dialog.tempLabel.value = progressLabel; dialog.title.value = docTitle; // Set up dialog button callbacks. var object = this; - doSetOKCancel("", function () { return object.onCancel();}); + doSetOKCancel("", function () { return object.onCancel(); }); // Fill dialog. loadDialog(); // set our web progress listener on the helper app launcher printProgress.registerListener(progressListener); moveToAlertPosition(); //We need to delay the set title else dom will overwrite it @@ -273,17 +273,17 @@ function onUnload() // If the user presses cancel, tell the app launcher and close the dialog... function onCancel () { // Cancel app launcher. try { printProgress.processCanceledByUser = true; } - catch ( exception ) {return true;} + catch ( exception ) { return true; } // don't Close up dialog by returning false, the backend will close the dialog when everything will be aborted. return false; } function doneIniting() { printProgress.doneIniting();
--- a/toolkit/components/printing/content/printdialog.js +++ b/toolkit/components/printing/content/printdialog.js @@ -53,31 +53,31 @@ function initDialog() dialog.enabled = false; } //--------------------------------------------------- function checkInteger(element) { var value = element.value; if (value && value.length > 0) { - value = value.replace(/[^0-9]/g,""); + value = value.replace(/[^0-9]/g, ""); if (!value) value = ""; element.value = value; } if (!value || value < 1 || value > 999) - dialog.printButton.setAttribute("disabled","true"); + dialog.printButton.setAttribute("disabled", "true"); else dialog.printButton.removeAttribute("disabled"); } //--------------------------------------------------- function stripTrailingWhitespace(element) { var value = element.value; - value = value.replace(/\s+$/,""); + value = value.replace(/\s+$/, ""); element.value = value; } //--------------------------------------------------- function getPrinterDescription(printerName) { var s = ""; @@ -114,20 +114,20 @@ listElement.prototype = if ((null == aDataObject) || !aDataObject.hasMore()) { // disable dialog this.listElement.setAttribute("value", ""); this.listElement.setAttribute("label", document.getElementById("printingBundle") .getString("noprinter")); this.listElement.setAttribute("disabled", "true"); - dialog.printerLabel.setAttribute("disabled","true"); - dialog.propertiesButton.setAttribute("disabled","true"); - dialog.fileCheck.setAttribute("disabled","true"); - dialog.printButton.setAttribute("disabled","true"); + dialog.printerLabel.setAttribute("disabled", "true"); + dialog.propertiesButton.setAttribute("disabled", "true"); + dialog.fileCheck.setAttribute("disabled", "true"); + dialog.printButton.setAttribute("disabled", "true"); } else { // build popup menu from printer names var list = document.getElementById("printerList"); do { printerNameStr = aDataObject.getNext(); list.appendItem(printerNameStr, printerNameStr, getPrinterDescription(printerNameStr)); } while (aDataObject.hasMore()); @@ -197,20 +197,20 @@ function displayPropertiesDialog() function doPrintRange(inx) { if (inx == 1) { dialog.frompageInput.removeAttribute("disabled"); dialog.frompageLabel.removeAttribute("disabled"); dialog.topageInput.removeAttribute("disabled"); dialog.topageLabel.removeAttribute("disabled"); } else { - dialog.frompageInput.setAttribute("disabled","true"); - dialog.frompageLabel.setAttribute("disabled","true"); - dialog.topageInput.setAttribute("disabled","true"); - dialog.topageLabel.setAttribute("disabled","true"); + dialog.frompageInput.setAttribute("disabled", "true"); + dialog.frompageLabel.setAttribute("disabled", "true"); + dialog.topageInput.setAttribute("disabled", "true"); + dialog.topageLabel.setAttribute("disabled", "true"); } } //--------------------------------------------------- function loadDialog() { var print_copies = 1; var print_selection_radio_enabled = false; @@ -250,17 +250,17 @@ function loadDialog() dump("print_howToEnableUI "+print_howToEnableUI+"\n"); dump("selection_radio_enabled "+print_selection_radio_enabled+"\n"); } dialog.printrangeGroup.selectedItem = dialog.allpagesRadio; if (print_selection_radio_enabled) { dialog.selectionRadio.removeAttribute("disabled"); } else { - dialog.selectionRadio.setAttribute("disabled","true"); + dialog.selectionRadio.setAttribute("disabled", "true"); } doPrintRange(dialog.rangeRadio.selected); dialog.frompageInput.value = 1; dialog.topageInput.value = 1; dialog.numCopiesInput.value = print_copies; if (doDebug) { dump("print_howToEnableUI: "+print_howToEnableUI+"\n"); @@ -275,28 +275,28 @@ function loadDialog() dialog.printframeGroupLabel.removeAttribute("disabled"); // initialize radio group dialog.printframeGroup.selectedItem = dialog.selectedframeRadio; } else if (print_howToEnableUI == gPrintSetInterface.kFrameEnableAsIsAndEach) { dialog.aslaidoutRadio.removeAttribute("disabled"); //enable - dialog.selectedframeRadio.setAttribute("disabled","true"); // disable + dialog.selectedframeRadio.setAttribute("disabled", "true"); // disable dialog.eachframesepRadio.removeAttribute("disabled"); // enable dialog.printframeGroupLabel.removeAttribute("disabled"); // enable // initialize dialog.printframeGroup.selectedItem = dialog.eachframesepRadio; } else { - dialog.aslaidoutRadio.setAttribute("disabled","true"); - dialog.selectedframeRadio.setAttribute("disabled","true"); - dialog.eachframesepRadio.setAttribute("disabled","true"); - dialog.printframeGroupLabel.setAttribute("disabled","true"); + dialog.aslaidoutRadio.setAttribute("disabled", "true"); + dialog.selectedframeRadio.setAttribute("disabled", "true"); + dialog.eachframesepRadio.setAttribute("disabled", "true"); + dialog.printframeGroupLabel.setAttribute("disabled", "true"); } dialog.printButton.label = dialog.printName.getAttribute("label"); } //--------------------------------------------------- function onLoad() {
--- a/toolkit/components/printing/content/printjoboptions.js +++ b/toolkit/components/printing/content/printjoboptions.js @@ -14,17 +14,17 @@ var gPrefs; var gPrintSetInterface = Components.interfaces.nsIPrintSettings; var doDebug = true; //--------------------------------------------------- function checkDouble(element, maxVal) { var value = element.value; if (value && value.length > 0) { - value = value.replace(/[^\.|^0-9]/g,""); + value = value.replace(/[^\.|^0-9]/g, ""); if (!value) { element.value = ""; } else if (value > maxVal) { element.value = maxVal; } else { element.value = value; } } @@ -280,41 +280,41 @@ function loadDialog() /* Enable/disable and/or hide/unhide widgets based in the information * whether the selected printer and/or print module supports the matching * feature or not */ if (isListOfPrinterFeaturesAvailable()) { // job title if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".can_change_jobtitle")) dialog.jobTitleInput.removeAttribute("disabled"); else - dialog.jobTitleInput.setAttribute("disabled","true"); + dialog.jobTitleInput.setAttribute("disabled", "true"); if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".supports_jobtitle_change")) dialog.jobTitleGroup.removeAttribute("hidden"); else - dialog.jobTitleGroup.setAttribute("hidden","true"); + dialog.jobTitleGroup.setAttribute("hidden", "true"); // paper size if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".can_change_paper_size")) dialog.paperList.removeAttribute("disabled"); else - dialog.paperList.setAttribute("disabled","true"); + dialog.paperList.setAttribute("disabled", "true"); if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".supports_paper_size_change")) dialog.paperGroup.removeAttribute("hidden"); else - dialog.paperGroup.setAttribute("hidden","true"); + dialog.paperGroup.setAttribute("hidden", "true"); // color/grayscale radio if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".can_change_printincolor")) dialog.colorRadioGroup.removeAttribute("disabled"); else - dialog.colorRadioGroup.setAttribute("disabled","true"); + dialog.colorRadioGroup.setAttribute("disabled", "true"); if (gPrefs.getBoolPref("print.tmp.printerfeatures." + gPrintSettings.printerName + ".supports_printincolor_change")) dialog.colorGroup.removeAttribute("hidden"); else - dialog.colorGroup.setAttribute("hidden","true"); + dialog.colorGroup.setAttribute("hidden", "true"); } if (print_color) { dialog.colorRadioGroup.selectedItem = dialog.colorRadio; } else { dialog.colorRadioGroup.selectedItem = dialog.grayRadio; }
--- a/toolkit/components/prompts/content/tabprompts.xml +++ b/toolkit/components/prompts/content/tabprompts.xml @@ -109,17 +109,17 @@ // focusTarget (for BUTTON_DELAY_ENABLE) not yet supported }; this.ui.button0.addEventListener("command", this.onButtonClick.bind(this, 0), false); this.ui.button1.addEventListener("command", this.onButtonClick.bind(this, 1), false); this.ui.button2.addEventListener("command", this.onButtonClick.bind(this, 2), false); this.ui.button3.addEventListener("command", this.onButtonClick.bind(this, 3), false); // Anonymous wrapper used here because |Dialog| doesn't exist until init() is called! - this.ui.checkbox.addEventListener("command", function() { self.Dialog.onCheckbox(); } , false); + this.ui.checkbox.addEventListener("command", function() { self.Dialog.onCheckbox(); }, false); this.isLive = false; ]]> </constructor> <destructor> <![CDATA[ if (this.isLive) { this.abortPrompt(); }
--- a/toolkit/components/prompts/src/CommonDialog.jsm +++ b/toolkit/components/prompts/src/CommonDialog.jsm @@ -139,17 +139,17 @@ CommonDialog.prototype = { this.ui.checkboxContainer.hidden = false; this.setLabelForNode(this.ui.checkbox, label); this.ui.checkbox.checked = this.args.checked; } // set the icon let icon = this.ui.infoIcon; if (icon) - this.iconClass.forEach((el,idx,arr) => icon.classList.add(el)); + this.iconClass.forEach((el, idx, arr) => icon.classList.add(el)); // set default result to cancelled this.args.ok = false; this.args.buttonNumClicked = 1; // Set the default button let b = (this.args.defaultButtonNum || 0);
--- a/toolkit/components/search/tests/xpcshell/head_search.js +++ b/toolkit/components/search/tests/xpcshell/head_search.js @@ -544,14 +544,14 @@ const TELEMETRY_RESULT_ENUM = { * If a value from TELEMETRY_RESULT_ENUM, we expect to see this value * recorded exactly once in the probe. If |null|, we expect to see * nothing recorded in the probe at all. */ function checkCountryResultTelemetry(aExpectedValue) { let histogram = Services.telemetry.getHistogramById("SEARCH_SERVICE_COUNTRY_FETCH_RESULT"); let snapshot = histogram.snapshot(); // The probe is declared with 8 values, but we get 9 back from .counts - let expectedCounts = [0,0,0,0,0,0,0,0,0]; + let expectedCounts = [0, 0, 0, 0, 0, 0, 0, 0, 0]; if (aExpectedValue != null) { expectedCounts[aExpectedValue] = 1; } deepEqual(snapshot.counts, expectedCounts); }
--- a/toolkit/components/search/tests/xpcshell/test_chromeresource_icon1.js +++ b/toolkit/components/search/tests/xpcshell/test_chromeresource_icon1.js @@ -19,13 +19,13 @@ function run_test() { run_next_test(); } add_task(function* test_defaultresourceicon() { yield asyncInit(); let engine1 = Services.search.getEngineByName("engine-resourceicon"); do_check_eq(engine1.iconURI.spec, "resource://search-plugins/icon16.png"); - do_check_eq(engine1.getIconURLBySize(32,32), "resource://search-plugins/icon32.png"); + do_check_eq(engine1.getIconURLBySize(32, 32), "resource://search-plugins/icon32.png"); let engine2 = Services.search.getEngineByName("engine-chromeicon"); do_check_eq(engine2.iconURI.spec, "chrome://branding/content/icon16.png"); - do_check_eq(engine2.getIconURLBySize(32,32), "chrome://branding/content/icon32.png"); + do_check_eq(engine2.getIconURLBySize(32, 32), "chrome://branding/content/icon32.png"); });
--- a/toolkit/components/search/tests/xpcshell/test_json_cache.js +++ b/toolkit/components/search/tests/xpcshell/test_json_cache.js @@ -139,17 +139,17 @@ add_test(function test_cache_write() { isSubObjectOf(cacheTemplate, cacheWritten); run_next_test(); }); } }; Services.obs.addObserver(cacheWriteObserver, "browser-search-service", false); - Services.search.QueryInterface(Ci.nsIObserver).observe(null, "browser-search-engine-modified" , "engine-removed"); + Services.search.QueryInterface(Ci.nsIObserver).observe(null, "browser-search-engine-modified", "engine-removed"); }); }); var EXPECTED_ENGINE = { engine: { name: "Test search engine", alias: null, description: "A test search engine (based on Google search)",
--- a/toolkit/components/search/tests/xpcshell/test_location.js +++ b/toolkit/components/search/tests/xpcshell/test_location.js @@ -12,17 +12,17 @@ function run_test() { ok(!Services.prefs.prefHasUserValue("browser.search.isUS"), "no isUS pref") // check we have "success" recorded in telemetry checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.SUCCESS); // a false value for each of SEARCH_SERVICE_COUNTRY_TIMEOUT and SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [1,0,0]); // boolean probe so 3 buckets, expect 1 result for |0|. + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. } // simple checks for our platform-specific telemetry. We can't influence // what they return (as we can't influence the countryCode the platform // thinks we are in), but we can check the values are correct given reality. let probeUSMismatched, probeNonUSMismatched; switch (Services.appinfo.OS) { @@ -42,22 +42,22 @@ function run_test() { let countryCode = Services.sysinfo.get("countryCode"); print("Platform says the country-code is", countryCode); let expectedResult; let hid; // We know geoip said AU - if the platform thinks US then we expect // probeUSMismatched with true (ie, a mismatch) if (countryCode == "US") { hid = probeUSMismatched; - expectedResult = [0,1,0]; // boolean probe so 3 buckets, expect 1 result for |1|. + expectedResult = [0, 1, 0]; // boolean probe so 3 buckets, expect 1 result for |1|. } else { // We are expecting probeNonUSMismatched with false if the platform // says AU (not a mismatch) and true otherwise. hid = probeNonUSMismatched; - expectedResult = countryCode == "AU" ? [1,0,0] : [0,1,0]; + expectedResult = countryCode == "AU" ? [1, 0, 0] : [0, 1, 0]; } let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); deepEqual(snapshot.counts, expectedResult); } do_test_finished(); run_next_test();
--- a/toolkit/components/search/tests/xpcshell/test_location_error.js +++ b/toolkit/components/search/tests/xpcshell/test_location_error.js @@ -15,16 +15,16 @@ function run_test() { } catch (ex) {} // should have an error recorded. checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.ERROR); // but false values for timeout and forced-sync-init. for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [1,0,0]); // boolean probe so 3 buckets, expect 1 result for |0|. + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. } do_test_finished(); run_next_test(); }); do_test_pending(); }
--- a/toolkit/components/search/tests/xpcshell/test_location_malformed_json.js +++ b/toolkit/components/search/tests/xpcshell/test_location_malformed_json.js @@ -37,17 +37,17 @@ function run_test() { ok(!Services.prefs.prefHasUserValue("browser.search.isUS"), "should never be an isUS pref"); // should have recorded SUCCESS_WITHOUT_DATA checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.SUCCESS_WITHOUT_DATA); // and false values for timeout and forced-sync-init. for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [1,0,0]); // boolean probe so 3 buckets, expect 1 result for |0|. + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. } // Check we saw the timezone fallback message. promiseTzMessage.then(msg => { print("Timezone message:", msg.message); ok(msg.message.endsWith(isUSTimezone().toString()), "fell back to timezone and it matches our timezone"); do_test_finished(); run_next_test();
--- a/toolkit/components/search/tests/xpcshell/test_location_migrate_no_countrycode_isUS.js +++ b/toolkit/components/search/tests/xpcshell/test_location_migrate_no_countrycode_isUS.js @@ -16,15 +16,15 @@ function run_test() { equal(Services.prefs.getCharPref("browser.search.countryCode"), "AU", "got the correct country code."); // check we have "success" recorded in telemetry checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.SUCCESS); // a false value for each of SEARCH_SERVICE_COUNTRY_TIMEOUT and SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [1,0,0]); // boolean probe so 3 buckets, expect 1 result for |0|. + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. } do_test_finished(); run_next_test(); }); do_test_pending(); }
--- a/toolkit/components/search/tests/xpcshell/test_location_migrate_no_countrycode_notUS.js +++ b/toolkit/components/search/tests/xpcshell/test_location_migrate_no_countrycode_notUS.js @@ -16,15 +16,15 @@ function run_test() { equal(Services.prefs.getCharPref("browser.search.countryCode"), "US", "got the correct country code."); // check we have "success" recorded in telemetry checkCountryResultTelemetry(TELEMETRY_RESULT_ENUM.SUCCESS); // a false value for each of SEARCH_SERVICE_COUNTRY_TIMEOUT and SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT for (let hid of ["SEARCH_SERVICE_COUNTRY_TIMEOUT", "SEARCH_SERVICE_COUNTRY_FETCH_CAUSED_SYNC_INIT"]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [1,0,0]); // boolean probe so 3 buckets, expect 1 result for |0|. + deepEqual(snapshot.counts, [1, 0, 0]); // boolean probe so 3 buckets, expect 1 result for |0|. } do_test_finished(); run_next_test(); }); do_test_pending(); }
--- a/toolkit/components/search/tests/xpcshell/test_location_sync.js +++ b/toolkit/components/search/tests/xpcshell/test_location_sync.js @@ -79,21 +79,21 @@ add_task(function* test_simple() { ]) { let histogram = Services.telemetry.getHistogramById(hid); let snapshot = histogram.snapshot(); equal(snapshot.sum, 0, hid); switch (snapshot.histogram_type) { case Ci.nsITelemetry.HISTOGRAM_FLAG: // flags are a special case in that they are initialized with a default // of one |0|. - deepEqual(snapshot.counts, [1,0,0], hid); + deepEqual(snapshot.counts, [1, 0, 0], hid); break; case Ci.nsITelemetry.HISTOGRAM_BOOLEAN: // booleans aren't initialized at all, so should have all zeros. - deepEqual(snapshot.counts, [0,0,0], hid); + deepEqual(snapshot.counts, [0, 0, 0], hid); break; case Ci.nsITelemetry.HISTOGRAM_EXPONENTIAL: case Ci.nsITelemetry.HISTOGRAM_LINEAR: equal(snapshot.counts.reduce((a, b) => a+b), 0, hid); break; default: ok(false, "unknown histogram type " + snapshot.histogram_type + " for " + hid); }
--- a/toolkit/components/search/tests/xpcshell/test_location_timeout.js +++ b/toolkit/components/search/tests/xpcshell/test_location_timeout.js @@ -43,17 +43,17 @@ function run_test() { ok(!Services.prefs.prefHasUserValue("browser.search.countryCode"), "should be no countryCode pref"); ok(!Services.prefs.prefHasUserValue("browser.search.region"), "should be no region pref"); // should be no result recorded at all. checkCountryResultTelemetry(null); // should have set the flag indicating we saw a timeout. let histogram = Services.telemetry.getHistogramById("SEARCH_SERVICE_COUNTRY_TIMEOUT"); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [0,1,0]); + deepEqual(snapshot.counts, [0, 1, 0]); // should not yet have SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS recorded as our // test server is still blocked on our promise. equal(getProbeSum("SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS"), 0); waitForSearchNotification("geoip-lookup-xhr-complete").then(() => { // now we *should* have a report of how long the response took even though // it timed out. // The telemetry "sum" will be the actual time in ms - just check it's non-zero.
--- a/toolkit/components/search/tests/xpcshell/test_location_timeout_xhr.js +++ b/toolkit/components/search/tests/xpcshell/test_location_timeout_xhr.js @@ -47,17 +47,17 @@ function run_test() { ok(!Services.prefs.prefHasUserValue("browser.search.countryCode"), "should be no countryCode pref"); ok(!Services.prefs.prefHasUserValue("browser.search.region"), "should be no region pref"); // should be no result recorded at all. checkCountryResultTelemetry(null); // should have set the flag indicating we saw a timeout. let histogram = Services.telemetry.getHistogramById("SEARCH_SERVICE_COUNTRY_TIMEOUT"); let snapshot = histogram.snapshot(); - deepEqual(snapshot.counts, [0,1,0]); + deepEqual(snapshot.counts, [0, 1, 0]); // should not have SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS recorded as our // test server is still blocked on our promise. verifyProbeSum("SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS", 0); promiseXHRStarted.then(xhr => { // Set the timeout on the xhr object to an extremely low value, so it // should timeout immediately.
--- a/toolkit/components/search/tests/xpcshell/test_multipleIcons.js +++ b/toolkit/components/search/tests/xpcshell/test_multipleIcons.js @@ -18,22 +18,22 @@ function run_test() { add_task(function* test_multipleIcons() { let [engine] = yield addTestEngines([ { name: "IconsTest", xmlFileName: "engineImages.xml" }, ]); do_print("The default should be the 16x16 icon"); do_check_true(engine.iconURI.spec.includes("ico16")); - do_check_true(engine.getIconURLBySize(16,16).includes("ico16")); - do_check_true(engine.getIconURLBySize(32,32).includes("ico32")); - do_check_true(engine.getIconURLBySize(74,74).includes("ico74")); + do_check_true(engine.getIconURLBySize(16, 16).includes("ico16")); + do_check_true(engine.getIconURLBySize(32, 32).includes("ico32")); + do_check_true(engine.getIconURLBySize(74, 74).includes("ico74")); do_print("Invalid dimensions should return null."); - do_check_null(engine.getIconURLBySize(50,50)); + do_check_null(engine.getIconURLBySize(50, 50)); let allIcons = engine.getIcons(); do_print("Check that allIcons contains expected icon sizes"); do_check_eq(allIcons.length, 3); let expectedWidths = [16, 32, 74]; do_check_true(allIcons.every((item) => { let width = item.width; @@ -52,10 +52,10 @@ add_task(function* test_icon_not_in_file let engine = yield new Promise((resolve, reject) => { Services.search.addEngine(engineUrl, null, "data:image/x-icon;base64,ico16", false, {onSuccess: resolve, onError: reject}); }); // Even though the icon wasn't specified inside the XML file, it should be // available both in the iconURI attribute and with getIconURLBySize. do_check_true(engine.iconURI.spec.includes("ico16")); - do_check_true(engine.getIconURLBySize(16,16).includes("ico16")); + do_check_true(engine.getIconURLBySize(16, 16).includes("ico16")); });
--- a/toolkit/components/social/SocialService.jsm +++ b/toolkit/components/social/SocialService.jsm @@ -72,17 +72,17 @@ var SocialServiceInternal = { return pref; } } catch (err) { Cu.reportError("SocialService: failed to load manifest: " + pref + ", exception: " + err); } } let originUri = Services.io.newURI(origin, null, null); - return originUri.hostPort.replace('.','-'); + return originUri.hostPort.replace('.', '-'); }, orderedProviders: function(aCallback) { if (SocialServiceInternal.providerArray.length < 2) { schedule(function () { aCallback(SocialServiceInternal.providerArray); }); return; }
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryEnvironment.js @@ -1420,17 +1420,17 @@ add_task(function* test_defaultSearchEng null, null, false); }); Services.search.defaultEngine = engine; yield promise; TelemetryEnvironment.unregisterChangeListener("testWatch_SearchDefault"); data = TelemetryEnvironment.currentEnvironment; checkEnvironmentData(data); Assert.deepEqual(data.settings.defaultSearchEngineData, - {"name":"engine-telemetry","loadPath":"[other]/engine.xml","origin":"verified"}); + {"name":"engine-telemetry", "loadPath":"[other]/engine.xml", "origin":"verified"}); // Now break this engine's load path hash. gNow = fakeNow(futureDate(gNow, 10 * MILLISECONDS_PER_MINUTE)); promise = new Promise(resolve => { TelemetryEnvironment.registerChangeListener("testWatch_SearchDefault", resolve); }); engine.wrappedJSObject.setAttr("loadPathHash", "broken"); Services.obs.notifyObservers(null, "browser-search-engine-modified", "engine-current");
--- a/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js +++ b/toolkit/components/telemetry/tests/unit/test_TelemetryStopwatch.js @@ -13,25 +13,25 @@ const KEYED_HIST = { id: "TELEMETRY_INVA var refObj = {}, refObj2 = {}; var originalCount1, originalCount2; function run_test() { let histogram = Telemetry.getHistogramById(HIST_NAME); let snapshot = histogram.snapshot(); - originalCount1 = snapshot.counts.reduce((a,b) => a += b); + originalCount1 = snapshot.counts.reduce((a, b) => a += b); histogram = Telemetry.getHistogramById(HIST_NAME2); snapshot = histogram.snapshot(); - originalCount2 = snapshot.counts.reduce((a,b) => a += b); + originalCount2 = snapshot.counts.reduce((a, b) => a += b); histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id); snapshot = histogram.snapshot(KEYED_HIST.key); - originalCount3 = snapshot.counts.reduce((a,b) => a += b); + originalCount3 = snapshot.counts.reduce((a, b) => a += b); do_check_false(TelemetryStopwatch.start(3)); do_check_false(TelemetryStopwatch.start({})); do_check_false(TelemetryStopwatch.start("", 3)); do_check_false(TelemetryStopwatch.start("", "")); do_check_false(TelemetryStopwatch.start({}, {})); do_check_true(TelemetryStopwatch.start("mark1")); @@ -135,24 +135,24 @@ function run_test() { do_check_false(TelemetryStopwatch.cancelKeyed(KEYED_HIST.id, KEYED_HIST.key)); finishTest(); } function finishTest() { let histogram = Telemetry.getHistogramById(HIST_NAME); let snapshot = histogram.snapshot(); - let newCount = snapshot.counts.reduce((a,b) => a += b); + let newCount = snapshot.counts.reduce((a, b) => a += b); do_check_eq(newCount - originalCount1, 5, "The correct number of histograms were added for histogram 1."); histogram = Telemetry.getHistogramById(HIST_NAME2); snapshot = histogram.snapshot(); - newCount = snapshot.counts.reduce((a,b) => a += b); + newCount = snapshot.counts.reduce((a, b) => a += b); do_check_eq(newCount - originalCount2, 3, "The correct number of histograms were added for histogram 2."); histogram = Telemetry.getKeyedHistogramById(KEYED_HIST.id); snapshot = histogram.snapshot(KEYED_HIST.key); - newCount = snapshot.counts.reduce((a,b) => a += b); + newCount = snapshot.counts.reduce((a, b) => a += b); do_check_eq(newCount - originalCount3, 2, "The correct number of histograms were added for histogram 3."); }
--- a/toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_while_idle.js +++ b/toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_while_idle.js @@ -24,15 +24,15 @@ function* runTests() { bgCapture(goodUrl, { onDone: () => { ok(thumbnailExists(goodUrl), "We should have recovered and handled new capture requests"); removeThumbnail(goodUrl); // Test done. ok(crashObserver.crashed, "Saw a crash from this test"); next(); }}); }); - } , "oop-frameloader-crashed", false); + }, "oop-frameloader-crashed", false); // Nothing is pending - crash the process. info("Crashing the thumbnail content process."); mm.sendAsyncMessage("thumbnails-test:crash"); yield true; }
--- a/toolkit/components/thumbnails/test/browser_thumbnails_redirect.js +++ b/toolkit/components/thumbnails/test/browser_thumbnails_redirect.js @@ -19,12 +19,12 @@ function* runTests() { // Create a tab, redirecting to a page with a red background. yield addTab(URL); yield captureAndCheckColor(255, 0, 0, "we have a red thumbnail"); // Wait until the referrer's thumbnail's file has been written. yield whenFileExists(URL); yield retrieveImageDataForURL(URL, function ([r, g, b]) { - is("" + [r,g,b], "255,0,0", "referrer has a red thumbnail"); + is("" + [r, g, b], "255,0,0", "referrer has a red thumbnail"); next(); }); }
--- a/toolkit/components/thumbnails/test/browser_thumbnails_update.js +++ b/toolkit/components/thumbnails/test/browser_thumbnails_update.js @@ -96,17 +96,17 @@ function* capIfStaleErrorResponseUpdateT yield navigateTo(URL); // now() returns a higher-precision value than the modified time of a file. // As we set the thumbnail very stale, allowing 1 second of "slop" here // works around this while still keeping the test valid. let now = Date.now() - 1000 ; PageThumbs.captureAndStoreIfStale(gBrowser.selectedBrowser, () => { ok(getThumbnailModifiedTime(URL) < now, "modified time should be < now"); retrieveImageDataForURL(URL, function ([r, g, b]) { - is("" + [r,g,b], "" + [0, 255, 0], "thumbnail is still green"); + is("" + [r, g, b], "" + [0, 255, 0], "thumbnail is still green"); gBrowser.removeTab(gBrowser.selectedTab); next(); }); }); yield undefined; // wait for callback to call 'next'... } /* Check functionality of captureAndStoreIfStale when there is a non-error @@ -128,17 +128,17 @@ function* capIfStaleGoodResponseUpdateTe // As we set the thumbnail very stale, allowing 1 second of "slop" here // works around this while still keeping the test valid. let now = Date.now() - 1000 ; PageThumbs.captureAndStoreIfStale(browser, () => { ok(getThumbnailModifiedTime(URL) >= now, "modified time should be >= now"); // the captureAndStoreIfStale request saw a 200 response with the red body, // so we expect to see the red version here. retrieveImageDataForURL(URL, function ([r, g, b]) { - is("" + [r,g,b], "" + [255, 0, 0], "thumbnail is now red"); + is("" + [r, g, b], "" + [255, 0, 0], "thumbnail is now red"); next(); }); }); yield undefined; // wait for callback to call 'next'... } /* Check functionality of captureAndStore when there is an error response from the server.
--- a/toolkit/components/thumbnails/test/head.js +++ b/toolkit/components/thumbnails/test/head.js @@ -126,17 +126,17 @@ function captureAndCheckColor(aRed, aGre let browser = gBrowser.selectedBrowser; // We'll get oranges if the expiration filter removes the file during the // test. dontExpireThumbnailURLs([browser.currentURI.spec]); // Capture the screenshot. PageThumbs.captureAndStore(browser, function () { retrieveImageDataForURL(browser.currentURI.spec, function ([r, g, b]) { - is("" + [r,g,b], "" + [aRed, aGreen, aBlue], aMessage); + is("" + [r, g, b], "" + [aRed, aGreen, aBlue], aMessage); next(); }); }); } /** * For a given URL, loads the corresponding thumbnail * to a canvas and passes its image data to the callback.
--- a/toolkit/components/viewconfig/content/config.js +++ b/toolkit/components/viewconfig/content/config.js @@ -105,24 +105,24 @@ var view = { this.treebox.invalidate(); if (index >= 0) { this.selection.select(index); this.treebox.ensureRowIsVisible(index); } }, selectionChanged : function() {}, cycleCell: function(row, col) {}, - isEditable: function(row, col) {return false; }, - isSelectable: function(row, col) {return false; }, + isEditable: function(row, col) { return false; }, + isSelectable: function(row, col) { return false; }, setCellValue: function(row, col, value) {}, setCellText: function(row, col, value) {}, performAction: function(action) {}, performActionOnRow: function(action, row) {}, performActionOnCell: function(action, row, col) {}, - isSeparator: function(index) {return false; } + isSeparator: function(index) { return false; } }; // find the index in gPrefView of a pref object // or -1 if it does not exist in the filtered view function getViewIndexOfPref(pref) { var low = -1, high = gPrefView.length; var index = (low + high) >> 1;
--- a/toolkit/components/viewsource/content/viewSourceUtils.js +++ b/toolkit/components/viewsource/content/viewSourceUtils.js @@ -486,20 +486,20 @@ var gViewSourceUtils = { // we failed loading it with the external editor. Components.utils.reportError(ex); gViewSourceUtils.handleCallBack(this.callBack, false, this.data); } finally { this.destroy(); } }, - onLocationChange: function() {return 0;}, - onProgressChange: function() {return 0;}, - onStatusChange: function() {return 0;}, - onSecurityChange: function() {return 0;}, + onLocationChange: function() { return 0; }, + onProgressChange: function() { return 0; }, + onStatusChange: function() { return 0; }, + onSecurityChange: function() { return 0; }, webShell: null, editor: null, callBack: null, data: null, file: null },
--- a/toolkit/content/aboutSupport.js +++ b/toolkit/content/aboutSupport.js @@ -156,17 +156,17 @@ var snapshotFormatters = { $.append($("experiments-tbody"), data.map(function (experiment) { return $.new("tr", [ $.new("td", experiment.name), $.new("td", experiment.id), $.new("td", experiment.description), $.new("td", experiment.active), $.new("td", experiment.endDate), $.new("td", [ - $.new("a", experiment.detailURL, null, {href : experiment.detailURL,}) + $.new("a", experiment.detailURL, null, {href : experiment.detailURL, }) ]), $.new("td", experiment.branch), ]); })); }, modifiedPreferences: function modifiedPreferences(data) { $.append($("prefs-tbody"), sortedArrayFromObject(data).map( @@ -296,20 +296,21 @@ var snapshotFormatters = { // If indices is there, it should be the same length as failures, // (see Troubleshoot.jsm) but we check anyway: if ("indices" in data && data.failures.length == data.indices.length) { let combined = []; for (let i = 0; i < data.failures.length; i++) { let assembled = assembleFromGraphicsFailure(i, data); combined.push(assembled); } - combined.sort(function(a,b) { + combined.sort(function(a, b) { if (a.index < b.index) return -1; if (a.index > b.index) return 1; - return 0;}); + return 0; + }); $.append($("graphics-failures-tbody"), combined.map(function(val) { return $.new("tr", [$.new("th", val.header, "column"), $.new("td", val.message)]); })); delete data.indices; } else { $.append($("graphics-failures-tbody"),
--- a/toolkit/content/tests/fennec-tile-testapp/chrome/content/WidgetStack.js +++ b/toolkit/content/tests/fennec-tile-testapp/chrome/content/WidgetStack.js @@ -1300,17 +1300,17 @@ WidgetStack.prototype = { ); // clear the _pannableBounds cache, since it depends on the // viewportOverflow this._pannableBounds = null; }, _widgetBounds: function () { - let r = new wsRect(0,0,0,0); + let r = new wsRect(0, 0, 0, 0); for (let wid in this._widgetState) { let state = this._widgetState[wid]; r = r.union(state.rect); } return r; },
--- a/toolkit/content/tests/widgets/tree_shared.js +++ b/toolkit/content/tests/widgets/tree_shared.js @@ -239,17 +239,17 @@ function testtag_tree_TreeSelection(tree selection.toggleSelect(2); selection.toggleSelect(3); testtag_tree_TreeSelection_State(tree, testid + "toggleSelect 2", 3, []); // the current index doesn't change after a selectAll, so it should still be set to 1 // selectAll has no effect on single selection trees selection.currentIndex = 1; selection.selectAll(); - testtag_tree_TreeSelection_State(tree, testid + "selectAll 1", 1, multiple ? [0, 1, 2, 3, 4, 5, 6 , 7] : []); + testtag_tree_TreeSelection_State(tree, testid + "selectAll 1", 1, multiple ? [0, 1, 2, 3, 4, 5, 6, 7] : []); selection.toggleSelect(2); testtag_tree_TreeSelection_State(tree, testid + "toggleSelect after selectAll", 2, multiple ? [0, 1, 3, 4, 5, 6, 7] : [2]); selection.clearSelection(); testtag_tree_TreeSelection_State(tree, testid + "clearSelection", 2, []); selection.toggleSelect(3); selection.toggleSelect(1); if (multiple) {
--- a/toolkit/content/widgets/colorpicker.xml +++ b/toolkit/content/widgets/colorpicker.xml @@ -399,17 +399,17 @@ this.hoverCell(this.mSelectedCell); } ]]></handler> <handler event="focus" phase="capturing"> <![CDATA[ if (!mIsPopup && this.getAttribute('focused') != 'true') { - this.setAttribute('focused','true'); + this.setAttribute('focused', 'true'); document.addEventListener("keydown", this, true); if (this.mSelectedCell) this.hoverCell(this.mSelectedCell); } ]]> </handler> <handler event="blur" phase="capturing">
--- a/toolkit/content/widgets/datetimepicker.xml +++ b/toolkit/content/widgets/datetimepicker.xml @@ -477,28 +477,28 @@ <body> <![CDATA[ this.hourField = this._fieldOne; this.minuteField = this._fieldTwo; this.secondField = this._fieldThree; var numberOrder = /^(\D*)\s*(\d+)(\D*)(\d+)(\D*)(\d+)\s*(\D*)$/; - var pmTime = new Date(2000,0,1,16,7,9).toLocaleFormat("%X"); + var pmTime = new Date(2000, 0, 1, 16, 7, 9).toLocaleFormat("%X"); var numberFields = pmTime.match(numberOrder); if (numberFields) { this._separatorFirst.value = numberFields[3]; this._separatorSecond.value = numberFields[5]; if (Number(numberFields[2]) > 12) this.is24HourClock = true; else this.pmIndicator = numberFields[1] || numberFields[7]; } - var amTime = new Date(2000,0,1,1,7,9).toLocaleFormat("%X"); + var amTime = new Date(2000, 0, 1, 1, 7, 9).toLocaleFormat("%X"); numberFields = amTime.match(numberOrder); if (numberFields) { this.hourLeadingZero = (numberFields[2].length > 1); this.minuteLeadingZero = (numberFields[4].length > 1); this.secondLeadingZero = (numberFields[6].length > 1); if (!this.is24HourClock) { this.amIndicator = numberFields[1] || numberFields[7]; @@ -765,17 +765,17 @@ var dfield = "input-three"; var twoDigitYear = false; this.yearLeadingZero = true; this.monthLeadingZero = true; this.dateLeadingZero = true; var numberOrder = /^(\D*)\s*(\d+)(\D*)(\d+)(\D*)(\d+)\s*(\D*)$/; - var dt = new Date(2002,9,4).toLocaleFormat("%x"); + var dt = new Date(2002, 9, 4).toLocaleFormat("%x"); var numberFields = dt.match(numberOrder); if (numberFields) { this._separatorFirst.value = numberFields[3]; this._separatorSecond.value = numberFields[5]; var yi = 2, mi = 4, di = 6; function fieldForNumber(i) {
--- a/toolkit/content/widgets/dialog.xml +++ b/toolkit/content/widgets/dialog.xml @@ -267,26 +267,26 @@ if (!button.hasAttribute("icon")) { // if there's an icon specified, use that if (this.hasAttribute("buttonicon"+dlgtype)) button.setAttribute("icon", this.getAttribute("buttonicon"+dlgtype)); // otherwise set defaults else switch (dlgtype) { case "accept": - button.setAttribute("icon","accept"); + button.setAttribute("icon", "accept"); break; case "cancel": - button.setAttribute("icon","cancel"); + button.setAttribute("icon", "cancel"); break; case "disclosure": - button.setAttribute("icon","properties"); + button.setAttribute("icon", "properties"); break; case "help": - button.setAttribute("icon","help"); + button.setAttribute("icon", "help"); break; default: break; } } } // ensure that hitting enter triggers the default button command
--- a/toolkit/content/widgets/menulist.xml +++ b/toolkit/content/widgets/menulist.xml @@ -536,17 +536,17 @@ this.inputField.select(); </body> </method> </implementation> <handlers> <handler event="focus" phase="capturing"> <![CDATA[ - this.setAttribute('focused','true'); + this.setAttribute('focused', 'true'); ]]> </handler> <handler event="blur" phase="capturing"> <![CDATA[ this.removeAttribute('focused'); ]]> </handler>
--- a/toolkit/content/widgets/tree.xml +++ b/toolkit/content/widgets/tree.xml @@ -833,17 +833,17 @@ } var c = row + 1; var view = this.view; if (c < view.rowCount && view.getParentIndex(c) == row) { // If already opened, select the first child. // The getParentIndex test above ensures that the children // are already populated and ready. - if (cellSelType && !this.view.isSelectable(c , currentColumn)) { + if (cellSelType && !this.view.isSelectable(c, currentColumn)) { let col = this._getNextColumn(c, false); if (col) { this.view.selection.currentColumn = col; } } this.view.selection.timedSelect(c, this._selectDelay); this.treeBoxObject.ensureRowIsVisible(c); event.preventDefault();
--- a/toolkit/crashreporter/CrashSubmit.jsm +++ b/toolkit/crashreporter/CrashSubmit.jsm @@ -153,17 +153,17 @@ function pruneSavedDumps() { let entry = entries.getNext().QueryInterface(Ci.nsIFile); if (entry.isFile()) { let matches = entry.leafName.match(/(.+)\.extra$/); if (matches) entriesArray.push(entry); } } - entriesArray.sort(function(a,b) { + entriesArray.sort(function(a, b) { let dateA = a.lastModifiedTime; let dateB = b.lastModifiedTime; if (dateA < dateB) return -1; if (dateB < dateA) return 1; return 0; }); @@ -487,17 +487,17 @@ this.CrashSubmit = { * @param id * Filename (minus .dmp extension) of the report to ignore */ ignore: function CrashSubmit_ignore(id) { let [dump, extra, mem] = getPendingMinidump(id); return OS.File.open(dump.path + ".ignore", {create: true}, {unixFlags: OS.Constants.libc.O_CREAT}) - .then((file) => {file.close(); }); + .then((file) => { file.close(); }); }, /** * Get the list of pending crash IDs. * * @return an array of string, each being an ID as * expected to be passed to submit() */
--- a/toolkit/crashreporter/test/browser/browser_aboutCrashesResubmit.js +++ b/toolkit/crashreporter/test/browser/browser_aboutCrashesResubmit.js @@ -134,17 +134,17 @@ function test() { crashes.push(addPendingCrashreport(crD, crashes[crashes.length - 1].date + 60000, {'ServerURL': 'http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs', 'ProductName': 'Test App', // test that we don't truncate // at = (bug 512853) 'Foo': 'ABC=XYZ' })); - crashes.sort((a,b) => b.date - a.date); + crashes.sort((a, b) => b.date - a.date); // set this pref so we can link to our test server Services.prefs.setCharPref("breakpad.reportURL", "http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs?id="); BrowserTestUtils.openNewForegroundTab(gBrowser, "about:crashes").then((tab) => { ContentTask.spawn(tab.linkedBrowser, crashes, check_crash_list) .then(() => check_submit_pending(tab, crashes));
--- a/toolkit/crashreporter/test/browser/head.js +++ b/toolkit/crashreporter/test/browser/head.js @@ -89,17 +89,17 @@ function add_fake_crashes(crD, count) { file.create(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666); file.lastModifiedTime = date; results.push({'id': uuid, 'date': date, 'pending': false}); date += 60000; } // we want them sorted newest to oldest, since that's the order // that about:crashes lists them in - results.sort((a,b) => b.date - a.date); + results.sort((a, b) => b.date - a.date); return results; } function writeDataToFile(file, data) { var fstream = Cc["@mozilla.org/network/file-output-stream;1"] .createInstance(Ci.nsIFileOutputStream); // open, write, truncate fstream.init(file, -1, -1, 0);
--- a/toolkit/forgetaboutsite/test/browser/browser_clearplugindata.js +++ b/toolkit/forgetaboutsite/test/browser/browser_clearplugindata.js @@ -58,23 +58,23 @@ add_task(function* setup() { add_task(function* () { yield BrowserTestUtils.openNewForegroundTab(gBrowser, testURL); // Set data for the plugin after the page load. yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() { content.wrappedJSObject.testSteps(); }); - ok(stored(["192.168.1.1","foo.com","nonexistent.foo.com","bar.com","localhost"]), + ok(stored(["192.168.1.1", "foo.com", "nonexistent.foo.com", "bar.com", "localhost"]), "Data stored for sites"); // Clear data for "foo.com" and its subdomains. yield ForgetAboutSite.removeDataFromDomain("foo.com"); - ok(stored(["bar.com","192.168.1.1","localhost"]), "Data stored for sites"); + ok(stored(["bar.com", "192.168.1.1", "localhost"]), "Data stored for sites"); ok(!stored(["foo.com"]), "Data cleared for foo.com"); ok(!stored(["bar.foo.com"]), "Data cleared for subdomains of foo.com"); // Clear data for "bar.com" using a subdomain. yield ForgetAboutSite.removeDataFromDomain("foo.bar.com"); ok(!stored(["bar.com"]), "Data cleared for bar.com"); // Clear data for "192.168.1.1".
--- a/toolkit/identity/MinimalIdentity.jsm +++ b/toolkit/identity/MinimalIdentity.jsm @@ -103,17 +103,17 @@ IDService.prototype = { watch: function watch(aRpCaller) { // store the caller structure and notify the UI observers this._rpFlows[aRpCaller.id] = aRpCaller; log("flows:", Object.keys(this._rpFlows).join(', ')); let options = makeMessageObject(aRpCaller); log("sending identity-controller-watch:", options); - Services.obs.notifyObservers({wrappedJSObject: options},"identity-controller-watch", null); + Services.obs.notifyObservers({wrappedJSObject: options}, "identity-controller-watch", null); }, /* * The RP has gone away; remove handles to the hidden iframe. * It's probable that the frame will already have been cleaned up. */ unwatch: function unwatch(aRpId, aTargetMM) { let rp = this._rpFlows[aRpId];
--- a/toolkit/identity/tests/unit/head_identity.js +++ b/toolkit/identity/tests/unit/head_identity.js @@ -178,17 +178,17 @@ function call_sequentially() { let funcs = arguments; return function() { if (!funcs[numCalls]) { let argString = Array.prototype.slice.call(arguments).join(","); do_throw("Too many calls: " + argString); return; } - funcs[numCalls].apply(funcs[numCalls],arguments); + funcs[numCalls].apply(funcs[numCalls], arguments); numCalls += 1; }; } /* * Setup a provisioning workflow with appropriate callbacks * * identity is the email we're provisioning.
--- a/toolkit/identity/tests/unit/test_provisioning.js +++ b/toolkit/identity/tests/unit/test_provisioning.js @@ -158,17 +158,17 @@ function test_register_certificate() { IdentityProvider.beginProvisioning(caller); }, function(err) { // we should be cool! do_check_null(err); // check that the cert is there let identity = get_idstore().fetchIdentity(TEST_USER); - do_check_neq(identity,null); + do_check_neq(identity, null); do_check_eq(identity.cert, "fake-cert-42"); do_execute_soon(function check_done() { // cleanup will happen after the callback is called check_provision_flow_done(_callerId); do_test_finished(); run_next_test(); @@ -197,17 +197,17 @@ function test_get_assertion_after_provis IdentityProvider.beginProvisioning(caller); }, function(err) { // we should be cool! do_check_null(err); // check that the cert is there let identity = get_idstore().fetchIdentity(TEST_USER); - do_check_neq(identity,null); + do_check_neq(identity, null); do_check_eq(identity.cert, "fake-cert-42"); do_execute_soon(function check_done() { // cleanup will happen after the callback is called check_provision_flow_done(_callerId); do_test_finished(); run_next_test();
--- a/toolkit/identity/tests/unit/test_store.js +++ b/toolkit/identity/tests/unit/test_store.js @@ -50,15 +50,15 @@ function test_id_store() { // clear login state store.clearLoginState(TEST_URL); do_check_null(store.getLoginState(TEST_URL)); do_check_null(store.getLoginState(TEST_URL2)); run_next_test(); } -var TESTS = [test_id_store,]; +var TESTS = [test_id_store, ]; TESTS.forEach(add_test); function run_test() { run_next_test(); }
--- a/toolkit/modules/Finder.jsm +++ b/toolkit/modules/Finder.jsm @@ -1,14 +1,14 @@ // vim: set ts=2 sw=2 sts=2 tw=80: // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -this.EXPORTED_SYMBOLS = ["Finder","GetClipboardSearchString"]; +this.EXPORTED_SYMBOLS = ["Finder", "GetClipboardSearchString"]; const { interfaces: Ci, classes: Cc, utils: Cu } = Components; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Geometry.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/Task.jsm");
--- a/toolkit/modules/PopupNotifications.jsm +++ b/toolkit/modules/PopupNotifications.jsm @@ -873,17 +873,17 @@ PopupNotifications.prototype = { for (let anchorElement of anchorElements) { anchorElement.setAttribute(ICON_ATTRIBUTE_SHOWING, "true"); // Use the anchorID as a class along with the default icon class as a // fallback if anchorID is not defined in CSS. We always use the first // notifications icon, so in the case of multiple notifications we'll // only use the default icon. if (anchorElement.classList.contains("notification-anchor-icon")) { // remove previous icon classes - let className = anchorElement.className.replace(/([-\w]+-notification-icon\s?)/g,"") + let className = anchorElement.className.replace(/([-\w]+-notification-icon\s?)/g, "") if (notifications.length > 0) { // Find the first notification this anchor used for. let notification = notifications[0]; for (let n of notifications) { if (n.anchorElement == anchorElement) { notification = n; break; }
--- a/toolkit/modules/PropertyListUtils.jsm +++ b/toolkit/modules/PropertyListUtils.jsm @@ -233,17 +233,17 @@ this.PropertyListUtils = Object.freeze({ * Reader for binary-format property lists. * * @param aBuffer * ArrayBuffer object from which the binary plist should be read. */ function BinaryPropertyListReader(aBuffer) { this._dataView = new DataView(aBuffer); - const JS_MAX_INT = Math.pow(2,53); + const JS_MAX_INT = Math.pow(2, 53); this._JS_MAX_INT_SIGNED = ctypes.Int64(JS_MAX_INT); this._JS_MAX_INT_UNSIGNED = ctypes.UInt64(JS_MAX_INT); this._JS_MIN_INT = ctypes.Int64(-JS_MAX_INT); try { this._readTrailerInfo(); this._readObjectsOffsets(); }
--- a/toolkit/modules/RemoteFinder.jsm +++ b/toolkit/modules/RemoteFinder.jsm @@ -26,29 +26,29 @@ function RemoteFinder(browser) { } RemoteFinder.prototype = { destroy() { this._browser.messageManager.sendAsyncMessage("Finder:Destroy"); if (this._messageManager) { this._messageManager.removeMessageListener("Finder:Result", this); this._messageManager.removeMessageListener("Finder:MatchesResult", this); - this._messageManager.removeMessageListener("Finder:CurrentSelectionResult",this); - this._messageManager.removeMessageListener("Finder:HighlightFinished",this); + this._messageManager.removeMessageListener("Finder:CurrentSelectionResult", this); + this._messageManager.removeMessageListener("Finder:HighlightFinished", this); } this._listeners.clear(); this._browser = this._messageManager = null; }, swapBrowser: function(aBrowser) { if (this._messageManager) { this._messageManager.removeMessageListener("Finder:Result", this); this._messageManager.removeMessageListener("Finder:MatchesResult", this); - this._messageManager.removeMessageListener("Finder:CurrentSelectionResult",this); - this._messageManager.removeMessageListener("Finder:HighlightFinished",this); + this._messageManager.removeMessageListener("Finder:CurrentSelectionResult", this); + this._messageManager.removeMessageListener("Finder:HighlightFinished", this); } else { aBrowser.messageManager.sendAsyncMessage("Finder:Initialize"); } this._browser = aBrowser; this._messageManager = this._browser.messageManager; this._messageManager.addMessageListener("Finder:Result", this);
--- a/toolkit/modules/secondscreen/RokuApp.jsm +++ b/toolkit/modules/secondscreen/RokuApp.jsm @@ -139,17 +139,17 @@ RokuApp.prototype = { /* RemoteMedia provides a wrapper for using TCP socket to control Roku apps. * The server implementation must be built into the Roku receiver app. */ function RemoteMedia(url, listener) { this._url = url; this._listener = listener; this._status = "uninitialized"; - let serverURI = Services.io.newURI(this._url , null, null); + let serverURI = Services.io.newURI(this._url, null, null); this._socket = Cc["@mozilla.org/network/socket-transport-service;1"].getService(Ci.nsISocketTransportService).createTransport(null, 0, serverURI.host, 9191, null); this._outputStream = this._socket.openOutputStream(0, 0, 0); this._scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); this._inputStream = this._socket.openInputStream(0, 0, 0); this._pump = Cc["@mozilla.org/network/input-stream-pump;1"].createInstance(Ci.nsIInputStreamPump); this._pump.init(this._inputStream, -1, -1, 0, 0, true);
--- a/toolkit/modules/tests/xpcshell/test_GMPInstallManager.js +++ b/toolkit/modules/tests/xpcshell/test_GMPInstallManager.js @@ -13,17 +13,17 @@ Cu.import("resource://gre/modules/Promis Cu.import("resource://gre/modules/Preferences.jsm") Cu.import("resource://gre/modules/UpdateUtils.jsm"); var { computeHash } = Cu.import("resource://gre/modules/addons/ProductAddonChecker.jsm"); var ProductAddonCheckerScope = Cu.import("resource://gre/modules/addons/ProductAddonChecker.jsm"); do_get_profile(); -function run_test() {Cu.import("resource://gre/modules/Preferences.jsm") +function run_test() { Cu.import("resource://gre/modules/Preferences.jsm") Preferences.set("media.gmp.log.dump", true); Preferences.set("media.gmp.log.level", 0); run_next_test(); } /** * Tests that the helper used for preferences works correctly */
--- a/toolkit/modules/tests/xpcshell/test_Log.js +++ b/toolkit/modules/tests/xpcshell/test_Log.js @@ -1,11 +1,13 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ +/* eslint-disable block-spacing */ + var {utils: Cu} = Components; Cu.import("resource://gre/modules/NetUtil.jsm"); Cu.import("resource://gre/modules/osfile.jsm"); Cu.import("resource://gre/modules/Promise.jsm") Cu.import("resource://gre/modules/Log.jsm");
--- a/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js +++ b/toolkit/modules/tests/xpcshell/test_MatchURLFilters.js @@ -36,17 +36,17 @@ function expectThrow({url, filters, exce add_task(function* test_match_url_filters() { const shouldPass = true; const shouldFail = true; const shouldThrow = true; var testCases = [ // Empty, undefined and null filters. {shouldThrow, exceptionMessageContains: "filters array should not be empty", - filters: [], url: "http://mozilla.org",}, + filters: [], url: "http://mozilla.org", }, {shouldThrow, exceptionMessageContains: "filters should be an array", filters: undefined, url: "http://mozilla.org"}, {shouldThrow, exceptionMessageContains: "filters should be an array", filters: null, url: "http://mozilla.org"}, // Wrong formats (in a real webextension this will be blocked by the schema validation). {shouldThrow, exceptionMessageContains: "filters should be an array", filters: {}, url: "http://mozilla.org"},
--- a/toolkit/modules/tests/xpcshell/test_Promise.js +++ b/toolkit/modules/tests/xpcshell/test_Promise.js @@ -943,17 +943,17 @@ tests.push( do_print("Setting wait for first promise"); promise1.then(value => { do_print("Starting event loop"); event_loop(); }, null); do_print("Setting wait for second promise"); - return promise2.catch(error => {return 3;}) + return promise2.catch(error => { return 3; }) .then( count => { shouldExitNestedEventLoop = true; }); })); function wait_for_uncaught(aMustAppear, aTimeout = undefined) { let remaining = new Set(); @@ -1069,17 +1069,17 @@ function wait_for_uncaught(aMustAppear, // Test that caught errors are not reported as uncaught tests.push( make_promise_test(function test_caught_is_not_reported() { let salt = (Math.random() * ( Math.pow(2, 24) - 1 )); let promise = wait_for_uncaught([salt], 500); (function() { let uncaught = Promise.reject("This error, on the other hand, is caught " + salt); - uncaught.catch(function() { /* ignore rejection */}); + uncaught.catch(function() { /* ignore rejection */ }); uncaught = null; })(); // Isolate this in a function to increase likelihood that the gc will // realise that |uncaught| has remained uncaught. Components.utils.forceGC(); return promise.then(function onSuccess() { throw new Error("This error was caught and should not have been reported");
--- a/toolkit/mozapps/downloads/content/downloads.js +++ b/toolkit/mozapps/downloads/content/downloads.js @@ -1275,17 +1275,17 @@ function downloadMatchesSearch(aItem) // we should be using real URLs all the time, but until // bug 239948 is fully fixed, this will do... // // note, this will thrown an exception if the native path // is not valid (for example a native Windows path on a Mac) // see bug #392386 for details function getLocalFileFromNativePathOrUrl(aPathOrUrl) { - if (aPathOrUrl.substring(0,7) == "file://") { + if (aPathOrUrl.substring(0, 7) == "file://") { // if this is a URL, get the file from that let ioSvc = Cc["@mozilla.org/network/io-service;1"]. getService(Ci.nsIIOService); // XXX it's possible that using a null char-set here is bad const fileUrl = ioSvc.newURI(aPathOrUrl, null, null). QueryInterface(Ci.nsIFileURL); return fileUrl.file.clone().QueryInterface(Ci.nsILocalFile);
--- a/toolkit/mozapps/extensions/DeferredSave.jsm +++ b/toolkit/mozapps/extensions/DeferredSave.jsm @@ -212,17 +212,17 @@ this.DeferredSave.prototype = { this.logger.error("Deferred save dataProvider failed", e); writing.then(null, error => {}) .then(count => { pending.reject(e); }); return; } - writing.then(null, error => {return 0;}) + writing.then(null, error => { return 0; }) .then(count => { this.logger.debug("Starting write"); this.totalSaves++; this.writeInProgress = true; OS.File.writeAtomic(this._path, toSave, {tmpPath: this._path + ".tmp"}) .then( result => {
--- a/toolkit/mozapps/extensions/amWebAPI.js +++ b/toolkit/mozapps/extensions/amWebAPI.js @@ -163,17 +163,17 @@ function WebAPITask(apiRequest, apiArgs, reject(new win.Error("Unexpected internal error")); }); }); } } Addon.prototype = { uninstall: WebAPITask("addonUninstall", function() { return [this.id]; }), - setEnabled: WebAPITask("addonSetEnabled", function(value) {return [this.id, value]; }), + setEnabled: WebAPITask("addonSetEnabled", function(value) { return [this.id, value]; }), }; const INSTALL_EVENTS = [ "onDownloadStarted", "onDownloadProgress", "onDownloadEnded", "onDownloadCancelled", "onDownloadFailed",
--- a/toolkit/mozapps/extensions/content/extensions.js +++ b/toolkit/mozapps/extensions/content/extensions.js @@ -681,17 +681,17 @@ var gViewController = { } else { gViewController.replaceView(gViewDefault); } } }, parseViewId: function(aViewId) { var matchRegex = /^addons:\/\/([^\/]+)\/(.*)$/; - var [,viewType, viewParam] = aViewId.match(matchRegex) || []; + var [, viewType, viewParam] = aViewId.match(matchRegex) || []; return {type: viewType, param: decodeURIComponent(viewParam)}; }, get isLoading() { return !this.currentViewObj || this.currentViewObj.node.hasAttribute("loading"); }, loadView: function(aViewId) {
--- a/toolkit/mozapps/extensions/test/browser/browser_bug562797.js +++ b/toolkit/mozapps/extensions/test/browser/browser_bug562797.js @@ -88,21 +88,21 @@ function go_back(aManager) { gBrowser.goBack(); } else { EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("back-btn"), { }, aManager); } } function go_back_backspace(aManager) { - EventUtils.synthesizeKey("VK_BACK_SPACE",{}); + EventUtils.synthesizeKey("VK_BACK_SPACE", {}); } function go_forward_backspace(aManager) { - EventUtils.synthesizeKey("VK_BACK_SPACE",{shiftKey: true}); + EventUtils.synthesizeKey("VK_BACK_SPACE", {shiftKey: true}); } function go_forward(aManager) { if (gUseInContentUI) { gBrowser.goForward(); } else { EventUtils.synthesizeMouseAtCenter(aManager.document.getElementById("forward-btn"), { }, aManager);
--- a/toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js +++ b/toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js @@ -84,24 +84,24 @@ function test() { gProvider.createAddons([{ id: "inlinesettings2@tests.mozilla.org", name: "Inline Settings (Regular)", version: "1", optionsURL: CHROMEROOT + "options.xul", optionsType: AddonManager.OPTIONS_TYPE_INLINE, operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE, - },{ + }, { id: "inlinesettings3@tests.mozilla.org", name: "Inline Settings (More Options)", description: "Tests for option types introduced after Mozilla 7.0", version: "1", optionsURL: CHROMEROOT + "more_options.xul", optionsType: AddonManager.OPTIONS_TYPE_INLINE - },{ + }, { id: "noninlinesettings@tests.mozilla.org", name: "Non-Inline Settings", version: "1", optionsURL: CHROMEROOT + "addon_prefs.xul" }]); installAddon(function () { open_manager("addons://list/extension", function(aWindow) {
--- a/toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js +++ b/toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js @@ -84,24 +84,24 @@ function test() { gProvider.createAddons([{ id: "inlinesettings2@tests.mozilla.org", name: "Inline Settings (Regular)", version: "1", optionsURL: CHROMEROOT + "options.xul", optionsType: AddonManager.OPTIONS_TYPE_INLINE_INFO, operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_DISABLE, - },{ + }, { id: "inlinesettings3@tests.mozilla.org", name: "Inline Settings (More Options)", description: "Tests for option types introduced after Mozilla 7.0", version: "1", optionsURL: CHROMEROOT + "more_options.xul", optionsType: AddonManager.OPTIONS_TYPE_INLINE_INFO - },{ + }, { id: "noninlinesettings@tests.mozilla.org", name: "Non-Inline Settings", version: "1", optionsURL: CHROMEROOT + "addon_prefs.xul" }]); installAddon(function () { open_manager("addons://list/extension", function(aWindow) {
--- a/toolkit/mozapps/extensions/test/browser/browser_searching.js +++ b/toolkit/mozapps/extensions/test/browser/browser_searching.js @@ -207,31 +207,31 @@ function get_actual_results() { * Boolean representing if local results are expected * @return A pair: [array of results with an expected order, * array of results with unknown order] */ function get_expected_results(aSortBy, aLocalExpected) { var expectedOrder = null, unknownOrder = null; switch (aSortBy) { case "relevancescore": - expectedOrder = [ "addon2" , "remote1", "install2", "addon1", - "install1", "remote2", "remote3" , "remote4" ]; + expectedOrder = [ "addon2", "remote1", "install2", "addon1", + "install1", "remote2", "remote3", "remote4" ]; unknownOrder = []; break; case "name": // Defaults to ascending order - expectedOrder = [ "install1", "remote1", "addon2" , "remote2", - "remote3" , "addon1" , "install2", "remote4" ]; + expectedOrder = [ "install1", "remote1", "addon2", "remote2", + "remote3", "addon1", "install2", "remote4" ]; unknownOrder = []; break; case "dateUpdated": expectedOrder = [ "addon1", "addon2" ]; // Updated date not available for installs and remote add-ons unknownOrder = [ "install1", "install2", "remote1", - "remote2" , "remote3" , "remote4" ]; + "remote2", "remote3", "remote4" ]; break; default: ok(false, "Should recognize sortBy when checking the order of items"); } // Only keep expected results function filterResults(aId) { // Include REMOTE_TO_INSTALL as a local add-on if it has been installed
--- a/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository_cache.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_AddonRepository_cache.js @@ -127,17 +127,17 @@ const REPOSITORY_ADDONS = [{ developerComments: "Repo Add-on 2 - Developer Comments", eula: "Repo Add-on 2 - EULA", iconURL: BASE_URL + "/repo/2/icon.png", icons: { "32": BASE_URL + "/repo/2/icon.png" }, screenshots: [{ url: BASE_URL + "/repo/2/firstFull.png", thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png", caption: "Repo Add-on 2 - First Caption" - } , { + }, { url: BASE_URL + "/repo/2/secondFull.png", thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png", caption: "Repo Add-on 2 - Second Caption" }], homepageURL: BASE_URL + "/repo/2/homepage.html", supportURL: BASE_URL + "/repo/2/support.html", contributionURL: BASE_URL + "/repo/2/meetDevelopers.html", contributionAmount: null, @@ -155,17 +155,17 @@ const REPOSITORY_ADDONS = [{ name: "Repo Add-on 3", version: "2.3", iconURL: BASE_URL + "/repo/3/icon.png", icons: { "32": BASE_URL + "/repo/3/icon.png" }, screenshots: [{ url: BASE_URL + "/repo/3/firstFull.png", thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png", caption: "Repo Add-on 3 - First Caption" - } , { + }, { url: BASE_URL + "/repo/3/secondFull.png", thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png", caption: "Repo Add-on 3 - Second Caption" }] }]; // Expected add-ons when not using cache @@ -283,17 +283,17 @@ const WITH_CACHE = [{ developerComments: "Repo Add-on 2 - Developer Comments", eula: "Repo Add-on 2 - EULA", iconURL: BASE_URL + "/repo/2/icon.png", icons: { "32": BASE_URL + "/repo/2/icon.png" }, screenshots: [{ url: BASE_URL + "/repo/2/firstFull.png", thumbnailURL: BASE_URL + "/repo/2/firstThumbnail.png", caption: "Repo Add-on 2 - First Caption" - } , { + }, { url: BASE_URL + "/repo/2/secondFull.png", thumbnailURL: BASE_URL + "/repo/2/secondThumbnail.png", caption: "Repo Add-on 2 - Second Caption" }], homepageURL: BASE_URL + "/repo/2/homepage.html", supportURL: BASE_URL + "/repo/2/support.html", contributionURL: BASE_URL + "/repo/2/meetDevelopers.html", contributionAmount: null, @@ -315,17 +315,17 @@ const WITH_CACHE = [{ }, get icons () { return { "32": get_subfile_uri(ADDON_IDS[2], "icon.png") }; }, screenshots: [{ url: BASE_URL + "/repo/3/firstFull.png", thumbnailURL: BASE_URL + "/repo/3/firstThumbnail.png", caption: "Repo Add-on 3 - First Caption" - } , { + }, { url: BASE_URL + "/repo/3/secondFull.png", thumbnailURL: BASE_URL + "/repo/3/secondThumbnail.png", caption: "Repo Add-on 3 - Second Caption" }], sourceURI: NetUtil.newURI(ADDON_FILES[2]).spec }]; // Expected add-ons when using cache
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap_globals.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bootstrap_globals.js @@ -18,17 +18,17 @@ function run_test() { startupManager(); let sawGlobals = false; Services.obs.addObserver(function(subject) { subject.wrappedJSObject.expectedGlobals = EXPECTED_GLOBALS; }, "bootstrap-request-globals", false); Services.obs.addObserver(function({ wrappedJSObject: seenGlobals }) { - for (let [name,] of EXPECTED_GLOBALS) + for (let [name, ] of EXPECTED_GLOBALS) do_check_true(seenGlobals.has(name)); sawGlobals = true; }, "bootstrap-seen-globals", false); installAllFiles([do_get_addon("bootstrap_globals")], function() { do_check_true(sawGlobals); shutdownManager();
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug449027.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug449027.js @@ -387,17 +387,17 @@ function check_test_pt1() { dump("Checking pt 1\n"); AddonManager.getAddonsByIDs(ADDONS.map(a => a.id), function(addons) { for (var i = 0; i < ADDONS.length; i++) { if (!addons[i]) do_throw("Addon " + (i + 1) + " did not get installed correctly"); } - do_execute_soon(function checkstate1() {check_state("start", null, run_test_pt2);}); + do_execute_soon(function checkstate1() { check_state("start", null, run_test_pt2); }); }); } /** * Load the toolkit based blocks */ function run_test_pt2() { dump("Running test pt 2\n");
--- a/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_bug455906.js @@ -432,21 +432,21 @@ function check_test_pt3() { do_check_eq(check_plugin_state(PLUGINS[2]), "false,true"); do_check_eq(check_plugin_state(PLUGINS[3]), "true,true"); do_check_eq(check_plugin_state(PLUGINS[4]), "false,true"); // Should have gained the blocklist state but no longer be soft disabled do_check_eq(check_addon_state(addons[3]), "false,false,true"); // Check blockIDs are correct - do_check_eq(blocklist.getAddonBlocklistURL(addons[0]),create_blocklistURL(addons[0].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[1]),create_blocklistURL(addons[1].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[2]),create_blocklistURL(addons[2].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[3]),create_blocklistURL(addons[3].id)); - do_check_eq(blocklist.getAddonBlocklistURL(addons[4]),create_blocklistURL(addons[4].id)); + do_check_eq(blocklist.getAddonBlocklistURL(addons[0]), create_blocklistURL(addons[0].id)); + do_check_eq(blocklist.getAddonBlocklistURL(addons[1]), create_blocklistURL(addons[1].id)); + do_check_eq(blocklist.getAddonBlocklistURL(addons[2]), create_blocklistURL(addons[2].id)); + do_check_eq(blocklist.getAddonBlocklistURL(addons[3]), create_blocklistURL(addons[3].id)); + do_check_eq(blocklist.getAddonBlocklistURL(addons[4]), create_blocklistURL(addons[4].id)); // All plugins have the same blockID on the test do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[0]), create_blocklistURL('test_bug455906_plugin')); do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[1]), create_blocklistURL('test_bug455906_plugin')); do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[2]), create_blocklistURL('test_bug455906_plugin')); do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[3]), create_blocklistURL('test_bug455906_plugin')); do_check_eq(blocklist.getPluginBlocklistURL(PLUGINS[4]), create_blocklistURL('test_bug455906_plugin'));
--- a/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_install_strictcompat.js @@ -178,17 +178,17 @@ function check_test_1() { do_check_false(a1.hasResource("foo.bar")); let uri = do_get_addon_root_uri(profileDir, "addon1@tests.mozilla.org"); do_check_eq(a1.getResourceURI("install.rdf").spec, uri + "install.rdf"); do_check_eq(a1.iconURL, uri + "icon.png"); do_check_eq(a1.icon64URL, uri + "icon64.png"); a1.uninstall(); - do_execute_soon(function() {run_test_2(a1)}); + do_execute_soon(function() { run_test_2(a1) }); }); }); })); }); } // Tests that an install from a url downloads. function run_test_2(aAddon) {
--- a/toolkit/mozapps/preferences/changemp.js +++ b/toolkit/mozapps/preferences/changemp.js @@ -217,21 +217,21 @@ function checkPasswords() if (oldpwbox) { var initpw = oldpwbox.getAttribute("inited"); if (initpw == "empty" && pw1 == "") { // The token has already been initialized, therefore this dialog // was called with the intention to change the password. // The token currently uses an empty password. // We will not allow changing the password from empty to empty. - ok.setAttribute("disabled","true"); + ok.setAttribute("disabled", "true"); return; } } if (pw1 == pw2) { - ok.setAttribute("disabled","false"); + ok.setAttribute("disabled", "false"); } else { - ok.setAttribute("disabled","true"); + ok.setAttribute("disabled", "true"); } }
--- a/toolkit/mozapps/update/content/updates.js +++ b/toolkit/mozapps/update/content/updates.js @@ -1282,17 +1282,17 @@ var gErrorsPage = { /** * Initialize */ onPageShow: function() { gUpdates.setButtons(null, null, "okButton", true); gUpdates.wiz.getButton("finish").focus(); var statusText = gUpdates.update.statusText; - LOG("gErrorsPage" , "onPageShow - update.statusText: " + statusText); + LOG("gErrorsPage", "onPageShow - update.statusText: " + statusText); var errorReason = document.getElementById("errorReason"); errorReason.value = statusText; var manualURL = Services.urlFormatter.formatURLPref(PREF_APP_UPDATE_URL_MANUAL); var errorLinkLabel = document.getElementById("errorLinkLabel"); errorLinkLabel.value = manualURL; errorLinkLabel.setAttribute("url", manualURL); } @@ -1433,17 +1433,17 @@ var gFinishedPage = { }, /** * Called when the wizard finishes, i.e. the "Restart Now" button is * clicked. */ onWizardFinish: function() { // Do the restart - LOG("gFinishedPage" , "onWizardFinish - restarting the application"); + LOG("gFinishedPage", "onWizardFinish - restarting the application"); let aus = CoC["@mozilla.org/updates/update-service;1"]. getService(CoI.nsIApplicationUpdateService); if (aus.elevationRequired) { let um = CoC["@mozilla.org/updates/update-manager;1"]. getService(CoI.nsIUpdateManager); if (um) { um.elevationOptedIn();
--- a/toolkit/mozapps/update/nsUpdateService.js +++ b/toolkit/mozapps/update/nsUpdateService.js @@ -2712,17 +2712,17 @@ UpdateService.prototype = { return; } LOG("UpdateService:_selectAndInstallUpdate - download the update"); let status = this.downloadUpdate(update, true); if (status == STATE_NONE) { cleanupActiveUpdate(); } - AUSTLMY.pingCheckCode(this._pingSuffix,AUSTLMY.CHK_DOWNLOAD_UPDATE); + AUSTLMY.pingCheckCode(this._pingSuffix, AUSTLMY.CHK_DOWNLOAD_UPDATE); }, _showPrompt: function AUS__showPrompt(update) { let prompter = Cc["@mozilla.org/updates/update-prompt;1"]. createInstance(Ci.nsIUpdatePrompt); prompter.showUpdateAvailable(update); }, @@ -3418,17 +3418,17 @@ Checker.prototype = { // final destination. It does not help if a resource is already // cached locally. this._request.setRequestHeader("Cache-Control", "no-cache"); // HTTP/1.0 servers might not implement Cache-Control and // might only implement Pragma: no-cache this._request.setRequestHeader("Pragma", "no-cache"); var self = this; - this._request.addEventListener("error", function(event) { self.onError(event); } ,false); + this._request.addEventListener("error", function(event) { self.onError(event); }, false); this._request.addEventListener("load", function(event) { self.onLoad(event); }, false); LOG("Checker:checkForUpdates - sending request to: " + url); this._request.send(null); this._callback = listener; },
--- a/toolkit/mozapps/update/tests/data/sharedUpdateXML.js +++ b/toolkit/mozapps/update/tests/data/sharedUpdateXML.js @@ -113,17 +113,17 @@ function getRemotePatchString(aType, aUR * @return The string representing a local update xml file. */ function getLocalUpdatesXMLString(aUpdates) { if (!aUpdates || aUpdates == "") { return "<updates xmlns=\"http://www.mozilla.org/2005/app-update\"/>" } return ("<updates xmlns=\"http://www.mozilla.org/2005/app-update\">" + aUpdates + - "</updates>").replace(/>\s+\n*</g,'><'); + "</updates>").replace(/>\s+\n*</g, '><'); } /** * Constructs a string representing an update element for a local update xml * file. See getUpdateString for parameter information not provided below. * * @param aPatches * String representing the application update patches.
--- a/toolkit/mozapps/update/tests/unit_aus_update/downloadFileTooBig_gonk.js +++ b/toolkit/mozapps/update/tests/unit_aus_update/downloadFileTooBig_gonk.js @@ -75,17 +75,17 @@ function check_test_pt1() { gActiveUpdate = gUpdates[0]; Assert.ok(!!gActiveUpdate, "there should be an active update"); let state = gAUS.downloadUpdate(gActiveUpdate, true); Assert.equal(state, STATE_NONE, "the update state" + MSG_SHOULD_EQUAL); - Assert.equal(gActiveUpdate.errorCode >>> 0 , Cr.NS_ERROR_FILE_TOO_BIG, + Assert.equal(gActiveUpdate.errorCode >>> 0, Cr.NS_ERROR_FILE_TOO_BIG, "the update error code" + MSG_SHOULD_EQUAL); doTestFinish(); } function end_test() { gDirService.unregisterProvider(gDirProvider); gOldProviders.forEach(function(p) {