Return-Path: X-Original-To: apmail-aurora-reviews-archive@minotaur.apache.org Delivered-To: apmail-aurora-reviews-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D4EA611FB7 for ; Fri, 16 May 2014 23:28:08 +0000 (UTC) Received: (qmail 50920 invoked by uid 500); 16 May 2014 22:51:25 -0000 Delivered-To: apmail-aurora-reviews-archive@aurora.apache.org Received: (qmail 49046 invoked by uid 500); 16 May 2014 22:51:22 -0000 Mailing-List: contact reviews-help@aurora.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: reviews@aurora.incubator.apache.org Delivered-To: mailing list reviews@aurora.incubator.apache.org Received: (qmail 67524 invoked by uid 99); 16 May 2014 22:39:32 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2014 22:39:32 +0000 X-ASF-Spam-Status: No, hits=-1997.6 required=5.0 tests=ALL_TRUSTED,DATE_IN_PAST_12_24,HTML_MESSAGE,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 16 May 2014 22:39:26 +0000 Received: (qmail 74636 invoked by uid 99); 16 May 2014 10:48:26 -0000 Received: from reviews-vm.apache.org (HELO reviews.apache.org) (140.211.11.40) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2014 10:48:26 +0000 Received: from reviews.apache.org (localhost [127.0.0.1]) by reviews.apache.org (Postfix) with ESMTP id BE2F31D7D21; Thu, 15 May 2014 20:41:38 +0000 (UTC) Content-Type: multipart/alternative; boundary="===============5915112219695402569==" MIME-Version: 1.0 Subject: Re: Review Request 21407: Add JSHint to our build From: "David McLaughlin" To: "Bill Farner" , "Suman Karumuri" Cc: "Aurora" , "David McLaughlin" Date: Thu, 15 May 2014 20:41:38 -0000 Message-ID: <20140515204138.716.5871@reviews.apache.org> X-ReviewBoard-URL: https://reviews.apache.org Auto-Submitted: auto-generated Sender: "David McLaughlin" X-ReviewGroup: Aurora X-ReviewRequest-URL: https://reviews.apache.org/r/21407/ X-Sender: "David McLaughlin" References: <20140515170647.14784.73341@reviews.apache.org> In-Reply-To: <20140515170647.14784.73341@reviews.apache.org> Reply-To: "David McLaughlin" X-ReviewRequest-Repository: aurora X-Virus-Checked: Checked by ClamAV on apache.org --===============5915112219695402569== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit > On May 15, 2014, 5:06 p.m., Suman Karumuri wrote: > > build.gradle, line 246 > > > > > > Should we be adding generated thrift sources here? > > > > 'ACTIVE_STATES' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:211:27) > > > return _.contains(ACTIVE_STATES, task.status); > > > > David McLaughlin wrote: > Adding thrift sources wouldn't remove that error, it would just run JSHint against them too (which we don't want). > > That warning is about undefined variables, it is there to deter from polluting the global scope that JavaScript has. You can tell JSHint that it's acceptable by having a comment like this: > > /* globals ACTIVE_STATES */ > > At the top of the file, which also has the benefit of letting readers of the code know this variable is defined elsewhere. But as mentioned in the description, I will remove all these warnings in a separate ticket. - David ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/21407/#review43123 ----------------------------------------------------------- On May 14, 2014, 10:22 p.m., David McLaughlin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/21407/ > ----------------------------------------------------------- > > (Updated May 14, 2014, 10:22 p.m.) > > > Review request for Aurora, Suman Karumuri and Bill Farner. > > > Bugs: AURORA-228 > https://issues.apache.org/jira/browse/AURORA-228 > > > Repository: aurora > > > Description > ------- > > Add JSHint to our build. > > Right now it does not break the build when JSHint fails. I'd like to file a separate review for this. Happy to do it as part of this if you'd prefer. > > > Diffs > ----- > > build.gradle 6c758f690b87eede3ae3a7c54fabac20db543840 > > Diff: https://reviews.apache.org/r/21407/diff/ > > > Testing > ------- > > $ ./gradlew build > :about > :bootstrapThrift UP-TO-DATE > :generateSources UP-TO-DATE > :compileGeneratedJava UP-TO-DATE > :processGeneratedResources UP-TO-DATE > :generatedClasses UP-TO-DATE > :compileJava UP-TO-DATE > :processResources > :classes > :jar > :assemble > :jsHint > Use the function form of "use strict". (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/app.js:16:1) > > 'use strict'; > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/app.js:22:35) > > $routeProvider.when("/scheduler", > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/app.js:25:41) > > $routeProvider.when("/scheduler/:role", > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/app.js:28:54) > > $routeProvider.when("/scheduler/:role/:environment", > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/app.js:31:59) > > $routeProvider.when("/scheduler/:role/:environment/:job", > > Use the function form of "use strict". (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:16:1) > > 'use strict'; > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:201:9) > > + stats.activeTaskCount > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:202:9) > > + stats.finishedTaskCount > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:203:9) > > + stats.failedTaskCount; > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:229:9) > > + pad(d.getUTCDate()) + ' ' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:230:9) > > + pad(d.getUTCHours()) + ':' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:231:9) > > + pad(d.getUTCMinutes()) + ':' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:232:9) > > + pad(d.getUTCSeconds()) > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:233:9) > > + ' UTC (' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:234:9) > > + pad(d.getMonth() + 1) + '/' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:235:9) > > + pad(d.getDate()) + ' ' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:236:9) > > + pad(d.getHours()) + ':' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:237:9) > > + pad(d.getMinutes()) + ':' > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:238:9) > > + pad(d.getSeconds()) > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:239:9) > > + ' local)'; > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:372:9) > > ? addColumn(2, taskColumns, taskIdColumn) > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:376:9) > > ? addColumn(3, completedTaskColumns, taskIdColumn) : > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:430:9) > > ? _.chain(sortedTaskEvents).last(2).first().value() > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:472:9) > > ? '' > > 'CronCollisionPolicy' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:214:21) > > return _.keys(CronCollisionPolicy)ÆcronCollisionPolicy ? cronCollisionPolicy : 0Å; > > 'ScheduleStatus' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:429:45) > > var latestTaskEvent = task.status === ScheduleStatus.SANDBOX_DELETED > > 'ScheduleStatus' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:435:26) > > status: _.invert(ScheduleStatus)ÆlatestTaskEvent.statusÅ, > > 'ScheduleStatus' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:444:40) > > sandboxExists: task.status !== ScheduleStatus.SANDBOX_DELETED > > 'ScheduleStatus' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:454:37) > > return taskEvent.status === ScheduleStatus.RUNNING; > > 'ScheduleStatus' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:464:28) > > status: _.invert(ScheduleStatus)ÆtaskEvent.statusÅ, > > 'format' is defined but never used. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js:108:48) > > formatFunction: function (value, format) æ > > Use the function form of "use strict". (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:16:1) > > 'use strict'; > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:36:7) > > + 'ææformatedValueåå' > > Expected 'templateUrl' to have an indentation at 7 instead at 5. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:50:5) > > templateUrl: '/error.html' > > Expected 'å' to have an indentation at 5 instead at 3. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:51:3) > > å; > > Missing semicolon. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:85:3) > > å) > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:18:1) > > auroraUI.directive('roleLink', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:25:1) > > auroraUI.directive('roleEnvLink', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:32:1) > > auroraUI.directive('jobLink', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:40:1) > > auroraUI.directive('breadcrumb', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:47:1) > > auroraUI.directive('error', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:54:1) > > auroraUI.directive('taskSandboxLink', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:61:1) > > auroraUI.directive('taskStatus', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:73:1) > > auroraUI.directive('taskLink', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:81:1) > > auroraUI.directive('schedulingDetail', function () æ > > 'ctrl' is defined but never used. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:65:48) > > link: function (scope, element, attrs, ctrl) æ > > 'attrs' is defined but never used. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:65:42) > > link: function (scope, element, attrs, ctrl) æ > > 'e' is defined but never used. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js:66:38) > > element.on('click', function (e) æ > > Use the function form of "use strict". (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:16:1) > > 'use strict'; > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:21:7) > > + 'constraints for this task.', > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:24:7) > > + 'frequently.', > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:27:7) > > + 'slave to launch it.', > > Bad line breaking before '+'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:37:7) > > + 'failure.', > > Missing semicolon. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:64:4) > > å > > Missing semicolon. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:70:4) > > å > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:18:1) > > auroraUI.filter('scheduleStatusTooltip', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:47:1) > > auroraUI.filter('scaleMb', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:61:1) > > auroraUI.filter('toCores', function () æ > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/filters.js:67:1) > > auroraUI.filter('toElapsedTime', function () æ > > Use the function form of "use strict". (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:16:1) > > 'use strict'; > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:28:13) > > ? response.result.roleSummaryResult.summaries : ÆÅ; > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:65:57) > > var transport = new Thrift.Transport("/api/"); > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:78:15) > > ? (response.message øø 'No error message returned by the scheduler') > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:81:15) > > ? response.serverInfo.statsUrlPrefix > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:87:34) > > var title = "Aurora UI"; > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:88:89) > > return _.isNull(info) øø info.error øø typeof info.clusterName === "undefined" > > Bad line breaking before '?'. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:89:13) > > ? title > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:90:37) > > : info.clusterName + " " + title; > > Missing semicolon. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:128:16) > > å > > Mixed double and single quotes. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:197:64) > > valueConstraintStr = valueConstraint.negated ? "not " + values : values; > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:18:1) > > auroraUI.factory( > > 'Identity' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:47:24) > > var id = new Identity(); > > 'TaskQuery' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:49:31) > > var taskQuery = new TaskQuery(); > > 'ReadOnlySchedulerClient' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:67:48) > > auroraClient.schedulerClient = new ReadOnlySchedulerClient(protocol); > > 'auroraUI' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:101:1) > > auroraUI.factory( > > 'ACTIVE_STATES' is not defined. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:211:27) > > return _.contains(ACTIVE_STATES, task.status); > > 'end' is defined but never used. (/Users/dmclaughlin/t/incubator-aurora/src/main/resources/org/apache/aurora/scheduler/http/ui/js/services.js:176:16) > > var end = instanceIdsÆiÅ; > > :checkstyleMain > :compileTestJava > :processTestResources UP-TO-DATE > :testClasses > :checkstyleTest UP-TO-DATE > :licenseGenerated UP-TO-DATE > :licenseMain UP-TO-DATE > :licenseTest UP-TO-DATE > :license UP-TO-DATE > :test > objcÆ78610Å: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. > objcÆ78612Å: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. > objcÆ78611Å: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. > objcÆ78613Å: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. > :jacocoTestReport > Coverage report generated: file:////Users/dmclaughlin/t/incubator-aurora/dist/reports/jacoco/test/html/index.html > :check > :build > > BUILD SUCCESSFUL > > Total time: 1 mins 16.824 secs > > > Thanks, > > David McLaughlin > > --===============5915112219695402569==--