JŔsšŻ5{šmœ“egí/* ========================================================================== Module: AForm.js ========================================================================== Pre-canned functions to map the user interface into JavaScripts. ========================================================================== The Software, including this file, is subject to the End User License Agreement. Copyright (c) 1998-2003, Adobe Systems Incorporated, All Rights Reserved. ========================================================================== */ try { // included for backwards compatibility const IDS_GREATER_THAN = EScriptString.IDS_GREATER_THAN; const IDS_GT_AND_LT = EScriptString.IDS_GT_AND_LT; const IDS_LESS_THAN = EScriptString.IDS_LESS_THAN; const IDS_INVALID_MONTH = EScriptString.IDS_INVALID_MONTH; const IDS_INVALID_DATE = EScriptString.IDS_INVALID_DATE; const IDS_INVALID_DATE2 = EScriptString.IDS_INVALID_DATE2; const IDS_INVALID_VALUE = EScriptString.IDS_INVALID_VALUE; const IDS_AM = EScriptString.IDS_AM; const IDS_PM = EScriptString.IDS_PM; const IDS_MONTH_INFO = EScriptString.IDS_MONTH_INFO; const IDS_STARTUP_CONSOLE_MSG = EScriptString.IDS_STARTUP_CONSOLE_MSG; const IDS_MEIJI_ABBREV = 'M'; const IDS_TAISHO_ABBREV = 'T'; const IDS_SHOWA_ABBREV = 'S'; const IDS_HEISEI_ABBREV = 'H'; const IDS_REIWA_ABBREV = 'R'; const IDS_MEIJI_ABBREV_LONG = 1868; const IDS_TAISHO_ABBREV_LONG = 1912; const IDS_SHOWA_ABBREV_LONG = 1926; const IDS_HEISEI_ABBREV_LONG = 1989; const IDS_REIWA_ABBREV_LONG = 2019; const RE_NUMBER_ENTRY_DOT_SEP = new Array( "[+-]?\\d*\\.?\\d*" ); const RE_NUMBER_COMMIT_DOT_SEP = new Array( "[+-]?\\d+(\\.\\d+)?", /* -1.0 or -1 */ "[+-]?\\.\\d+", /* -.1 */ "[+-]?\\d+\\." /* -1. */ ); const RE_NUMBER_ENTRY_COMMA_SEP = new Array( "[+-]?\\d*,?\\d*" ); const RE_NUMBER_COMMIT_COMMA_SEP = new Array( "[+-]?\\d+([.,]\\d+)?", /* -1,0 or -1 */ "[+-]?[.,]\\d+", /* -,1 */ "[+-]?\\d+[.,]" /* -1, */ ); const RE_ZIP_ENTRY = new Array( "\\d{0,5}" ); const RE_ZIP_COMMIT = new Array( "\\d{5}" ); const RE_ZIP4_ENTRY = new Array( "\\d{0,5}(\\.|[- ])?\\d{0,4}" ); const RE_ZIP4_COMMIT = new Array( "\\d{5}(\\.|[- ])?\\d{4}" ); const RE_PHONE_ENTRY = new Array( "\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 555-1234 or 408 555-1234 */ "\\(\\d{0,3}", /* (408 */ "\\(\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408) 555-1234 */ /* (allow the addition of parens as an afterthought) */ "\\(\\d{0,3}(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* (408 555-1234 */ "\\d{0,3}\\)(\\.|[- ])?\\d{0,3}(\\.|[- ])?\\d{0,4}", /* 408) 555-1234 */ "011(\\.|[- \\d])*" /* international */ ); const RE_PHONE_COMMIT = new Array( "\\d{3}(\\.|[- ])?\\d{4}", /* 555-1234 */ "\\d{3}(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* 408 555-1234 */ "\\(\\d{3}\\)(\\.|[- ])?\\d{3}(\\.|[- ])?\\d{4}", /* (408) 555-1234 */ "011(\\.|[- \\d])*" /* international */ ); const RE_SSN_ENTRY = new Array( "\\d{0,3}(\\.|[- ])?\\d{0,2}(\\.|[- ])?\\d{0,4}" ); const RE_SSN_COMMIT = new Array( "\\d{3}(\\.|[- ])?\\d{2}(\\.|[- ])?\\d{4}" ); /* Function definitions for the color object. */ function ColorConvert(oColor, cColorspace) { // Converts a color to a specific colorspace. var oOut = oColor; switch (cColorspace) { case "G": // Note that conversion to the DeviceGray colorspace is lossy in the same // way that a color signal on a B/W TV is lossy. if (oColor[0] == "RGB") oOut = new Array("G", 0.3 * oColor[1] + 0.59 * oColor[2] + 0.11 * oColor[3]); else if (oColor[0] == "CMYK") oOut = new Array("G", 1.0 - Math.min(1.0, 0.3 * oColor[1] + 0.59 * oColor[2] + 0.11 * oColor[3] + oColor[4])); break; case "RGB": if (oColor[0] == "G") oOut = new Array("RGB", oColor[1], oColor[1], oColor[1]); else if (oColor[0] == "CMYK") oOut = new Array("RGB", 1.0 - Math.min(1.0, oColor[1] + oColor[4]), 1.0 - Math.min(1.0, oColor[2] + oColor[4]), 1.0 - Math.min(1.0, oColor[3] + oColor[4])); break; case "CMYK": if (oColor[0] == "G") oOut = new Array("CMYK", 0, 0, 0, 1.0 - oColor[1]); else if (oColor[0] == "RGB") oOut = new Array("CMYK", 1.0 - oColor[1], 1.0 - oColor[2], 1.0 - oColor[3], 0); break; } return oOut; } function ColorEqual(c1, c2) { // Compare two colors. /* The gray colorspace conversion is lossy so we avoid if possible. */ if (c1[0] == "G") c1 = color.convert(c1, c2[0]); else c2 = color.convert(c2, c1[0]); /* Colorspace must be equal. */ if (c1[0] != c2[0]) { return false; } /* Compare the individual components. */ var nComponents = 0; switch (c1[0]) { case "G": nComponents = 1; break; case "RGB": nComponents = 3; break; case "CMYK": nComponents = 4; break; } for (var i = 1; i <= nComponents; i++) { if (c1[i] != c2[i]) { return false; } } return true; } /* ==== Convenience Objects ==== */ /* Stock color definitions for ease of use. */ color = new Object(); color.equal = ColorEqual; color.convert = ColorConvert; color.transparent = new Array("T"); color.black = new Array("G", 0); color.white = new Array("G", 1); color.dkGray = new Array("G", 0.25); color.gray = new Array("G", 0.5); color.ltGray = new Array("G", 0.75); color.red = new Array("RGB", 1, 0, 0); color.green = new Array("RGB", 0, 1, 0); color.blue = new Array("RGB", 0, 0, 1); color.cyan = new Array("CMYK", 1, 0, 0, 0); color.magenta = new Array("CMYK", 0, 1, 0, 0); color.yellow = new Array("CMYK", 0, 0, 1, 0); /* Font definitions for ease of use */ const font = new Object(); font.Times = "Times-Roman"; font.TimesB = "Times-Bold"; font.TimesI = "Times-Italic"; font.TimesBI = "Times-BoldItalic"; font.Helv = "Helvetica"; font.HelvB = "Helvetica-Bold"; font.HelvI = "Helvetica-Oblique"; font.HelvBI = "Helvetica-BoldOblique"; font.Cour = "Courier"; font.CourB = "Courier-Bold"; font.CourI = "Courier-Oblique"; font.CourBI = "Courier-BoldOblique"; font.Symbol = "Symbol"; font.ZapfD = "ZapfDingbats"; font.KaGo = "HeiseiKakuGo-W5-UniJIS-UCS2-H"; font.KaMi = "HeiseiMin-W3-UniJIS-UCS2-H"; /* Border style definitions for ease of use */ const border = new Object(); border.s = "solid"; border.d = "dashed"; border.b = "beveled"; border.i = "inset"; border.u = "underline"; /* Radio/Check button style definitions for ease of use */ const style = new Object(); style.ch = "check"; style.cr = "cross"; style.di = "diamond"; style.ci = "circle"; style.st = "star"; style.sq = "square"; /* highlight modes of on a push button */ const highlight = new Object(); highlight.n = "none"; highlight.i = "invert"; highlight.p = "push"; highlight.o = "outline"; /* zoom types for a document */ const zoomtype = new Object(); zoomtype.none = "NoVary"; zoomtype.fitW = "FitWidth"; zoomtype.fitH = "FitHeight"; zoomtype.fitP = "FitPage"; zoomtype.fitV = "FitVisibleWidth"; zoomtype.pref = "Preferred"; zoomtype.refW = "ReflowWidth"; /* Cursor behavior in full screen mode. */ const cursor = new Object(); cursor.visible = 0; cursor.hidden = 1; cursor.delay = 2; /* Transition definitions. */ const trans = new Object(); trans.blindsH = "BlindsHorizontal"; trans.blindsV = "BlindsVertical"; trans.boxI = "BoxIn"; trans.boxO = "BoxOut"; trans.dissolve = "Dissolve"; trans.glitterD = "GlitterDown"; trans.glitterR = "GlitterRight"; trans.glitterRD = "GlitterRightDown"; trans.random = "Random"; trans.replace = "Replace"; trans.splitHI = "SplitHorizontalIn"; trans.splitHO = "SplitHorizontalOut"; trans.splitVI = "SplitVerticalIn"; trans.splitVO = "SplitVerticalOut"; trans.wipeD = "WipeDown"; trans.wipeL = "WipeLeft"; trans.wipeR = "WipeRight"; trans.wipeU = "WipeUp"; /* Icon/Text placement. */ const position = new Object(); position.textOnly = 0; position.iconOnly = 1; position.iconTextV = 2; position.textIconV = 3; position.iconTextH = 4; position.textIconH = 5; position.overlay = 6; /* When does icon scale. */ const scaleWhen = new Object(); scaleWhen.always = 0; scaleWhen.never = 1; scaleWhen.tooBig = 2; scaleWhen.tooSmall = 3; /* How does icon scale. */ const scaleHow = new Object(); scaleHow.proportional = 0; scaleHow.anamorphic = 1; /* Field display. */ const display = new Object(); display.visible = 0; display.hidden = 1; display.noPrint = 2; display.noView = 3; /* Permission values */ const permission = new Object(); /* Request Objects */ permission.document = "Document"; permission.page = "Page"; permission.link = "Link"; permission.bookmark = "Bookmark"; permission.thumbnail = "Thumbnail"; permission.annot = "Annot"; permission.form = "Form"; permission.signature = "Signature"; permission.ef = "EF"; /* Array of all valid object types, ordered as per SDK header files */ permission.object = [ permission.document, permission.page, permission.link, permission.bookmark, permission.thumbnail, permission.annot, permission.form, permission.signature, permission.ef ]; /* Request Operations */ permission.all = "All"; permission.create = "Create"; permission.remove = "Delete"; permission.modify = "Modify"; permission.copy = "Copy"; permission.accessible = "Accessible"; permission.select = "Select"; permission.open = "Open"; permission.secure = "Secure"; permission.print = "PrintHigh"; // do not use this permission.printHigh = "PrintHigh"; permission.printLowQuality = "PrintLow"; // do not use this permission.printLow = "PrintLow"; permission.fillIn = "FillIn"; permission.rotate = "Rotate"; permission.crop = "Crop"; permission.summarize = "Summarize"; permission.insert = "Insert"; permission.replace = "Replace"; permission.reorder = "Reorder"; permission.fullSave = "FullSave"; permission.canImport = "Import"; permission.canExport = "Export"; permission.any = "Any"; permission.unknownOpr = "UnknownOpr"; // not a valid call permission.submitStandalone = "SubmitStandalone"; permission.spawnTemplate = "SpawnTemplate"; permission.online = "Online"; permission.summaryView = "SummaryView"; permission.barcodePlaintext = "BarcodePlaintext"; /* Array of all valid operations, ordered as per SDK header files */ permission.operation = [ permission.all, permission.create, permission.remove, permission.modify, permission.copy, permission.accessible, permission.select, permission.open, permission.secure, permission.printHigh, permission.printLow, permission.fillIn, permission.rotate, permission.crop, permission.summarize, permission.insert, permission.replace, permission.reorder, permission.fullSave, permission.canImport, permission.canExport, permission.any, permission.unknownOpr, permission.submitStandalone, permission.spawnTemplate, permission.online, permission.summaryView, permission.barcodePlaintext ]; /* Permission status return values */ permission.denied = -1; permission.granted = 0; permission.unknownObject = 1; permission.unknownOperation = 2; permission.na = 3; permission.pending = 4; /* Usage rights "enum" */ const submitFormUsageRights = { 'RMA': "RMA" }; /* File systems "enum" */ const fileSystem = { 'default': "", 'WebDAV': "CHTTP" }; const encoding = new Object(); encoding.roman = "US-ASCII"; encoding.unicodeUTF8 = "utf-8"; encoding.unicodeUTF16 = "utf-16"; encoding.unicodeUTF16BE = "utf-16BE"; encoding.unicodeUTF16LE = "utf-16LE"; encoding.japanese = "Shift-JIS"; encoding.traditionalChinese = "Big5"; encoding.BigFive = "BigFive"; encoding.simplifiedChinese = "GBK"; encoding.korean = "UHC"; const requirements = new Object(); requirements.EnableJavaScripts = "EnableJavaScripts"; /* Container Disclosure Policies */ const HostContainerDisclosurePolicy = new Object(); HostContainerDisclosurePolicy.SameOriginPolicy = function( cContainerURL, cDocURL ) { var isSameOrigin = false; try { // Crack both URLs var URL1Parts = util.crackURL( cContainerURL ); var URL2Parts = util.crackURL( cDocURL ); // Make sure first URL has both scheme and host and neither is blank if ( ( URL1Parts.cScheme != undefined ) && ( URL1Parts.cScheme.length > 0 ) && ( URL1Parts.cHost != undefined ) && ( URL1Parts.cHost.length > 0 ) ) { // Make sure second URL has both scheme and host and neither is blank if ( ( URL2Parts.cScheme != undefined ) && ( URL2Parts.cScheme.length > 0 ) && ( URL2Parts.cHost != undefined ) && ( URL2Parts.cHost.length > 0 ) ) { // Make sure schemes and hosts match (case insensitive). var lcaseScheme1 = URL1Parts.cScheme.toLowerCase(); if ( ( lcaseScheme1 === URL2Parts.cScheme.toLowerCase() ) && ( URL1Parts.cHost.toLowerCase() === URL2Parts.cHost.toLowerCase() ) ) { // Check against schemes whitelist - we don't want schemes we don't understand being blessed without // us doing it on purpose! Notice that we explicitly do NOT support file: URLs - we don't think files // on the local disk should trust one another. if ( ( lcaseScheme1 == "http" ) || ( lcaseScheme1 == "https" ) || ( lcaseScheme1 == "ftp" ) ) { // If either has a port, they need to match if ( ( ( URL1Parts.nPort === undefined ) && ( URL2Parts.nPort === undefined ) ) || ( URL1Parts.nPort == URL2Parts.nPort ) ) isSameOrigin = true; // it all checks out! } } } } } catch ( e ) { // Eat exception - crackURL throws if it doesn't understand URL } return isSameOrigin; } /* ==== Functions ==== / /* these may be used a lot -- they are language independent */ const AFDigitsRegExp = new RegExp(); AFDigitsRegExp.compile("\\d+"); const AFPMRegExp = new RegExp(); AFPMRegExp.compile(EScriptString.IDS_PM, "i"); const AFAMRegExp = new RegExp(); AFAMRegExp.compile(EScriptString.IDS_AM, "i"); const AFTimeLongRegExp = new RegExp(); AFTimeLongRegExp.compile("\\d{1,2}:\\d{1,2}:\\d{1,2}"); const AFTimeShortRegExp = new RegExp(); AFTimeShortRegExp.compile("\\d{1,2}:\\d{1,2}"); const AFTimeGarbageRegExp = new RegExp(); AFTimeGarbageRegExp.compile("\\d{1,2}:\\d{1,2}(:\\d{1,2})?(\\s)*(am|pm)?", "i"); function AFBuildRegExps(array) /* Takes an array of strings and turns it into an array of compiled regular * expressions -- is used for the definitions that follow */ { var retVal = new Array(); retVal.length = array.length; for(var it = 0; it < array.length; it++) { retVal[it] = new RegExp(); retVal[it].compile(array[it], "i"); } return retVal; } /* these may be used a lot -- they are NOT language independent and are * derived from the localizable (RE_xxx) stuff above */ const AFNumberDotSepEntryRegExp = AFBuildRegExps(RE_NUMBER_ENTRY_DOT_SEP); const AFNumberDotSepCommitRegExp = AFBuildRegExps(RE_NUMBER_COMMIT_DOT_SEP); const AFNumberCommaSepEntryRegExp = AFBuildRegExps(RE_NUMBER_ENTRY_COMMA_SEP); const AFNumberCommaSepCommitRegExp = AFBuildRegExps(RE_NUMBER_COMMIT_COMMA_SEP); const AFZipEntryRegExp = AFBuildRegExps(RE_ZIP_ENTRY); const AFZipCommitRegExp = AFBuildRegExps(RE_ZIP_COMMIT); const AFZip4EntryRegExp = AFBuildRegExps(RE_ZIP4_ENTRY); const AFZip4CommitRegExp = AFBuildRegExps(RE_ZIP4_COMMIT); const AFPhoneEntryRegExp = AFBuildRegExps(RE_PHONE_ENTRY); const AFPhoneCommitRegExp = AFBuildRegExps(RE_PHONE_COMMIT); const AFSSNEntryRegExp = AFBuildRegExps(RE_SSN_ENTRY); const AFSSNCommitRegExp = AFBuildRegExps(RE_SSN_COMMIT); const AFMonthsRegExp = AFBuildRegExps(EScriptString.IDS_MONTH_INFO.split(/\[\d+\]/)); function AFExactMatch(rePatterns, sString) { /* match a string against an array of RegExps */ var it; if(!rePatterns.length && rePatterns.test(sString) && RegExp.lastMatch == sString) return true; for(it = 0; it < rePatterns.length; it++) if(rePatterns[it].test(sString) && RegExp.lastMatch == sString) return it + 1; return 0; } function AFExtractNums(string) { /* returns an array of numbers that it managed to extract from the given * string or null on failure */ var nums = new Array(); if (string.charAt(0) == '.' || string.charAt(0) == ',') string = "0" + string; while(AFDigitsRegExp.test(string)) { nums.length++; nums[nums.length - 1] = RegExp.lastMatch; string = RegExp.rightContext; } if(nums.length >= 1) return nums; return null; } function AFMakeNumber(string) { /* attempts to make a number out of a string that may not use '.' as the * seperator; it expects that the number is fairly well-behaved other than * possibly having a non-JavaScript friendly separator */ var type = typeof string; if (type == "number") return string; if (type != "string") return null; var array = AFExtractNums(string); if(array) { var joined = array.join("."); if (string.indexOf("-.") >= 0) joined = "0." + joined; return joined * (string.indexOf("-") >= 0 ? -1.0 : 1.0); } else return null; } function AFExtractRegExp(rePattern, string) { /* attempts to match the pattern given against the string given; on * success, returns an array containing (at index 0) the initial * string with the matched text removed and (at index 1) the matched * text; on failure, returns null */ var retVal = new Array(); if(rePattern.test(string)) { retVal.length = 2; retVal[0] = RegExp.leftContext + RegExp.rightContext; retVal[1] = RegExp.lastMatch; return retVal; } return null; } function AFMakeArrayFromList(string) { var type = typeof string; if(type == "string") { var reSep = new RegExp(); reSep.compile(",[ ]?"); return string.split(reSep); } return string; } function AFExtractTime(string) { /* attempts to extract a WELL FORMED time from a string; returned * is an array in the same vein as AFExtractRegExp or null on * failure. a WELL FORMED time looks like 12:23:56pm */ var pm = ""; var info; info = AFExtractRegExp(AFPMRegExp, string); if(info) { pm = info[1]; string = info[0]; } info = AFExtractRegExp(AFAMRegExp, string); if(info) { string = info[0]; } info = AFExtractRegExp(AFTimeLongRegExp, string); if(info) { info[1] += pm; return info; } info = AFExtractRegExp(AFTimeShortRegExp, string); if(info) { info[1] += pm; return info; } return null; } function AFGetMonthIndex(string) { /* attempts to identify the given string as a month or a valid abbreviation, * it expects the given string to be the valid month from the matced RegExp. * returns the month index (January = 1) or zero on failure */ var monthre = new RegExp(string + "\\[(\\d+)\\]", "i"); var result = monthre.exec(EScriptString.IDS_MONTH_INFO); if(string && result) return 1.0 * result[1]; return 0; } function AFMatchMonth(string) { /* attempts to find a valid month embedded in a string; returns the month * index (January = 1) or zero on failure */ for(var it = 0; it < AFMonthsRegExp.length; it++) if(AFMonthsRegExp[it].test(string)) return AFGetMonthIndex(RegExp.lastMatch); return 0; } function AFGetMonthString(index) { /* returns the string corresponding to the given month or a string that * is indicative of the fact that the index was invalid */ var monthre = new RegExp("(\\w+)\\[" + index + "\\]"); var result = monthre.exec(EScriptString.IDS_MONTH_INFO); if(result) return result[1]; return EScriptString.IDS_INVALID_MONTH; } function AFParseTime(string, date) { /* attempts to parse a string containing a time; returns null on failure * or a Date object on success. Time can be in ugly format. */ var pm, am; var nums = AFExtractNums(string); if (!date) date = new Date(); var hour, minutes, seconds; if(!string) return date; if(!(AFTimeGarbageRegExp.test(string) && string == RegExp.lastMatch)) return null; if(!nums) return null; if(nums.length < 2 || nums.length > 3) return null; if(AFPMRegExp.test(string)) pm = true; else pm = false; if(AFAMRegExp.test(string)) am = true; else am = false; hour = new Number(nums[0]); /* force it to number */ if(pm) { if(hour < 12) hour += 12; } else if (am) { if(hour >= 12) hour -= 12; } minutes = nums[1]; if(nums.length == 3) seconds = nums[2]; else seconds = 0; date.setHours(hour); date.setMinutes(minutes); date.setSeconds(seconds); if(date.getHours() != hour) return null; if(date.getMinutes() != minutes) return null; if(date.getSeconds() != seconds) return null; return date; } function AFDateFromYMD(nYear, nMonth, nDate) { /* Validates the given fields and returns a date based on them */ var dDate = new Date(); dDate.setFullYear(nYear, nMonth, nDate); if(dDate.getFullYear() != nYear) return null; if(dDate.getMonth() != nMonth) return null; if(dDate.getDate() != nDate) return null; return dDate; } function AFGetJapaneseYear(JYear) { var nYear = AFExtractNums(JYear) * 1.0; switch(JYear[0]) { case IDS_MEIJI_ABBREV: nYear += IDS_MEIJI_ABBREV_LONG - 1; break; case IDS_TAISHO_ABBREV: nYear += IDS_TAISHO_ABBREV_LONG - 1; break; case IDS_SHOWA_ABBREV: nYear += IDS_SHOWA_ABBREV_LONG - 1; break; case IDS_HEISEI_ABBREV: nYear += IDS_HEISEI_ABBREV_LONG - 1; break; case IDS_REIWA_ABBREV: nYear += IDS_REIWA_ABBREV_LONG - 1; break; } return nYear; } //This function is a duplicate code of function AFParseDateEx. // Code duplication has been done to handle japanese data format. function AFParseJapaneseEraDateEx(cString, cFormat, cOrder, dDate) { var nYear; var nMonth; var nDate; var nYCount; var cOrder; var JYear; nYCount = AFParseDateYCount(cFormat); /* count the number of digits for year in the selected format */ /* Extract any time information in the string. */ var info = AFExtractTime(cString); if (info) cString = info[0]; /* Break down the date into an array of numbers. */ var aNums = AFExtractNums(cString); if(!aNums) return null; /* No numbers? */ var aJapaneseNums = cString.split(cOrder[3]); /* User supplied three numbers. */ if (aNums.length == 3) { JYear = aJapaneseNums[cOrder.indexOf("y")]; nYear = AFGetJapaneseYear(JYear); dDate = AFDateFromYMD(nYear, aJapaneseNums[cOrder.indexOf("m")] - 1, aJapaneseNums[cOrder.indexOf("d")]); if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* Find text based month, if supplied. */ nMonth = AFMatchMonth(cString); /* User supplied two numbers. */ if(aNums.length == 2) { if (nMonth) { /* Easy case, the month was text and we have two numbers. */ if (cOrder.indexOf("y") < cOrder.indexOf("d")) { JYear = aJapaneseNums[0]; nDate = aNums[1]; } else { JYear = aJapaneseNums[1]; nDate = aNums[0]; } nYear = AFGetJapaneseYear(JYear); dDate = AFDateFromYMD(nYear, nMonth - 1, nDate); if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* More difficult case. We have two numbers and three slots, how ** to allocate them? */ if (cOrder.indexOf("y") < cOrder.indexOf("d")) { /* Year comes before date and as such we allocate the two ** numbers to the month and the year only. */ if (cOrder.indexOf("y") < cOrder.indexOf("m")) { JYear = aJapaneseNums[0]; nMonth = aNums[1]; } else { JYear = aJapaneseNums[1]; nMonth = aNums[0]; } nYear = AFGetJapaneseYear(JYear); dDate = AFDateFromYMD(nYear, nMonth - 1, 1); } else { /* Date comes before year and so we allocate the two numbers ** to the date and the month only. */ nYear = dDate.getFullYear(); if (cOrder.indexOf("d") < cOrder.indexOf("m")) { dDate = AFDateFromYMD(nYear, aNums[1] - 1, aNums[0]); } else { dDate = AFDateFromYMD(nYear, aNums[0] - 1, aNums[1]); } } if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* User supplied one number. */ if(aNums.length == 1) { if (nMonth) { /* We have one number and two slots (y/d) and need to allocate ** them based on who came first in the format. */ if(cOrder.indexOf("y") < cOrder.indexOf("d")) { JYear = aJapaneseNums[0]; nYear = AFGetJapaneseYear(JYear); dDate = AFDateFromYMD(nYear, nMonth - 1, 1); } else { nYear = dDate.getFullYear(); dDate = AFDateFromYMD(nYear, nMonth - 1, aNums[0]); } if (info) dDate = AFParseTime(info[1], date); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* We have one number and three slots and need to allocate them ** based on who came first in the format. */ // transcribe the format exactly. There should be a one to one correspondence. if (cFormat.length != cString.length) return null; nYear = ""; nMonth = ""; nDate = ""; for (var i = 0; i < cFormat.length; i++) { switch (cFormat.charAt(i)) { case "\\": /* Escape character. */ i++; break; case "y": nYear += cString.charAt(i); break; case "m": nMonth += cString.charAt(i); break; case "d": nDate += cString.charAt(i); break; } } nYear *= 1.0; nMonth *= 1.0; nDate *= 1.0 if(nMonth) nMonth -= 1.0; // Month range is [0-11] if(!nDate) nDate += 1.0; // Date range is [1-31] if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, nMonth, nDate); if (info) dDate = AFParseTime(info[1], date); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* No idea how to deal with the other combinations. */ return null; } //function AFParseJapaneseEraDateEx has been dupplicated from this function to handle japanese era date. // Any changes made in the business logic of this function should also be made in that function. function AFParseDateEx(cString, cFormat) { /* Attempts to parse a string containing some form of date; returns null ** on failure or a Date object on success. cFormat should be the format ** in which the date is entered. ( eg y/m/d, ddmmyy, etc ). ** compatibility note: this function used to take cOrder as a paramter, ** which was the order in which the date was entered (e.g. ymd, mdy, etc.) ** However, if the date is entered numerically with no separators. ie "121902" ** a cOrder of dmy, could be 1-2-1902 or 12-19-02 etc, so now we require cFormat ** to resolve the ambiguity. */ var nYear; var nMonth; var nDate; var nYCount; var cOrder; var dDate = new Date(); dDate.setHours(12, 0, 0); /* Empty string returns current date/time. */ if (!cString) { return dDate; } cOrder = AFParseDateOrder(cFormat); /* make sure its in the "ymd" format */ // Ankur caters J and replaces with y in this. //if format contains a letter 'j'. This implies that date is sent is expected in japanese era format. // Thus need a explicit handling. if(cFormat.indexOf("j") != -1 ) { //Parse for japenese character var Nums = cString.split(cOrder[3]); var JYear = Nums[cOrder.indexOf("y")]; //first char of year is alphabet then we need to calculate date as per japanese era. if(!AFDigitsRegExp.test(JYear[0]) ) { dDate = AFParseJapaneseEraDateEx(cString, cFormat, cOrder, dDate); return dDate; } } nYCount = AFParseDateYCount(cFormat); /* count the number of digits for year in the selected format */ /* Extract any time information in the string. */ var info = AFExtractTime(cString); if (info) cString = info[0]; /* Break down the date into an array of numbers. */ var aNums = AFExtractNums(cString); if(!aNums) return null; /* No numbers? */ /* User supplied three numbers. */ if (aNums.length == 3) { nYear = 1.0 * aNums[cOrder.indexOf("y")]; if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, aNums[cOrder.indexOf("m")] - 1, aNums[cOrder.indexOf("d")]); if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* Find text based month, if supplied. */ nMonth = AFMatchMonth(cString); /* User supplied two numbers. */ if(aNums.length == 2) { if (nMonth) { /* Easy case, the month was text and we have two numbers. */ if (cOrder.indexOf("y") < cOrder.indexOf("d")) { nYear = 1.0 * aNums[0]; nDate = aNums[1]; } else { nYear = 1.0 * aNums[1]; nDate = aNums[0]; } if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, nMonth - 1, nDate); if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* More difficult case. We have two numbers and three slots, how ** to allocate them? */ if (cOrder.indexOf("y") < cOrder.indexOf("d")) { /* Year comes before date and as such we allocate the two ** numbers to the month and the year only. */ if (cOrder.indexOf("y") < cOrder.indexOf("m")) { nYear = 1.0 * aNums[0]; nMonth = aNums[1]; } else { nYear = 1.0 * aNums[1]; nMonth = aNums[0]; } if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, nMonth - 1, 1); } else { /* Date comes before year and so we allocate the two numbers ** to the date and the month only. */ nYear = dDate.getFullYear(); if (cOrder.indexOf("d") < cOrder.indexOf("m")) { dDate = AFDateFromYMD(nYear, aNums[1] - 1, aNums[0]); } else { dDate = AFDateFromYMD(nYear, aNums[0] - 1, aNums[1]); } } if (info) dDate = AFParseTime(info[1], dDate); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* User supplied one number. */ if(aNums.length == 1) { if (nMonth) { /* We have one number and two slots (y/d) and need to allocate ** them based on who came first in the format. */ if(cOrder.indexOf("y") < cOrder.indexOf("d")) { nYear = 1.0 * aNums[0]; if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, nMonth - 1, 1); } else { nYear = dDate.getFullYear(); dDate = AFDateFromYMD(nYear, nMonth - 1, aNums[0]); } if (info) dDate = AFParseTime(info[1], date); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* We have one number and three slots and need to allocate them ** based on who came first in the format. */ // transcribe the format exactly. There should be a one to one correspondence. if (cFormat.length != cString.length) return null; nYear = ""; nMonth = ""; nDate = ""; for (var i = 0; i < cFormat.length; i++) { switch (cFormat.charAt(i)) { case "\\": /* Escape character. */ i++; break; case "y": nYear += cString.charAt(i); break; case "m": nMonth += cString.charAt(i); break; case "d": nDate += cString.charAt(i); break; } } nYear *= 1.0; nMonth *= 1.0; nDate *= 1.0 if(nMonth) nMonth -= 1.0; // Month range is [0-11] if(!nDate) nDate += 1.0; // Date range is [1-31] if ((nYCount > 2 && nYear < 100) /* must enter 4 digits for the year to match with the format of the field */ || nYear > 9999) return null; nYear = AFDateHorizon(nYear); dDate = AFDateFromYMD(nYear, nMonth, nDate); if (info) dDate = AFParseTime(info[1], date); else if (dDate) dDate.setHours(0, 0, 0); return dDate; } /* No idea how to deal with the other combinations. */ return null; } function AFDateHorizon(nYear) { /* Takes the year supplied and applies the date horizon heuristic. ** All years between 50 and 100 we add 1900. All years less than 50 we add 2000. */ if (nYear < 100 && nYear >= 50) { nYear += 1900; } else if (nYear >= 0 && nYear < 50) { nYear += 2000; } return nYear; } function AFParseDate(string, longEntry, shortEntry, wordMonthEntry, monthYearEntry) { /* OBSOLETE: Use AFParseDateEx instead. */ var nums; var year, month; var date; var info = AFExtractTime(string); if(!string) return new Date(); if(info) string = info[0]; date = new Date(); nums = AFExtractNums(string); if(!nums) return null; if(nums.length == 3) { year = 1.0 * nums[eval(longEntry.charAt(0))]; year = AFDateHorizon(year); date = AFDateFromYMD(year, nums[eval(longEntry.charAt(1))] - 1, nums[eval(longEntry.charAt(2))]); if (info) date = AFParseTime(info[1], date); return date; } month = AFMatchMonth(string); if(nums.length == 2) { if(month) { year = 1.0 * nums[eval(wordMonthEntry.charAt(0))]; year = AFDateHorizon(year); date = AFDateFromYMD(year, month - 1, nums[eval(wordMonthEntry.charAt(1))]); if (info) date = AFParseTime(info[1], date); return date; } if(monthYearEntry) { year = 1.0 * nums[eval(monthYearEntry.charAt(0))]; year = AFDateHorizon(year); date = AFDateFromYMD(year, nums[eval(monthYearEntry.charAt(1))] - 1, 1); } else date = AFDateFromYMD(date.getFullYear(), nums[eval(shortEntry.charAt(0))] - 1, nums[eval(shortEntry.charAt(1))]); if (info) date = AFParseTime(info[1], date); return date; } if(month && nums.length == 1) { if(monthYearEntry) { year = 1.0 * nums[0]; year = AFDateHorizon(year); date = AFDateFromYMD(year, month - 1, 1); } else date = AFDateFromYMD(date.getFullYear(), month - 1, nums[0]); if (info) date = AFParseTime(info[1], date); return date; } return null; } function AFParseDateWithPDF(value, pdf) { /* OBSOLETE: Use AFParseDateEx instead. */ var cOldFormats = new Array( "m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM" ); return AFParseDateEx(value, cOldFormats[pdf]); } function AFMergeChange(event) { /* merges the last change with the uncommitted change */ var prefix, postfix; var value = event.value; if(event.willCommit) return event.value; if(event.selStart >= 0) prefix = value.substring(0, event.selStart); else prefix = ""; if(event.selEnd >= 0 && event.selEnd <= value.length) postfix = value.substring(event.selEnd, value.length); else postfix = ""; return prefix + event.change + postfix; } function AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) { /* This function validates the current event to ensure that its value is ** within the specified range. */ var cError = ""; if (event.value == "") return; if (bGreaterThan && bLessThan) { if (event.value < nGreaterThan || event.value > nLessThan) cError = util.printf(EScriptString.IDS_GT_AND_LT, nGreaterThan, nLessThan); } else if (bGreaterThan) { if (event.value < nGreaterThan) cError = util.printf(EScriptString.IDS_GREATER_THAN, nGreaterThan); } else if (bLessThan) { if (event.value > nLessThan) cError = util.printf(EScriptString.IDS_LESS_THAN, nLessThan); } if (cError != "") { if (!event.silenceErrors) app.alert(cError, 0); event.rc = false; } } function AFSimpleInit(cFunction) { /* Convenience function used by AFSimple_Calculate. */ switch (cFunction) { case "PRD": return 1.0; break; } return 0.0; } function AFSimple(cFunction, nValue1, nValue2) { /* Convenience function used by AFSimple_Calculate. */ var nValue = 1.0 * nValue1; /* Have to do this otherwise JavaScript thinks it's dealing with strings. */ nValue1 = 1.0 * nValue1; nValue2 = 1.0 * nValue2; switch (cFunction) { case "AVG": case "SUM": nValue = nValue1 + nValue2; break; case "PRD": nValue = nValue1 * nValue2; break; case "MIN": nValue = Math.min(nValue1,nValue2); break; case "MAX": nValue = Math.max(nValue1, nValue2); break; } return nValue; } function AFSimple_Calculate(cFunction, cFields) { /* Calculates the sum, average, product, etc. of the listed field values. */ var nFields = 0; var nValue = AFSimpleInit(cFunction); /* Field name separator is one or more spaces followed by a comma, ** followed by one or more spaces. ** or an array of field names */ var aFields = AFMakeArrayFromList(cFields); for (var i = 0; i < aFields.length; i++) { /* Found a field, process it's value. */ var f = this.getField(aFields[i]); var a = f.getArray(); for (var j = 0; j < a.length; j++) { var nTemp = AFMakeNumber(a[j].value); if (i == 0 && j == 0 && (cFunction == "MIN" || cFunction == "MAX")) nValue = nTemp; nValue = AFSimple(cFunction, nValue, nTemp); nFields++; } } if (cFunction == "AVG" && nFields > 0) nValue /= nFields; // make sure that the value we put out is actually sane. Sometimes because // of rounding issues and the binary to decimal conversion we get tiny exponential // numbers, ex 1.0-.99-.01 will return 8.673617379884035e-18 // I chose toFixed(6) since after 6, js starts using the 1.0e-7 notation if( cFunction == "AVG" || cFunction == "SUM" || cFunction == "PRD" ) nValue = nValue.toFixed(6) *1.0; event.value = nValue; } function AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) { /* This function validates the current keystroke event to make sure the key pressed is reasonable for a numeric field. */ var value = AFMergeChange(event); var commit, noCommit; if(!value) return; if(sepStyle > 1) { commit = AFNumberCommaSepCommitRegExp; noCommit = AFNumberCommaSepEntryRegExp; } else { commit = AFNumberDotSepCommitRegExp; noCommit = AFNumberDotSepEntryRegExp; } if(!AFExactMatch(event.willCommit ? commit : noCommit, value)) { if (event.willCommit && !event.silenceErrors) { var cAlert = EScriptString.IDS_INVALID_VALUE; if (event.target != null) cAlert += " [ " + event.target.name + " ]"; app.alert(cAlert); } else app.beep(0); event.rc = false; } if (event.willCommit && sepStyle > 1) { // convert from a string to a number strval = event.value; commas = new RegExp(); commas.compile(","); strval = strval.replace(commas, "."); event.value = strval *1.0; } } function AFPercent_Keystroke(nDec, sepStyle) { AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true); } function isNumber(ch) { return (ch >= "0" && ch <= "9"); } function isAlphabetic(ch) { return ((ch >= "a" && ch <= "z") || (ch >= "A" && ch <= "Z")); } function isAlphaNumeric(ch) { return (isNumber(ch) || isAlphabetic(ch)); } function isReservedMaskChar(ch) { return (ch == '9' || ch == 'X' || ch == 'A' || ch == 'O'); } function maskSatisfied(vChar, mChar) { switch(mChar) { case "9": return isNumber(vChar); case "A": return isAlphabetic(vChar); case "O": return isAlphaNumeric(vChar); case "X": return true; default: return (vChar == mChar); } } function indexOfNextEssential(mask, startIndex) { for(var i = startIndex; i < mask.length; i++) { if(isReservedMaskChar(mask.charAt(i))) return i; } return -1; } function AFSpecial_KeystrokeEx(mask) { var value = AFMergeChange(event); if(!value || !mask.length) return; var cAlert = EScriptString.IDS_INVALID_VALUE + ' = "' + mask + '"'; if(event.willCommit) { if(indexOfNextEssential(mask, value.length) != -1) { if (!event.silenceErrors) app.alert(cAlert); event.rc = false; return; } else { event.value = event.value + mask.substring(value.length, mask.length); return; } } var nMaskIndex = 0; var nValueIndex = 0; var nOffset = 0; // number of characters we've added to change to make it legal var nChangeStart = event.selStart; while(nValueIndex < value.length) { var mChar = mask.charAt(nMaskIndex); var vChar = value.charAt(nValueIndex); if(!maskSatisfied(vChar, mChar)) { var nextEssential = indexOfNextEssential(mask, nMaskIndex); var nChangeEnd = event.selStart + event.change.length + nOffset; if(((nMaskIndex < mask.length) && !isReservedMaskChar(mChar)) && (nextEssential != -1) && maskSatisfied(vChar, mask.charAt(nextEssential)) && ( (nValueIndex + nOffset) >= nChangeStart) && ( (nValueIndex + nOffset) <= nChangeEnd) ) // we can only modify values w/in the change range { var maskSubstring = mask.substring(nMaskIndex, nextEssential); event.change = event.change.substring(0, nValueIndex + nOffset - nChangeStart) + maskSubstring + event.change.substring(nValueIndex + nOffset - nChangeStart) nOffset = nOffset + maskSubstring.length; nMaskIndex = nextEssential; } else { if (!event.silenceErrors) app.alert(cAlert); event.rc = false; return; } } nValueIndex++; nMaskIndex++; } } function AFSpecial_Keystroke(psf) { /* This function validates the current keystroke event to make sure the key pressed is reasonable for a "special" field. */ /* The special formats, indicated by psf, are: psf format --- ------ 0 zip code 1 zip + 4 2 phone 3 SSN */ var value = AFMergeChange(event); var commit, noCommit; if(!value) return; switch (psf) { case 0: commit = AFZipCommitRegExp; noCommit = AFZipEntryRegExp; break; case 1: commit = AFZip4CommitRegExp; noCommit = AFZip4EntryRegExp; break; case 2: commit = AFPhoneCommitRegExp; noCommit = AFPhoneEntryRegExp; break; case 3: commit = AFSSNCommitRegExp; noCommit = AFSSNEntryRegExp; break; } if(!AFExactMatch(event.willCommit ? commit : noCommit, value)) { if (event.willCommit && !event.silenceErrors) { var cAlert = EScriptString.IDS_INVALID_VALUE; if (event.target != null) cAlert += " [ " + event.target.name + " ]"; app.alert(cAlert); } else app.beep(0); event.rc = false; } } function AFDate_KeystrokeEx(cFormat) { /* This function validates the current keystroke event to make sure the ** key pressed is reasonable for a date field. */ if(event.willCommit && !AFParseDateEx(AFMergeChange(event), cFormat)) { /* Dates are only validated on commit */ if (event.willCommit && !event.silenceErrors) { var cAlert = EScriptString.IDS_INVALID_DATE; var cAlert2 = EScriptString.IDS_INVALID_DATE2; if (event.target != null) cAlert += "[ " + event.target.name + " ]"; cAlert += cAlert2 + cFormat; app.alert(cAlert); } else app.beep(0); event.rc = false; } } function AFDate_Keystroke(pdf) { /* OBSOLETE: Use AFDate_KeystrokeEx. */ var cOldFormats = new Array( "m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM" ); AFDate_KeystrokeEx(cOldFormats[pdf]); } function AFTime_Keystroke(ptf) { /* This function validates the current keystroke event to make sure the key pressed is reasonable for a time field. */ if(event.willCommit && !AFParseTime(event.value, null)) /* times are only validated on commit */ { if (event.willCommit && !event.silenceErrors) { var cAlert = EScriptString.IDS_INVALID_VALUE; if (event.target != null) cAlert += " [ " + event.target.name + " ]"; app.alert(cAlert); } else app.beep(0); event.rc = false; } } function AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) { /* This function formats a numeric value according to the parameters. */ var value = AFMakeNumber(event.value); var sign = (value < 0 ? -1 : 1); var f = event.target; var formatStr = ""; if(value == null) { event.value = ""; return; } if (negStyle == 1 /* Red */ || negStyle == 3 /* ParensRed */) { if (sign > 0 ) f.textColor = color.black; else f.textColor = color.red; } value = new String(util.printf("%," + sepStyle + "." + nDec + "f", value)); if ((negStyle != 0 /* MinusBlack */ || bCurrencyPrepend) && value.substring(0, 1) == '-') { value = value.substring(1); } if (sign < 0 && bCurrencyPrepend && negStyle == 0) formatStr = '-'; /* prepend the -ve sign */ if ((negStyle == 2 /* ParensBlack */ || negStyle == 3 /* ParensRed */) && sign < 0) formatStr = formatStr + "("; if (bCurrencyPrepend) formatStr = formatStr + strCurrency; formatStr = formatStr + value; if (!bCurrencyPrepend) formatStr = formatStr + strCurrency; if ((negStyle == 2 /* ParensBlack */ || negStyle == 3 /* ParensRed */) && sign < 0) formatStr = formatStr + ")"; event.value = formatStr; } function AFPercent_Format(nDec, sepStyle, bPercentPrepend) { /* This function formats a percentage value according to the parameters. */ var value = AFMakeNumber(event.value) * 100; var formatStr = "%," + sepStyle + "." + nDec + "f"; if(value == null) { event.value = ""; return; } value = util.printf(formatStr, value); if (bPercentPrepend) event.value = "%" + value; else event.value = value + "%"; } function AFSpecial_Format(psf) { /* This function formats a "special" value according to the "PropsSpecialFormat" parameter psf. */ /* The special formats, indicated by psf, are: 0 = zip code, 1 = zip + 4, 2 = phone, 3 = SSN. */ var value = event.value; if(!value) return; switch (psf) { case 0: var formatStr = "99999"; break; case 1: var formatStr = "99999-9999"; break; case 2: /* must distinguish between 2 styles: with and without area code */ var NumbersStr = util.printx("9999999999", value); /* try to suck out 10 numeric chars */ if (NumbersStr.length >= 10 ) var formatStr = "(999) 999-9999"; else var formatStr = "999-9999"; break; case 3: var formatStr = "999-99-9999"; break; } event.value = util.printx(formatStr, value); } function AFParseDateYCount(cFormat) { /* Determine the order of the date. */ var yCount = 0; for (var i = 0; i < cFormat.length; i++) { switch (cFormat.charAt(i)) { case "\\": /* Escape character. */ i++; break; case "y": yCount += 1; break; } } return yCount; } function AFParseDateOrder(cFormat) { /* Determine the order of the date. */ var cOrder = ""; var split = ""; for (var i = 0; i < cFormat.length; i++) { switch (cFormat.charAt(i)) { case "\\": /* Escape character. */ i++; break; case "m": if (cOrder.indexOf("m") == -1) cOrder += "m"; break; case "d": if (cOrder.indexOf("d") == -1) cOrder += "d"; break; case "j": case "y": if (cOrder.indexOf("y") == -1) cOrder += "y"; break; default: if(cFormat.charAt(i) != '\0') split = cFormat.charAt(i); } } /* Make sure we have a full complement of 3 chars. */ if (cOrder.indexOf("m") == -1) cOrder += "m"; if (cOrder.indexOf("d") == -1) cOrder += "d"; if (cOrder.indexOf("y") == -1) cOrder += "y"; cOrder += split; return cOrder; } /* This AFParseGMTDateString function parses date string. The string should be in standard GMT format. It parses date string using JS date parsing apis. @param cGMTDateString: This is a string containing date in standard GMT format that this function tries to parse. If it is unable to parse that string or string doesn't contain GMT+ in it then it returs a null object. If this function succedess in parsing the date string then it return a valid date object */ function AFParseGMTDateString(cGMTDateString) { if (!cGMTDateString) return null; //What else can we do with a NULL string; /* This function specifically parses only the strings containing date in standard GMT offset format. Like the one returned by JS new Date call. If this function is getting a date string that doesn't contain GMT offset then it simply means that caller doesn't realize what this function is meant for and is calling it for strings that it can't handle. Return null for such clients */ if (cGMTDateString.indexOf("GMT+") == -1) return null; /* Ok, now we know that this string has content and also that it contains GMT+ in it. Try to convert it to date object using JS date parsing method. If we succede, return the date object otherwsie we will return null object */ var timeStamp = Date.parse(cGMTDateString); if (isNaN(timeStamp) == false) { var date = new Date(timeStamp); return date; } else { /* We were unable to parse the date string provided to us. return the null date object to reflect this */ return null; } } function AFDate_FormatEx(cFormat) { /* cFormat is a format string with which the date is to be formatted. */ if (!event.value) return; /* Blank fields remain blank */ if(event.value.indexOf("GMT+") != -1) { /* Presence of "GMT+" in date string means that someone has passed a string containing a GMT offset in it. AFParseDateEx is never ever going to handle this date string because it just doesn't understand GMT offset. What it will do infact is that it will take the GMT offset as year or month or date depending on cFormat and do some processing. Some exception checks in AFParseDateEx may also return some valid date value but it will never be what caller wanted. For one such scenario, see BUG#2592473 where GMT offset was being taken as year and workflow worked fine for almost all cases. But it was failing when GMT offset was zero because a check in AFParseDateEx assumes that year can never be zero and returned a NULL date in that case. I couldn't find anyone else passing a GMT time to this function. Now the question is, what will happen if someone else too was passing a GMT offset date string before this if block was added. This AFParseGMTDateString should convert it to a proper date and util.printd formats it as per the cFormat string. Lastly, the reason I haven't put the other part of code in else is because this if block is added at much later stage to fix BUG#2592473. If someone else was passing a GMT offset date string before this if block was added and their workflow was working fine( certainly and fortunately because of some excpetion going in their favor) and this Date.parse fails to parse that string, i don't want to break their workflow now. */ var gmtDate = AFParseGMTDateString(event.value); /* If gmtDate object has value then format that date value as per the cFormat string and return. Otherwise, let the AFParseDateEx handle the case as it must be handling it before the fix of BUG#2592473 */ if (gmtDate) { event.value = util.printd(cFormat, gmtDate); return; //We are done so return now } } var date = AFParseDateEx(event.value, cFormat); if (!date) { event.value = ""; return; } event.value = util.printd(cFormat, date); } function AFDate_Format(pdf) { /* OBSOLETE: Use AFDate_FormatEx. */ var cOldFormats = new Array( "m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM" ); AFDate_FormatEx(cOldFormats[pdf]); } function AFTime_Format(ptf) { /* This function formats a time value according to the "PropsTimeFormat" parameter ptf. ** The time formats, indicated by ptf, are: ** ptf format ** --- ------ ** 0 PTF_24HR_MM [ 14:30 ] ** 1 PTF_12HR_MM [ 2:30 PM ] ** 2 PTF_24HR_MM_SS [ 14:30:15 ] ** 3 PTF_12HR_MM_SS [ 2:30:15 PM ] */ if(!event.value) return; /* Blank fields remain blank */ var date = AFParseTime(event.value, null); if(!date) { event.value = ""; return; } var cFormats = new Array( "HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt" ); event.value = util.printd(cFormats[ptf], date); } function AFTime_FormatEx(cFormat) { if(!event.value) return; /* Blank fields remain blank */ var date = AFParseTime(event.value, null); if(!date) { event.value = ""; return; } event.value = util.printd(cFormat, date); } function AFSignatureLock(doc, cOperation, cFields, bLock) { // Locks or unlocks a set of fields according to the specified operation. /* Field name separator is one or more spaces followed by a comma, ** followed by one or more spaces. ** or an array of field names */ var aFields = AFMakeArrayFromList(cFields); /* Three cases: ALL, EXCEPT, THESE for the field name list. */ if (cOperation != "THESE") { for (var i = 0; i < doc.numFields; i++) { var f = doc.getField(doc.getNthFieldName(i)); f.readonly = bLock; } } if (cOperation == "EXCEPT") /* EXCEPT = ALL(lock) then THESE(unlock) */ bLock = !bLock; if (cOperation == "THESE" || (cOperation == "EXCEPT" && !bLock)) { for (var i = 0; i < aFields.length; i++) { var f = doc.getField(aFields[i]); var a = f.getArray(); for (var j = 0; j < a.length; j++) { a[j].readonly = bLock; } } } } function AFSignature_Format(cOperation, cFields) { /* This function is invoked at format time but really is used to lock fields ** in the document. We unlock all the specified fields if the value is ** null (which means the signature hasn't been applied). */ var bLock = (event.value != ""); AFSignatureLock(this, cOperation, cFields, bLock); } function AFStringReplace(cString, oRegExp, cReplacement) { return cString.replace(oRegExp, cReplacement); } //todo: call the cpp routine in AVLookupWord.cpp which duplicates this functionality function LookUpWordEnable(country) { /* Check a locatization for Look Up Word definition ability. Parameters: country: 3 character string such as "ENU", describing the country. */ var bEnable = false; switch (country) { case "ENU": /* English */ bEnable = true; break; default: /* unsupported country */ break; } return bEnable; } function LookUpWordDefinitionURL(cWord, country) {/* Builds a URL for dictionary.com. Parameters: cWord: word to be defined such as "orthographic" country: 3 character string such as "ENU", describing the country. */ var wordStr, url = ""; switch (country) { case "ENU": /* English */ { url = "http://www.dictionary.com/cgi-bin/dict.pl?term="; wordStr = ""; for (i=0; i < cWord.length; i++) if (cWord.charAt(i) == ' ') wordStr = wordStr + '+'; else wordStr = wordStr + cWord.charAt(i); url = url + wordStr; break; } default: /* unsupported country */ break; } return url; } function encryptUsingPolicyForJSObject(pDoc, cPolicyId, aEmailAddresses, oPermissions, bAllowUI) {/* Encrypt a document using a policy id. This can be used via JSObject. Parameters: pDoc: the document to encrypt cPolicyId: the policy id to apply (e.g. "KJGWLIYEWI-16a687676") aEmailAddresses: an array of email addresses (e.g. ["joe@nonesuch.com", "jimbob@adobe.com"]) *optional* oPermissions: an array of permission strings *optional* bUI: specifies whether UI is allowed (e.g. true) *optional* default is true Returns: SecurityPolicyResults generic object */ var results; /* handle optional bAllowUI */ var allowUI = true; if(bAllowUI != null) { allowUI = bAllowUI; } /* handle optional aEmailAddresses */ if(aEmailAddresses != null) { var users = new Object(); for(var i = 0; i < aEmailAddresses.length; i++) { users[i] = { email: aEmailAddresses[i] }; } var group = new Object(); group.userEntities = users; /* handle optional oPermissions */ if(oPermissions != null) { group.permissions = oPermissions; } results = pDoc.encryptUsingPolicy({oPolicy:{policyId: cPolicyId}, oGroups:[group], bUI:allowUI}); } else { results = pDoc.encryptUsingPolicy({oPolicy:{policyId: cPolicyId}, bUI:allowUI}); } return results; } function LoginForGuardian() { var apsHandler = security.getHandler("Adobe.APS", true); if(!apsHandler.isLoggedIn) return apsHandler.login({bUI: true}); else return true; } function RefreshPoliciesForGuardian() { /*var apsHandler = security.getHandler("Adobe.APS", true); apsHandler.login({bUI: true});*/ var policies = security.getSecurityPolicies(); if(policies) return true; else return false; } function AFValidateEmailSyntax(emailAdress) { /* This function validates the syntax of the email for the echo sign form fields */ var regXEmail = new RegExp("^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\\-+)|([A-Za-z0-9]+\\.+)|([A-Za-z0-9]+\\++))*[A-Za-z0-9]+@((\\w+\\-+)|(\\w+\\.))*\\w{1,63}\\.[a-zA-Z]{2,6}$"); return regXEmail.test(emailAdress); } } catch(e) { console.println(e.extMessage); } try { /* Sort methods */ const ANSB_None = 0; const ANSB_Page = 1; const ANSB_Seq = 2; const ANSB_Author = 3; const ANSB_ModDate = 4; const ANSB_Type = 5; const ANSB_Subject = 6; const ANFB_ShouldPrint = 0; const ANFB_ShouldView = 1; const ANFB_ShouldEdit = 2; const ANFB_ShouldAppearInPanel = 3; const ANFB_ShouldSummarize = 4; const ANFB_ShouldExport = 5; const ANFB_ShouldCollaborate = 6; const ANFB_ShouldNone = 7; const IPV6Type = 1; const IPV4Type = 0; const cTableOddRowColor = "#FFFFFF"; const cTableEvenRowColor = "#F8F8F8"; const cTableHeaderColor = "#E4E4FF"; var myReviewTrackerDebugAlert = function(str) { //narinder - uncomment to turn on debugging //app.alert(str); }; var getFormsString = function(i) { var rval = app.getString({cPlugInName:"Forms", cStringId:i}); if(rval == "") return "empty:" + i; return rval; }; if (typeof Collab != "undefined") { /* for debugging */ function debugExcept(e) { if((typeof app._DEBUG != "undefined") && app._DEBUG) console.println(e) } /* Turn every function in an object into a trust propagator */ ANTrustPropagateAll = app.trustedFunction(function(o) { app.beginPriv(); for(var p in o) { if(typeof o[p] == "function") o[p] = app.trustPropagatorFunction(o[p]); } app.endPriv(); return o; }); function ANClipPrec3(o) { switch(typeof o) { case "object": for(var k in o) o[k] = ANClipPrec3(o[k]); return o; break; case "number": return Math.round(o * 1000) / 1000; break; default: return o; break; } } function CBEncodeMaybeInternalStrings(s) { return s.replace(/\$\$\$([a-zA-Z0-9_]+)/g, function (s, id) { return "(AnnotsString." + id + " ? AnnotsString." + id + " : " + AnnotsString[id].toSource() + ")"; }); } /* Expression that determines whether we can workflow */ const CBCanDoReviewWorkflowCheckExpr = "(" + function() { return (app.viewerVersion >= 6 && (!app.viewerType.match(/Reader/))) || (app.viewerVersion >= 7 && (requestPermission(permission.annot, permission.create) == permission.granted)); }.toSource() + "())"; const CBCanDoWorkflowCheckExprAPR = "(" + function() { return (app.viewerVersion >= 7 && app.viewerType.match(/Reader/) != null) && (requestPermission(permission.annot, permission.create) == permission.granted); }.toSource() + "())"; /* Field to summary functions by property name */ const ANsums = [ /* None */ function(a){return "*None*";}, /* Page */ function(a){return AnnotsString.IDS_SUM_PAGE1+a.doc.getPageLabel(a.page)+AnnotsString.IDS_SUM_PAGE2;}, /* Sequence */ function(a, s){return AnnotsString.IDS_SUM_SEQ1+(s ? s : a.seqNum)+AnnotsString.IDS_SUM_SEQ2;}, /* Author */ function(a){return AnnotsString.IDS_SUM_AUTHOR1+a.author+AnnotsString.IDS_SUM_AUTHOR2;}, /* ModDate */ function(a){ var d = a.modDate; return AnnotsString.IDS_SUM_DATE1+ (d ? util.printd(2, a.modDate) : AnnotsString.IDS_DATE_INDETERMINATE )+AnnotsString.IDS_SUM_DATE2; }, /* Type */ function(a){return AnnotsString.IDS_SUM_TYPE1+a.uiType+AnnotsString.IDS_SUM_TYPE2;}, /* Subject */ function(a){ var s = a.subject; return s ? AnnotsString.IDS_SUM_SUBJ1+s+AnnotsString.IDS_SUM_SUBJ2 : ""; }, ]; /* Field to summary functions by property name in case of custom layout */ const ANsumsCL = [ /* None */ function(a){return "*None*";}, /* Page */ function(a){return AnnotsString.IDS_SUM_PAGE1+a.doc.getPageLabel(a.page)+AnnotsString.IDS_SUM_PAGE2;}, /* Sequence */ function(a, s){return AnnotsString.IDS_SUM_SEQ1+(s ? s : a.seqNum)+AnnotsString.IDS_SUM_SEQ2;}, /* Author */ function(a){return a.author;}, /* ModDate */ function(a){ var d = a.modDate; return d ? (AnnotsString.IDS_SUM_DATE1+util.printd(2, a.modDate)+AnnotsString.IDS_SUM_DATE2):""; }, /* Type */ function(a){return AnnotsString.IDS_SUM_TYPE1+a.uiType+AnnotsString.IDS_SUM_TYPE2;}, /* Subject */ function(a){ var s = a.subject; return ""; }, ]; /* Order of summary fields */ const ANsumorder = [ ANSB_Page, ANSB_Author, ANSB_Subject, ANSB_ModDate ]; /* binary insertion into sorted list */ function binsert(a, m) { var nStart = 0, nEnd = a.length - 1; while(nStart < nEnd) { var nMid = Math.floor((nStart + nEnd) / 2); if(m.toString() < a[nMid].toString()) nEnd = nMid - 1; else nStart = nMid + 1; } if((nStart < a.length) && (m.toString() >= a[nStart].toString())) a.splice(nStart + 1, 0, m); else a.splice(nStart, 0, m); } /* perform a worst case n log ( n ) sort with status */ function isort(a, status) { var i; var aNew = new Array(); if(status) { app.thermometer.begin(); app.thermometer.duration = a.length; app.thermometer.text = status; } for(i = 0; i < a.length; i++) { if(status) app.thermometer.value = i; binsert(aNew, a[i]); } if(status) app.thermometer.end(); return aNew; } function ANstateful(annot) { return annot && typeof annot.state == "object" && typeof annot.state.state != "undefined" && annot.state.state; } function ANsumFlatten(a, m, i, s) { var result = []; if(a) { if(s) /* if we're sorting, sort by creation date */ a.sort(function(a,b){ return a.creationDate.getTime() - b.creationDate.getTime(); }); for(var n = 0; n < a.length; n++) { var item = a[n]; result.push(item); /* push on the item */ result.push(i); /* the indent level */ // don't indent if this one is stateful var sub = ANsumFlatten(m[item.name], m, i + (ANstateful(item) ? 0 : 1), true); for(var j = 0; j < sub.length; j++) result.push(sub[j]); /* and the sub stuff */ } } return result; } function ANsummAnnot(annot, scale, doc, r, p, seqNum, printWithCustomLayout) { var assoc = true; var attribs = ""; r.size = 1 * scale; if(annot.reviewIcon) { r.columns = [ r.columns[0] - 52, 0 ]; r.writeImage({nAmount: 50, oIcon: annot.reviewIcon, column: 2}); } // icon on RHS page r.indent({nAmount: 16 * scale, oIcon: annot.uiIcon, color: ((annot.type == "FreeText") ? annot.fillColor : annot.strokeColor)}); // sequence numbering on LHS if(seqNum && !annot.inReplyTo) attribs = printWithCustomLayout? ANsumsCL[ANSB_Seq](annot, seqNum) : ANsums[ANSB_Seq](annot, seqNum); for(j = 0; j < ANsumorder.length; j++) if(ANsumorder[j] != p) { var s = printWithCustomLayout? (ANsumsCL[ANsumorder[j]])(annot) : (ANsums[ANsumorder[j]])(annot); if(s) attribs += (attribs ? "\t" : "") + s; } var heelPointAsRect = annot.containedPopupHeelPoint; heelPointAsRect = heelPointAsRect.concat(heelPointAsRect); if(!annot.inReplyTo && !seqNum) r.writeText(attribs, doc, annot.page, heelPointAsRect); else if(!annot.inReplyTo) r.writeText(attribs, doc, annot.page, heelPointAsRect, false, "" + seqNum, annot.containedPopupHeelPoint); else r.writeText(attribs, doc, annot.page); var oldColor = r.color; r.color = ["RGB", 0.9, 0.9, 0.9]; // almost white r.divide(0.7 * scale, false); r.color = oldColor; var contents = annot.richContents; if(contents) r.style = "DefaultNoteText"; else contents = " "; // For redaction annots, include overlay text (if present) in the content if (annot.type == "Redact") { if (annot.overlayText && annot.overlayText != "") { var overlayText = AnnotsString.IDS_FLASH_OVERLAY_TEXT.replace("{overlayText}", annot.overlayText); r.writeText(overlayText, doc, annot.page); } } r.writeText(contents, doc, annot.page); r.writeText(" ", doc, annot.page); // Add the state info var models = Collab.getStateModels(false); for(i = 0; i < models.length; i++) { var states = annot.getStateInModel(models[i].name); if(states.length > 0) { r.writeText("" + AnnotsString.IDS_SUM_STATUS_TITLE, doc, annot.page); r.indent(16 * scale); for(j = 0; j < states.length; j++) { var d = util.printd(2, states[j].modDate); var s = states[j].Name; var a = states[j].author; r.writeText(a + " " + s + " " + d, doc, annot.page); } r.outdent(16 * scale); } } r.outdent(16 * scale); } function ANsummarize(doc, title, p, r, dest, fs, print, twoUp, useSeqNum, scale, noAssocDoc, filter, paperWidth, paperHeight, includeAllPages, startPage, endPage, assocColor, assocOpacity, printWithCustomLayout) { /* Summarize annotations sorted primarily by property p */ if(!scale) scale = 1; var thermoUp = true; app.thermometer.begin(); try { app.thermometer.text = AnnotsString.IDS_PROGRESS_SUMMARIZE; if(!ANsums[p]) p = ANSB_Page; if(!title) title = AnnotsString.IDS_UNNAMED; /* make sure we have all annots */ this.syncAnnotScan(); /* Get all summarizable annots on all pages sorted in the given manner */ var a = []; if(typeof startPage == "undefined" || startPage < 0) startPage = 0; if(typeof endPage == "undefined" || endPage < 0) endPage = doc.numPages - 1; for(var n = startPage; n <= endPage; n++) { var a2 = doc.getAnnots(n, p, r, typeof filter == "undefined" ? ANFB_ShouldSummarize : filter); for(var n2 = 0; a2 && n2 < a2.length; n2++) { // If it's hidden, or a state annot or a group slave don't show it var curAnnot = a2[n2]; if(!curAnnot.hidden && (!curAnnot.state || !curAnnot.state.state) && curAnnot.refType != "Group") a.push(curAnnot); } } if(a && a.length > 0) /* Put in thread order */ { app.thermometer.duration = a.length * 4; var t = {}; for(var n = 0; n < a.length; n++, app.thermometer.value = n * 2) { var item = a[n]; if(!t[item.inReplyTo]) t[item.inReplyTo] = [ item ]; else t[item.inReplyTo].push(item); } /* don't sort the top level 'cuz it's already sorted */ a = ANsumFlatten(t[""], t, 0, false); /* make the indents differential */ for(var j = a.length - 1; j > 2; j -= 2) a[j] -= a[j - 2]; } if(a && a.length > 0) { var t; var r = new Report([ 0, 0, paperWidth ? paperWidth : 612, paperHeight ? paperHeight : 792 ]); var assocDoc = noAssocDoc ? null : doc; r.assocColor = assocColor ? assocColor : [ "RGB", 0, 0, 0 ]; r.assocOpacity = assocOpacity ? assocOpacity : 1.0; r.ignoreAnnotLayers = (filter == ANFB_ShouldNone); r.joinAssocs = twoUp; r.style = "NoteTitle"; r.size = 2.5 * scale; t = AnnotsString.IDS_SUM_TITLE1 + title + AnnotsString.IDS_SUM_TITLE2; r.writeText(t); r.divide(3.5 * scale, false); var i, j, contents; var oldHeading; var lastAnnotPage; var curFooterText = ""; var seqNum = 1; // do initial pages if(assocDoc && includeAllPages) { r.style = "NoteTitle"; r.size = 2.5 * scale; // spit out pages w/o annots on them for(var noAnnotPage = startPage; noAnnotPage < a[0].page && noAnnotPage <= endPage; noAnnotPage++) { // prepare report alternatively if print invoked with custom layout if(print && !printWithCustomLayout) { app.beginPriv(); r.copyContentFromDoc(assocDoc, noAnnotPage, 2); app.endPriv(); } else { r.writeText(AnnotsString.IDS_SUM_NO_COMMENTS, assocDoc, noAnnotPage); r.breakPage(); } } } for(i = 0; i < a.length; i += 2) { app.thermometer.value = a.length + i; // update the indent level var ind = a[i + 1]; var curAnnot = a[i]; var footerText = ""; // update the footer r.style = "NoteTitle"; r.size = 2 * scale; if((typeof lastAnnotPage != "undefined") && (curAnnot.page != lastAnnotPage)) { footerText = curFooterText = ""; r.setFooterText(); r.breakPage(); if(assocDoc && includeAllPages) { r.style = "NoteTitle"; r.size = 2.5 * scale; // spit out pages w/o annots on them for(var noAnnotPage = lastAnnotPage + 1; noAnnotPage < curAnnot.page && noAnnotPage <= endPage; noAnnotPage++) { // prepare report alternatively if print invoked with custom layout if(print && !printWithCustomLayout) { app.beginPriv(); r.copyContentFromDoc(assocDoc, noAnnotPage, 2); app.endPriv(); } else { r.writeText(AnnotsString.IDS_SUM_NO_COMMENTS, assocDoc, noAnnotPage); r.breakPage(); } } r.style = "NoteTitle"; r.size = 2 * scale; } seqNum = 1; } footerText = "\r" + AnnotsString.IDS_SUM_FOOTER1 + doc.getPageLabel(curAnnot.page) + AnnotsString.IDS_SUM_FOOTER2; if(footerText != curFooterText) { curFooterText = footerText; r.setFooterText(footerText); } for(; ind < 0; ind++) { r.outdent(16 * scale); r.outdent(16 * scale); } for(; ind > 0; ind--) { r.indent(16 * scale); r.indent(16 * scale); } // maybe do the heading if(!curAnnot.inReplyTo) { var heading = (ANsums[p])(curAnnot); if(heading != oldHeading) { if(typeof oldHeading != "undefined") r.writeText(" "); r.writeText(heading, assocDoc, curAnnot.page); oldHeading = heading; r.divide({bNewPageOk: false}); } } if(useSeqNum) ANsummAnnot(curAnnot, scale, assocDoc, r, p, seqNum, printWithCustomLayout); else ANsummAnnot(curAnnot, scale, assocDoc, r, p, false, printWithCustomLayout); if(!curAnnot.inReplyTo) seqNum++; //r.divide(0.75 * scale, false); lastAnnotPage = curAnnot.page; } r.setFooterText(); // do any remaining pages if(assocDoc && includeAllPages) { r.style = "NoteTitle"; r.size = 2.5 * scale; // spit out pages w/o annots on them for(var noAnnotPage = curAnnot.page + 1; noAnnotPage < assocDoc.numPages && noAnnotPage <= endPage; noAnnotPage++) { // prepare report alternatively if print invoked with custom layout if(print && !printWithCustomLayout) { app.beginPriv(); r.copyContentFromDoc(assocDoc, noAnnotPage, 1); // decrementCount 1 here because we want these pages to be added at the end of the file app.endPriv(); } else r.writeText(AnnotsString.IDS_SUM_NO_COMMENTS, assocDoc, noAnnotPage); } } } else { // do nothing } if(thermoUp) { thermoUp = false; app.thermometer.end(); } if(a && a.length > 0) { if (typeof dest != "undefined") r.save(dest, fs); else if(print) r.print(); else r.open(t); } } catch(e) { app.alert({cMsg: e["message"], oDoc: doc}); } if(thermoUp) app.thermometer.end(); return a ? a.length / 2 : 0; } } if(typeof Collab != "undefined") { var CBAutoConfigCommentRepository = app.trustedFunction(function() { var dialog = ANTrustPropagateAll( { type: "acrobatRMACR", client: ["local.", ""], // Domains to search in services: {}, domains: {}, description: { name: "$$$/Dialogs/CommentRepositoryAutoConfig", elements: [ { type: "view", align_children: "align_left", elements: [ { type: "cluster", name: "$$$/Dialogs/CommentRepositoryAutoConfig/ClusterTitle", width: { sum: [32, { zstring_width: "$$$/Dialogs/CommentRepositoryAutoConfig/ClusterTitle" }]}, elements: [ { type: "static_text", name: "$$$/Dialogs/CommentRepositoryAutoConfig/PleaseSelect" }, { type: "list_box", item_id: "sele", width: 300, height: 200 } ] }, { type: "ok_cancel" } ] } ] }, "sele": function(dialog) { var sele = dialog.store()["sele"]; var enabled = false; for(var i in sele) { if(sele[i] > 0) { enabled = true; break; } } dialog.enable({"ok": enabled}); }, updateServices: function() { this.dialog.load({ sele: this.services }); }, addServices: function(services) { for(var i in services) { var service = services[i]; this.services[service.name] = -1; this.domains[service.name] = service.domain; } this.updateServices(); }, removeServices: function(services) { for(var i in services) { var service = services[i]; delete this.services[service.name]; delete this.domains[service.name]; } this.updateServices(); }, initialize: function(dialog) { this.dialog = dialog; app.beginPriv(); this.discor = SOAP.queryServices(this.type, this, this.client); app.endPriv(); this.dialog.enable({"ok": false}); }, validate: function(dialog) { var sele = dialog.store()["sele"]; var entryCount = 0; for(var i in sele) { entryCount++; if(sele[i] > 0) return true; } if(!entryCount) return true; return app.alert({cMsg: AnnotsString.IDS_CONFIRM_NO_REPOSITORY_CHOICE, nType: 2}) == 4; }, commit: function(dialog) { var sele = dialog.store()["sele"]; for(var i in sele) { if(sele[i] > 0) { app.beginPriv(); this.resolver = SOAP.resolveService(this.type, this.domains[i], i, this); app.endPriv(); break; } } }, destroy: function(dialog) { this.discor.stop(); }, resolve: function(name, service) { app.beginPriv(); Collab.setStoreSettings(service.type, service.settings); Collab.defaultStore = service.type; app.endPriv(); this.resolver.stop(); }, doModal: function() { app.beginPriv(); // Disable dialog warning this.resolve = app.trustedFunction(this.resolve); app.execDialog(this); app.endPriv(); } }); dialog.doModal(); }); /* flags used by collaboration */ const CBFNiceTableName = 1; const CBFNiceDBName = 2; const CBFDBPerDoc = 4; function CBgetTableDesc(doc, author) { var frag = Collab.URL2PathFragment(doc.URL); var DBName; var tableName; if(doc.collabDBFlags & CBFDBPerDoc) { DBName = frag; tableName = author; } else { DBName = ""; tableName = frag; } if(doc.collabDBFlags & CBFNiceTableName) tableName = Collab.hashString(tableName); if(doc.collabDBFlags & CBFNiceDBName) DBName = Collab.hashString(DBName); return {DBName: DBName ? doc.collabDBRoot + DBName : doc.collabDBRoot, tableName: tableName, URL: doc.URL, user: author, flags: doc.collabDBFlags}; } function CBgetTableConnect(desc) { var e; try { var conn = ADBC.newConnection(desc.DBName); var stmt = conn.newStatement(); return {conn: conn, stmt: stmt, tableName: desc.tableName, user: desc.user, flags: desc.flags}; } catch(e) { debugExcept(e); return false; } } function CBgetInfo(conn, name) { var e; try { conn.stmt.execute("select CONTENTS from \"" + conn.tableName + "\" where AUTHOR like ?;", "~" + name + "~"); conn.stmt.nextRow(); return conn.stmt.getColumn("CONTENTS").value; } catch(e) { debugExcept(e); return false; } } function CBsetInfo(conn, name, value) { var e; /* add the field */ try { return conn.stmt.execute("insert into \"" + conn.tableName + "\" (AUTHOR, CONTENTS) values (?, ?);", "~" + name + "~", value); } catch(e) { debugExcept(e); return false; } } function CBcreateTable(desc) { var e; try { var conn = ADBC.newConnection(desc.DBName); var stmt = conn ? conn.newStatement() : null; /* come up with the SQL query to do it */ var sql1 = "create table \"" + desc.tableName + "\" (AUTHOR varchar(64), PAGE integer, NAME varchar(64), CONTENTS text, DATA image);"; var sql2 = "create table \"" + desc.tableName + "\" (AUTHOR varchar(64), PAGE integer, NAME varchar(64), CONTENTS clob, DATA blob);"; var conn = {conn: conn, stmt: stmt, tableName: desc.tableName, user: desc.user, flags: desc.flags}; // first try... try { stmt.execute(sql1); } catch(e) { debugExcept(e); } // second try... try { stmt.execute(sql2); } catch(e) { debugExcept(e); } // these will throw if the table wasn't created CBsetInfo(conn, "URL", desc.URL); CBsetInfo(conn, "creator", desc.user); return conn; } /* we failed... */ catch(e) { debugExcept(e); return false; } } function CBconnect(desc, bDoNotCreate) { var conn = CBgetTableConnect(desc); var e; /* if we can't get the URL from it, it doesn't exist */ if(!CBgetInfo(conn, "URL")) { if (!bDoNotCreate) conn = CBcreateTable(desc); else return false; } /* here it is! */ return conn; } /* mapping of annot types to data properties */ const CBannotdata = { FileAttachment: function(p) { return "FSCosObj" }, Sound: function(p) { return "SCosObj" }, Stamp: function(p) { return /^\#/.exec(p.AP) ? "APCosObj" : false } }; /* returns the data fork for an annot */ function CBannotData(annot) { var prop = CBannotdata[annot.type]; if(prop != null) { prop = prop(annot); var stm = prop ? Collab.cosObj2Stream(annot[prop]) : null; if(stm && typeof ADBC != "undefined") stm.type = ADBC.SQLT_LONGVARBINARY; return stm; } } /* sets the data fork of an annot */ function CBannotSetData(annot, data) { var prop = CBannotdata[annot.type]; if(prop) { prop = prop(annot); if(prop) annot[prop] = data; } } /* recursive function that deletes a reply chain */ function CBDeleteReplyChain(disc) { var replies = Discussions.getDiscussions(disc); if (replies && (replies.length == 1)) { var currentReply = replies[0]; var looper = 1; while (looper) { /* ** There better only be one reply */ var saveChild = Discussions.getDiscussions(currentReply); // console.println("Delete reply"); currentReply.Delete(); if (saveChild && (saveChild.length == 1)) currentReply = saveChild[0]; else looper = 0; } } } /* gets the reply chain, stuffs it in a stream */ /* and then puts it in the annot */ function CBGetReplyChain(dstAnnot, discussion) { var discList = Discussions.getDiscussions(discussion); var cos = Collab.newWrStreamToCosObj(); var data = 0; while (discList && (discList.length > 0)) { data = 1; cos.write(discList[0].Text); //console.println("Write to cos stream " + discList[0].Text.length + " characters"); discList = Discussions.getDiscussions(discList[0]); } if (data == 1) CBannotSetData(dstAnnot, cos.getCosObj()); } /* get the stream and puts the data as replies */ function CBPutReplyChain(discussion, bookmark, srcAnnot) { var cosStream = CBannotData(srcAnnot); if(cosStream) { var s = cosStream.read(Collab.wdBlockSize); while (discussion && (s.length > 0)) { discussion = Discussions.addDiscussion(discussion, "Data", s, bookmark); s = null; s = cosStream.read(Collab.wdBlockSize); } } } /* ADBC based annot enumerator constructor */ function ADBCAnnotEnumerator(parent, sorted) { /* store away parameters */ this.parent = parent; this.sorted = sorted; /* add enumeration method */ this.next = function() { var e; try { if(!this.conn) { this.conn = CBconnect(this.parent.desc, true); this.conn.stmt.execute("select CONTENTS from \"" + this.parent.desc.tableName + "\" where AUTHOR not like '~%~'" + (this.sorted ? " order by PAGE, NAME;" : ";")); } this.conn.stmt.nextRow(); return eval(this.conn.stmt.getColumn("CONTENTS").value); } catch(e) { debugExcept(e); return false; } } } function CBStrToLongColumnThing(s) { return { type: ADBC.SQLT_LONGVARCHAR, value: s, size: s.length }; } /* ADBC based annot store constructor */ function ADBCAnnotStore(doc, user) { this.desc = CBgetTableDesc(doc, user); this.enumerate = function(sorted) { return new ADBCAnnotEnumerator(this, sorted); } this.complete = function(toComplete) { var i; var conn = CBconnect(this.desc,true); if (conn) { for(i = 0; toComplete && i < toComplete.length; i++) { if(CBannotdata[toComplete[i].type]) { var e; try { conn.stmt.execute("select DATA from \"" + this.desc.tableName + "\" where PAGE = ? and NAME like ?;", toComplete[i].page, toComplete[i].name); conn.stmt.nextRow(); var cos = Collab.newWrStreamToCosObj(); conn.stmt.getColumn("DATA", ADBC.Binary | ADBC.Stream, cos); CBannotSetData(toComplete[i], cos.getCosObj()); } catch(e) { debugExcept(e); return false; } } } } else return false; return true; } this.update = function(toDelete, toAdd, toUpdate) { var i; var e; var conn = CBconnect(this.desc); if(conn == null) return false; for(i = 0; toDelete && i < toDelete.length; i++) { try { conn.stmt.execute("delete from \"" + this.desc.tableName + "\" where PAGE = ? and NAME like ?;", toDelete[i].page, toDelete[i].name); } catch(e) { debugExcept(e); return false; } } for(i = 0; toAdd && i < toAdd.length; i++) { try { conn.stmt.execute("insert into \"" + this.desc.tableName + "\" (AUTHOR, PAGE, NAME, CONTENTS, DATA) values (?, ?, ?, ?, ?);", toAdd[i].author, toAdd[i].page, toAdd[i].name, CBStrToLongColumnThing(ANClipPrec3(toAdd[i]).toSource()), CBannotData(toAdd[i])); } catch(e) { debugExcept(e); return false; } } for(i = 0; toUpdate&& i < toUpdate.length; i++) { try { conn.stmt.execute("update \"" + this.desc.tableName + "\" set CONTENTS = ?, DATA = ? where PAGE = ? and NAME like ?;", CBStrToLongColumnThing(ANClipPrec3(toUpdate[i]).toSource()), CBannotData(toUpdate[i]), toUpdate[i].page, toUpdate[i].name); } catch(e) { debugExcept(e); return false; } } return true; } } /* Munge an URL such that Web Discussions won't put our data in the discussions pane */ function WDmungeURL(url) { return url + "/ACData"; } /* Web discussions based annot enumerator constructor */ function WDAnnotEnumerator(parent, sorted) { // console.println("WDAnnotEnumerator(): Begin"); this.parent = parent; this.sorted = sorted; this.next = function() { try { app.thermometer.begin(); app.thermometer.text = AnnotsString.IDS_PROGRESS_FETCHING; if(!this.discussions) { this.discussions = Discussions.getDiscussions(WDmungeURL(this.parent.doc.URL)); // always sort as our completion callback relies on a sorted list if(this.discussions) { this.discussions = isort(this.discussions, AnnotsString.IDS_PROGRESS_SORTING); app.thermometer.duration = this.discussions.length; } this.index = 0; } // skip non-Acro discussions while(this.discussions && this.index < this.discussions.length && this.discussions[this.index] == "[Discussion]") app.thermometer.value = this.index++; app.thermometer.end(); if(!this.discussions || this.index >= this.discussions.length) { return false; } return eval(this.discussions[this.index++].Text); } catch(e) { debugExcept(e); app.thermometer.end(); return false; } } // next } // Add default state handlers -- this should go in a seperate file. } // Should send for review be enabled? function ANSendForReviewEnabled(doc) { if(!Collab.hasSynchonizer) return false;//disable initiate for review if Synchronizer is not there var result = false; if(app.viewerType != "Reader") { if(doc != null) { try { result = !doc.external; } catch(e){ result = true; } } else result = true; } //return app.viewerType != "Reader" && (doc == null || !doc.external); return result; } function ANSendForSharedReviewEnabled(doc) { return ANSendForReviewEnabled(doc); } function ANSendForFormDistributionEnabled(doc) { return ANSendForReviewEnabled(doc); } // This was moved to CollabUtil.cpp as part of the Annots delay load work. // TODO: this should be removed when we turn off the force loading of Annots // and delay load it for real. function ANSendCommentsToAuthorEnabled(doc) { if (typeof doc == "undefined") return false; var reviewing = Collab.isEmailReview(doc); return reviewing && (doc.requestPermission(permission.annot, permission.canExport) == permission.granted) && (doc.requestPermission(permission.annot, permission.modify) == permission.granted); } ANVerifyComments = app.trustedFunction(function(doc, str) { if((doc.Collab.addedAnnotCount < 1) && (doc.Collab.modifiedAnnotCount < 1)) { // confirm there are comments or the user doesn't care var result = 0; app.beginPriv(); result = app.alert(str, 2, 2); app.endPriv(); return result == 4; } return true; }); /* E-mail ad-hoc workflow stuff */ function ANDoSend(doc,docID,from,to,position,cc,bcc,subject,body,bUB,bUI,bApproval,bNoMojo,toolbars,bInitiatorEmail) { // // If the "to" wasn't passed and there's no UI to get a "to" tben // return 0 (error). // if (((typeof to == "undefined") || to.length == 0) && (bUI == false)) { app.alert({cMsg: AnnotsString.IDS_SEND_FOR_REVIEW_NO_RECIPIENT, oDoc: doc}); return 0; // Cancelled } var raddr = ""; if ((typeof from != "undefined") && (from.length != 0)) { raddr = from; } // use position to find out who to actually send this to since we only send to one // person. unless the position is 0, which means send to them all. // note we are assuming that the invitees are semi-colon delimited, not comma var url = "mailto:"; if (position == 0) { url += escape(to); } else { var invitees = to.split(";"); if (position > (invitees.length + 1)) url += escape(to); // backup strategy else { url += escape(invitees[position - 1]); } } url += "?"; var firstParam = false; // // Special case for approvals. CC may be passed in but we don't want // to actually use it in the URL. CCs for Approvals are separate // messages that don't contain mojo. See ANSendForApproval // // changed in A8 - 04/13/2006 tshiono // operate cc field with the same handling as cc: of mail application // add a check box to notify initiator of the approval status. // //if ((typeof cc != "undefined") && (cc.length != 0) && (!bApproval)) if ((typeof cc != "undefined") && (cc.length != 0)) { if (firstParam) url += "&"; url += "cc=" + escape(cc); firstParam = true; } // changed in A8 - 04/27/2006 tshiono // use bcc field to handle the initiator address in javascript code only. // but in Collab data, the initator address should be stored in cc field // to keep backward compatibility. // //if ((typeof bcc != "undefined") && (bcc.length != 0)) if ((typeof bcc != "undefined") && (bcc.length != 0) && (!bApproval)) { if (firstParam) url += "&"; url += "bcc=" + escape(bcc); firstParam = true; } if ((typeof subject != "undefined") && (subject.length != 0)) { if (firstParam) url += "&"; url += "subject=" + escape(subject); firstParam = true; } if ((typeof body != "undefined") && (body.length != 0)) { if (firstParam) url += "&"; url += "body=" + escape(body); firstParam = true; } if (bUI) { if (firstParam) url += "&"; url += "ui=true"; } else { if (firstParam) url += "&"; url += "ui=false"; } var startDate = new Date(); var script; if (!bApproval) { var params = ({ initiator: raddr, initScript: "", invitees: to, cc: cc, bcc: "", sentDate: startDate, toolbars: toolbars, selfDestruct: true }).toSource().replace("{", "$& doc: this, "); // do review stuff CBCanDoEBRReviewWorkflowCheckExpr = "(" + CBEncodeMaybeInternalStrings(function() { var bReader = app.viewerType.match(/Reader/); var bResult = ((app.viewerVersion >= 6 && (!bReader)) ||(app.viewerVersion >= 7 && (requestPermission(permission.annot, permission.create) == permission.granted))); if(bResult && external) { var err = bReader ? $$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_READER : $$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_ACROBAT; app.alert({cMsg: err}); return false; } return bResult; }.toSource()) + "())"; script = "if(!" + CBCanDoEBRReviewWorkflowCheckExpr + ") {" + /* really nothing here? if(!ADBE.Reader_Value_Asked && !ADBE.Viewer_Value_Asked) app.alert({cMsg: \"" + AnnotsString.IDS_SEND_FOR_REVIEW_VERSION_ERR + "\", oDoc: this})*/ " } else { Collab.registerReview(" + params + ");}"; } else { // XXX bug # 1121631: exclude sentDate and make initiator always empty to ensure that // the script is byte-for-byte identical for every approval script or UB validation // will break! This is a last minute HACK!!! var params = ({ initiator: "", //XXX initScript: false, invitees: "", cc: bcc, // pass initiator address to cc field. bcc: "", //XXX sentDate: startDate, initiatorEmail: bInitiatorEmail, // changed in A9: preserve this Javascript except rejecting or finally completing. selfDestruct: false }).toSource().replace("{", "$& doc: this, "); // do approval stuff // note that we do use CC here so that if the initiator wants to follow the doc // the initiator will get an email. See ANSendForApproval for details. CBCanDoApprovalWorkflowCheckExpr = "(" + CBEncodeMaybeInternalStrings(function() { var bReader = app.viewerType.match(/Reader/); var bResult = (app.viewerVersion >= 9) && ((!bReader) || (requestPermission(permission.annot, permission.create) == permission.granted)); if(bResult && external) { var err = bReader ? $$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_READER : $$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_ACROBAT; app.alert({cMsg: err}); return false; } return bResult; }.toSource()) + "())"; script = "if(!" + CBCanDoApprovalWorkflowCheckExpr + ") {" + /* really nothing here? if(!ADBE.Reader_Value_Asked && !ADBE.Viewer_Value_Asked) app.alert({cMsg: \"" + AnnotsString.IDS_SEND_FOR_APPROVAL_VERSION_ERR + "\", oDoc: this})*/ " } else { Collab.registerApproval(" + params + ");}"; } var result; var raise = false; var e; try { var submitParams = {cURL: url, cPermID: docID, bPDF/*bEmbedForm*/: true, bCheckReqdFields: false }; if(!bNoMojo) { // changed in A9 - 10/19/2007 tshiono // because of JS replacement is forbidden in A9, do not add mojo for approval notification mail. //XXX adding mojo for approval notification mail is started since A8. var docScriptName = "___ADBERMAIS___"; var oneShotScript = script + "\nif(app.viewerVersion < 7) try{addScript(" + docScriptName.toSource() + ", ' ');} catch(e){}"; // creator (required; string abbreviation for the Acrobat component that is calling this function, to be used in variable names, e.g. "RMA" or "Form"), // title (required if using "response" dialogs; title of "response" type dialogs. e.g. "Adobe Acrobat"), // r_vers (requried; the version number of Reader needed by the creator to properly view the file, e.g. 7.0), // a_vers (required; the version number of Acrobat needed by the creator to properly view the file, e.g. 6.02). // url (optional; url string for user update info, default "http://cgi.adobe.com/special/acrobat/update"), // wf (optional; string representing workflow parameter in the cgi string, so far "EBRwRE", "EBRwoRE", "AwRE", "AwoRE", default ""), // cgi (optional; string appended to url, default "?p=" + app.platform + "&v=" + app.viewerVersion + "&l=" + app.language + "&c=" + app.viewerType + "&w=" + actions.wf), // prefix (optional; string consisting of JS code to be inserted before code inserted by this function. This code can end in an if statement, as the code inserted will always be surrounded by {}. For example, "if (typeof(xfa_installed) == "undefined" || typeof(xfa_version) == "undefined" || xfa_version < 2.0)") // type (required; what kind of dialog to put up: "alert" for app.alert where OK calls getURL, "updater" for app.alert where OK calls app.findComponent, and "response" for app.response to copy URL from), // str (required; actual string to be shown in the dialog), // compType (required only for "updater" type; string identifying Updater component type to get e.g. "App" or "Plugin" or "UDPatch"), // comp (required only for "updater" type; string identifying Updater component to get e.g. "Reader7", ask Updater team/Art Amezcua for exact values). // changed in A9 - 10/23/2007 tshiono // due to change of approval Javascript handling, approval changed support version into "9 or later". var parms = { creator: "RMA", title: AnnotsString.IDS_SORT_WARNING_TITLE, // XXX r_vers: bApproval ? 9.0 : 7.0, // r7 supports reviewing, but not approval a_vers: bApproval ? 9.0 : 6.0, // a6 supports reviewing, but not approval wf: (bApproval? "A" : "EBR") + (bUB ? "w" : "wo") + "RE" }; var strPref = "IDS_VERERR_" + (bApproval ? "APP" : "EBR") + (bUB ? "_RE" : "") + "_"; // xxx debug code for version checking stuff //app.alert(strPref); // For each version action property, insert its dialog string // // changed in A8 - 06/19/2006 tshiono // fix for bugs #1316816 and #1316818: Need to update JavaScript and strings. // we don't call app.findComponent any longer for QE reasons and limitation of how // we ship dot releases. removed check routines for app.findComponent. // // changed in A9 - 10/24/2007 tshiono // fix for bug #1584711: supports A9 and makes version-checking simple. // var vers = new Array(); if(!bApproval) // EBR { vers["rold"] = { vern: parms.r_vers, sver: "R602", labl: "Old" }; vers["aold"] = { vern: parms.a_vers, sver: "F4o5", labl: "Old" }; } else // Approval { vers["rold"] = { vern: parms.r_vers, sver: "R602", labl: "Old" }; vers["a5"] = { vern: 6.0, sver: "F4o5", labl: "5x" }; vers["aold"] = { vern: parms.a_vers, sver: "F602", labl: "Old" }; } for(var v in vers) { var sver = vers[v].sver; var sname = strPref + sver; var str = AnnotsString[sname]; // xxx debug code for version checking stuff //app.alert(sname + " : " + str); if(str) { // fix for bug #1117470: Add English warning messages in the warning dialog // when opening Approval PDF on Acrobat 6.0. // make English warning messages when Acrobat language is not ENU. var strENU = null; if(bApproval && app.language != "ENU") { var snameENU = sname + "_ENU"; strENU = AnnotsString[snameENU]; } // changed in A8 - 06/19/2006 tshiono // fix for bugs #1316816, #1316818: Need to update JavaScript and strings. // we don't call findComponent any longer for QE reasons. parms[v] = { str: str, strenu: strENU, // we update for reader 6 only, EXCEPT for non-RE approval where we never update //type: ((sver == "R6" || sver == "R602") && (!bApproval || bUB)) ? "updater" : "url" type: "url", // always use "url" prod: (sver.substring(0,1) == "F")? "Viewer" : "Reader", vern: vers[v].vern, labl: vers[v].labl }; } } var scripts = CreateViewerVersionCheck70(parms); //var scripts = {}; submitParams.oJavaScript = { Doc: [ docScriptName, oneShotScript ] }; // throw in the version scripts for(var s in scripts) submitParams.oJavaScript.Doc = submitParams.oJavaScript.Doc.concat(s, scripts[s]); // xxx debug code for version checking stuff //app.alert(submitParams.toSource()); } if(bUB) submitParams.cUsageRights = submitFormUsageRights.RMA; // Watson# 1670577 - Set the doc-id after full-saving the file in case of EBR // Do this only if we are ubiquitizing the doc if(!bApproval && bUB) submitParams.bSetDocIDLater = true; app.beginPriv(); result = doc.submitForm(submitParams); app.endPriv(); } catch(e) { app.alert({cMsg: e["message"], oDoc: doc}); raise = true; } var oResult = new Object(); oResult.submitFormResult = result; oResult.raised = raise; return oResult; } // function CreateViewerVersionCheck70(actions) // The composition of the 'actions' object is version object with the following property names: r5, a5, r6, a6, r601, a601, r602, a602 (expand as necessary - but change code to match) // and stand for Reader (r) or Acrobat (a) and the respective version number in which a dialog would appear. // The dialog specified at a certain version will also be used in lower versions down to the version of next specified version object in descending order for that product (Reader or Viewer), to the granularity of the list of possible version objects. // (or all lower versions if there are none). For example, if an r6 object is present, it's dialog will show in Reader versions 6 and lower. // The version object with the greatest version will show in all versions less than the r_vers property. // So using the same example, if an r602 object is also present, and the r_vers property is set to 7, the r602 dialog will be used in versions less than 7, down to 6.01. // Strings to show in the UI should come from stored localized values. // The actions object has the additional properties that apply to all of the object literals: // creator (required; string abbreviation for the Acrobat component that is calling this function, to be used in variable names, e.g. "RMA" or "Form"), // title (required if using "response" dialogs; title of "response" type dialogs. e.g. "Adobe Acrobat"), // r_vers (requried; the version number of Reader needed by the creator to properly view the file, e.g. 7.0), // a_vers (required; the version number of Acrobat needed by the creator to properly view the file, e.g. 6.02). // url (optional; url string for user update info, default "http://cgi.adobe.com/special/acrobat/update"), // wf (optional; string representing workflow parameter in the cgi string, so far "EBRwRE", "EBRwoRE", "AwRE", "AwoRE", default ""), // cgi (optional; string appended to url, default "?p=" + app.platform + "&v=" + app.viewerVersion + "&l=" + app.language + "&c=" + app.viewerType + "&w=" + actions.wf), // prefix (optional; string consisting of JS code to be inserted before code inserted by this function. This code can end in an if statement, as the code inserted will always be surrounded by {}. For example, "if (typeof(xfa_installed) == "undefined" || typeof(xfa_version) == "undefined" || xfa_version < 2.0)") // The object literal elements have the following properties: // type (optional; what kind of action to take to take with user's OK: "url" to bring the user to a web page for them to choose a download, or "updater" to run the Updater to automatically download and install, default "url") // str (required; actual string to be shown in the dialog), // (note: dialog styles and methods of getting to a url will vary based on viewer type and version), // compType (optional, only used for "updater" type; string identifying Updater component type to get e.g. "App" or "Plugin" or "UDPatch", default "App"), // comp (optional, only for "updater" type; string identifying Updater component to get, default "Reader7", ask Updater team/Art Amezcua for other values). // The return value is an object with three properties, whose names are the titles the scripts (the contents of the properties) should be saved as at the doc level: // "!ADBE::0100_VersChkStrings", "!ADBE::0100_VersChkVars", and "!ADBE::0100_VersChkCode" + actions.creator. // This function generates code compliant with the spec posted in eRoom at Acrobat > Projects > 2004 > Vegas > Acrobat 7 > Engineering Specifications > Javascript > VersionCheckJS_Vegas.pdf // or <https://eroom.adobe.com/eRoomReq/Files/fid001/Acrobat/0_d088/VersionCheckJS_Vegas.pdf> function CreateViewerVersionCheck70(actions) { // fill in some unspecified parameters with defaults if (actions.prefix == null) actions.prefix = ""; if (actions.url == null) actions.url = "http://cgi.adobe.com/special/acrobat/update"; if (actions.wf == null) actions.wf = ""; if (actions.cgi == null) actions.cgi = "\"?p=\" + app.platform + \"&v=\" + app.viewerVersion + \"&l=\" + app.language + \"&c=\" + app.viewerType + \"&w=" + actions.wf + "\""; else actions.cgi += actions.wf; // check to see if we have standard version checking scripts installed on this doc // so we know if we can just insert or must integrate with existing scripts // TODO: create cases for integration below //var integrate = (typeof(ADBE) != "undefined"); //////////////////////////////////////////////////////////////////////////////// // Strings script strScript = new String(); // global variable strScript = "if (typeof(this.ADBE) == \"undefined\") this.ADBE = new Object();\n" + "ADBE.LANGUAGE = \"" + app.language + "\";\n" + "ADBE.Viewer_string_Title = \"" + actions.title + "\";\n"; var bCreateENU = ((actions.wf == "AwRE" || actions.wf == "AwoRE") && app.language != "ENU"); if(bCreateENU) { strScript += "if (app.language == ADBE.LANGUAGE)\n" + "{\n"; CreateViewerVersionCheckStringsCluster(actions, "str", true); strScript += "}\n" + "else\n" + "{\n"; CreateViewerVersionCheckStringsCluster(actions, "strenu", true); strScript += "}\n"; } else CreateViewerVersionCheckStringsCluster(actions, "str", false); //////////////////////////////////////////////////////////////////////////////// // Variables script // changed in A8 - 06/19/2006 tshiono // fix for bugs #1316816, #1316818: Need to update JavaScript and strings. // use ADBE.Reader_Need_Version and Viewer_Need_Version definitions instead of ver numbers. // var varScript = "if (typeof(ADBE.Reader_Value_Asked) == \"undefined\") ADBE.Reader_Value_Asked = false;\n" + "if (typeof(ADBE.Viewer_Value_Asked) == \"undefined\") ADBE.Viewer_Value_Asked = false;\n" + "if (typeof(ADBE.Reader_Need_Version) == \"undefined\" || ADBE.Reader_Need_Version < " + actions.r_vers + ")\n" + "{\n" + "\tADBE.Reader_Need_Version = " + actions.r_vers + ";\n" + "\tADBE.Reader_Value_New_Version_URL = \"" + actions.url + "\";\n" + "\tADBE.SYSINFO = " + actions.cgi + " + \"&r=\" + ADBE.Reader_Need_Version" + ";\n" + "}\n" + "if (typeof(ADBE.Viewer_Need_Version) == \"undefined\" || ADBE.Viewer_Need_Version < " + actions.a_vers + ")\n" + "{\n" + "\tADBE.Viewer_Need_Version = " + actions.a_vers + ";\n" + "\tADBE.Viewer_Value_New_Version_URL = \"" + actions.url + "\";\n" + "\tADBE.SYSINFO = " + actions.cgi + " + \"&r=\" + ADBE.Viewer_Need_Version" + ";\n" + "}\n"; //////////////////////////////////////////////////////////////////////////////// // Code script codeScript = new String(); // global variable codeScript = actions.prefix + "\n{\n"; var readerCase = (actions.rold != null); if (readerCase) { codeScript += "if (app.viewerType == \"Reader\")\n" + "{\n"; if (actions.rold != null) CreateViewerVersionCheckCase(actions.rold, actions.r_vers); codeScript += "}\n"; } var viewerCase = (actions.a5 != null || actions.aold != null); if (viewerCase) { if (readerCase) codeScript += "else\n"; else codeScript += "if (app.viewerType != \"Reader\")\n"; codeScript += "{\n"; if (actions.a5 != null) CreateViewerVersionCheckCase(actions.a5, actions.a_vers); if (actions.aold != null) CreateViewerVersionCheckCase(actions.aold, actions.a_vers); codeScript += "}\n"; } // end bracket around everything after prefix codeScript += "}\n"; //////////////////////////////////////////////////////////////////////////////// // Return the finished scripts with their titles in an object scriptsObj = new Object(); scriptsObj["!ADBE::0100_VersChkStrings"] = strScript; scriptsObj["!ADBE::0100_VersChkVars"] = varScript; scriptsObj["!ADBE::0200_VersChkCode" + actions.creator] = codeScript; return scriptsObj; } // codeScript should be a defined object before calling // // changed in A8 - 06/19/2006 tshiono // fix for bugs #1316816, #1316818: Need to update JavaScript and strings. // we don't call app.findComponent any longer for QE reasons and limitation of how we ship // dot releases. so that "updater" case should be not called. // function CreateViewerVersionCheckCase(action, need_vers) { codeScript += "\tif (app.viewerVersion < "; if (action.prod == "Reader") codeScript += ((need_vers == action.vern)? "ADBE.Reader_Need_Version" : action.vern) + " && !ADBE.Reader_Value_Asked)\n"; else codeScript += ((need_vers == action.vern)? "ADBE.Viewer_Need_Version" : action.vern) + " && !ADBE.Viewer_Value_Asked)\n"; codeScript += "\t{\n"; if (action.type == "url") { if (action.prod == "Reader") codeScript += "\t\tif (app.alert(" + action.strvar + ", 1, 1) == 1) this.getURL(ADBE.Reader_Value_New_Version_URL + ADBE.SYSINFO, false);\n"; else codeScript += "\t\tapp.response({cQuestion:" + action.strvar + ", cDefault:ADBE.Viewer_Value_New_Version_URL + ADBE.SYSINFO, cTitle:ADBE.Viewer_string_Title});\n"; } else if (action.type == "updater") { // fill in defaults if these params were not specified if (action.compType == null) action.compType = "App"; if (action.comp == null) action.comp = "Reader7"; codeScript += "\t\tif (app.alert(" + action.strvar + ", 1, 1) == 1) app.findComponent({cType:" + action.compType.toSource() + ", cName:" + action.comp.toSource() + ", cDesc:\"\"});\n"; } if (action.prod == "Reader") codeScript += "\t\tADBE.Reader_Value_Asked = true;\n"; else codeScript += "\t\tADBE.Viewer_Value_Asked = true;\n"; codeScript += "\t}\n"; } // strScript should be a defined object before calling // make the warning message for old Acrobat/Reader versions function CreateViewerVersionCheckString(creator, action, strlang, chtab) { if(typeof(action.strvar) == "undefined" || action.strvar == null) action.strvar = "ADBE.Viewer_" + creator + "_string_" + action.prod + "_" + action.labl; if(typeof(action[strlang]) == "undefined" || action[strlang] == null) action[strlang] = action.str; strScript += chtab + action.strvar + " = " + action[strlang].toSource() + ";\n"; } // strScript should be a defined object before calling function CreateViewerVersionCheckStringsCluster(actions, strlang, indent) { var chtab = (indent)? "\t" : ""; // For each version action property, insert its dialog string // // changed in A8 - 06/19/2006 tshiono // fix for bugs #1316816, #1316818: Need to update JavaScript and strings. // CreateViewerVersionCheckString call for dot-releases may be not used. // // changed in A9 - 10/24/2007 tshiono // fix for bug #1584711: supports A9 and makes version-checking simple. // if (actions.rold != null) CreateViewerVersionCheckString(actions.creator, actions.rold, strlang, chtab); if (actions.a5 != null) CreateViewerVersionCheckString(actions.creator, actions.a5, strlang, chtab); if (actions.aold != null) CreateViewerVersionCheckString(actions.creator, actions.aold, strlang, chtab); } function ANContinueApproval(doc) { return ANSendForApproval(doc, false, false, true, false, false); // false - this is not the start of an approval cycle // false - this is not a rejection // true to unregister the approval // false to send Mojo // false - this is not the end } function ANEndApproval(doc) { return ANSendForApproval(doc, false, false, true, true, true); // false - this is not the start of an approval cycle // false - this is not a rejection // treu to unregister approval // true to not add Mojo // false to not show CC box // false to not edit CC box // true - this is the end } function ANRejectApproval(doc) { return ANSendForApproval(doc, false, true, false, true, false); // false - this is not the start of an approval cycle // true - this is a rejection // false to not register approval locally // true to not add Mojo // false - this is the end } function ANApprovalGetStrings(mode) { var retData = new Object(); if (mode == -1) { retData.title = "Title 1"; retData.text = "First\r\nSecond\r\nThird"; retData.dest = "Destination 1"; retData.tip = "Tip 1"; retData.subj = "Subject 1"; retData.msg = "Message 1"; retData.notify = "Notification 1"; } else if (mode == 1) { retData.title = AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_INITIATE; retData.text = AnnotsString.IDS_SEND_FOR_APPROVAL_INST_INITIATE; retData.dest = AnnotsString.IDS_SEND_FOR_APPROVAL_DEST_INITIATE; retData.tip = AnnotsString.IDS_SEND_FOR_APPROVAL_TIP_INITIATE; retData.subj = AnnotsString.IDS_SEND_FOR_APPROVAL_SUBJ_INITIATE; retData.msg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_INITIATE; retData.notify = AnnotsString.IDS_SEND_FOR_APPROVAL_NOTIFY_INITIATE; } else if (mode == 2) { retData.title = AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_CONTINUE; retData.text = AnnotsString.IDS_SEND_FOR_APPROVAL_INST_CONTINUE_UB; retData.dest = AnnotsString.IDS_SEND_FOR_APPROVAL_DEST_CONTINUE; retData.tip = AnnotsString.IDS_SEND_FOR_APPROVAL_TIP_CONTINUE; retData.subj = AnnotsString.IDS_SEND_FOR_APPROVAL_SUBJ_CONTINUE; retData.msg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB; retData.notify = AnnotsString.IDS_SEND_FOR_APPROVAL_NOTIFY_CONTINUE; } else if (mode == 3) { retData.title = AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_CONTINUE; retData.text = AnnotsString.IDS_SEND_FOR_APPROVAL_INST_CONTINUE_NOUB; retData.dest = AnnotsString.IDS_SEND_FOR_APPROVAL_DEST_CONTINUE; retData.tip = AnnotsString.IDS_SEND_FOR_APPROVAL_TIP_CONTINUE; retData.subj = AnnotsString.IDS_SEND_FOR_APPROVAL_SUBJ_CONTINUE; retData.msg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB; retData.notify = AnnotsString.IDS_SEND_FOR_APPROVAL_NOTIFY_CONTINUE; } else if (mode == 4) { retData.title = AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_COMPLETE; retData.text = AnnotsString.IDS_SEND_FOR_APPROVAL_INST_COMPLETE; retData.dest = AnnotsString.IDS_SEND_FOR_APPROVAL_DEST_COMPLETE; retData.tip = AnnotsString.IDS_SEND_FOR_APPROVAL_TIP_COMPLETE; retData.subj = AnnotsString.IDS_SEND_FOR_APPROVAL_SUBJ_COMPLETE; retData.msg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_COMPLETE; retData.notify = AnnotsString.IDS_SEND_FOR_APPROVAL_NOTIFY_COMPLETE; } else if (mode == 5) { retData.title = AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_REJECT; retData.text = AnnotsString.IDS_SEND_FOR_APPROVAL_INST_REJECT; retData.dest = AnnotsString.IDS_SEND_FOR_APPROVAL_DEST_REJECT; retData.tip = AnnotsString.IDS_SEND_FOR_APPROVAL_TIP_REJECT; retData.subj = AnnotsString.IDS_SEND_FOR_APPROVAL_SUBJ_REJECT; retData.msg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_REJECT; retData.notify = AnnotsString.IDS_SEND_FOR_APPROVAL_NOTIFY_REJECT; } return retData; } function eMailValidate (emailStr) { /* The following pattern is used to check if the entered e-mail address fits the user@domain format. It also is used to separate the username from the domain. */ var emailPat=/^(.+)@(.+)$/ /* The following string represents the pattern for matching all special characters. We don't want to allow special characters in the address. These characters include ( ) < > @ , ; : \ " . [ ] */ var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" /* The following string represents the range of characters allowed in a username or domainname. It really states which chars aren't allowed. */ var validChars="\[^\\s" + specialChars + "\]" /* The following pattern applies if the "user" is a quoted string (in which case, there are no rules about which characters are allowed and which aren't; anything goes). E.g. "jiminy cricket"@disney.com is a legal e-mail address. */ var quotedUser="(\"[^\"]*\")" /* The following pattern applies for domains that are IP addresses, rather than symbolic names. E.g. joe@[123.124.233.4] is a legal e-mail address. NOTE: The square brackets are required. */ var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ /* The following string represents an atom (basically a series of non-special characters.) */ var atom=validChars + '+' /* The following string represents one word in the typical username. For example, in john.doe@somewhere.com, john and doe are words. Basically, a word is either an atom or quoted string. */ var word="(" + atom + "|" + quotedUser + ")" // The following pattern describes the structure of the user var userPat=new RegExp("^" + word + "(\\." + word + ")*$") /* The following pattern describes the structure of a normal symbolic domain, as opposed to ipDomainPat, shown above. */ var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") /* Finally, let's start trying to figure out if the supplied address is valid. */ /* Begin with the coarse pattern to simply break up user@domain into different pieces that are easy to analyze. */ var matchArray=emailStr.match(emailPat) if (matchArray==null) { /* Too many/few @'s or something; basically, this address doesn't even fit the general mould of a valid e-mail address. */ return false } var user=matchArray[1] var domain=matchArray[2] // See if "user" is valid if (user.match(userPat)==null) { // The username doesn't seem to be valid return false } /* if the e-mail address is at an IP address (as opposed to a symbolic host name) make sure the IP address is valid. */ var IPArray=domain.match(ipDomainPat) if (IPArray!=null) { // this is an IP address for (var i=1;i<=4;i++) { if (IPArray[i]>255) { // Destination IP address is invalid return false } } return true } // Domain is symbolic name var domainArray=domain.match(domainPat) if (domainArray==null) { //The domain name doesn't seem to be valid return false } /* domain name seems valid, but now make sure that it ends in a three-letter word (like com, edu, gov) or a two-letter word, representing country (uk, nl), and that there's a hostname preceding the domain or country. */ /* Now we need to break up the domain to get a count of how many atoms it consists of. */ var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) var len=domArr.length if (domArr[domArr.length-1].length<2) { // the address must end in a two or more letter word. return false } // Make sure there's a host name preceding the domain. if (len<2) { //"This address is missing a hostname!" return false } // If we've gotten this far, everything's valid! return true; } DoIdentityDialog = app.trustedFunction(function(dialogText, warningMessage, warningTitle, bDemandEmail, bDemandName) { var eaddr; var iname; var bStatus; do { bStatus = Collab.getIdentity(false, dialogText); if ( bStatus ) { bStatus = 0; // assume we don't need to go back around if (bDemandEmail) { app.beginPriv(); eaddr = identity.email; app.endPriv(); if(eaddr != null && !eMailValidate(eaddr)) { app.beginPriv(); app.alert({cMsg: warningMessage, cTitle: warningTitle, nIcon: 1}); app.endPriv(); bStatus = 1; // guess not - go back around } } if (bDemandName) { app.beginPriv(); iname = identity.name; app.endPriv(); if (iname != null) { app.beginPriv(); app.alert({cMsg: warningMessage, cTitle: warningTitle, nIcon: 1}); app.endPriv(); bStatus = 1; // guess not - go back around } } } else return 0; // cancelled } while( bStatus ) }); ANStartApproval = app.trustedFunction(function(doc) { //console.println("collab (1)"); var bNoMojo = false; var e; var go = true; var data = {}; if(doc && doc.path) { data.docPath = doc.path; if(doc.path.match(/^http/)) data.docFS = fileSystem.WebDAV; // XXX get this from the doc itself } app.beginPriv(); var eaddr = identity.email; app.endPriv(); if(!eaddr) { DoIdentityDialog(AnnotsString.IDS_APPROVAL_IDENTITY_SETUP_TEXT, AnnotsString.IDS_EMAIL_INVALID, AnnotsString.IDS_SEND_FOR_APPROVAL_TITLE_NONAME, true, false); //Fix for defect # 1051979. If UserInfo is prompted, Approval doesn't show up. app.beginPriv(); eaddr = identity.email; app.endPriv(); } if (!eaddr) { // XXX Do we bail out here or just not show the CC me check box? // XXX for now, force return email. return 0; } var startStep = 0; while(go) { data.raddr = eaddr; data.initiatorEmail = true; data.readerEnable = (app.viewerType.match('Exchange-Pro') != null); CBRunEmailApprovalWizard(data, startStep, true, data.readerEnable, data.readerEnable); // bShowInitiatorEmail, bShowReaderEnable, bCanReaderEnable doc = data.doc; startStep = 1; if(data.result == "fnsh") { var to = data.addrs; var startDate = new Date(); var from = data.raddr; // changed in A8 - 04/27/2006 tshiono // use bcc field to handle the initiator address instead of cc field. // // changed in A8 - 05/17/2006 tshiono // because initiatorEmail flag can handle if approvers send the initiator // a notification mail to inform him/her of the approval status, always set // the initiator address to bcc. // //var bcc = ""; // //if (data.initiatorEmail) // bcc = from; // var bcc = from; var resultDoSend = ANDoSend(doc,doc.docID[0],from,to,0,"",bcc,data.subj,data.msg,data.readerEnable,false,true,bNoMojo,null,data.initiatorEmail); // false for no UI true for Approval bNoMojo if(!resultDoSend.raised && resultDoSend.submitFormResult) { var docName = doc.documentFileName; app.beginPriv(); //console.println("send message (1)"); Collab.alertWithHelp( AnnotsString.IDS_APPROVAL_CONFIRM_MSG.replace(/%docname%/, docName), "", AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE.replace(/%docname%/, docName), "Annots:SendForApprovalConfirm"); app.endPriv(); if(doc.hidden) doc.closeDoc(true); return 1; // success } } else go = false; } if(doc && doc.hidden) doc.closeDoc(true); return 0; // cancelled }) // end ANStartApproval ANSendForApproval = app.trustedFunction(function(doc, bInitiating, bRejection, bUnregister, bNoMojo, bIsEnd) { //console.println("collab (2)"); // XXX - when using CBRunApproveDialog only bUnregister is used. // If we stick with CBRunApproveDialog get rid of all the other params // and probably bUnregister as well since we always want to unregister var e; var docName = doc.documentFileName; var go = true; var bSentEmail = false; var data = {}; if(doc && doc.path) { data.docPath = doc.path; if(doc.path.match(/^http/)) data.docFS = fileSystem.WebDAV; // XXX get this from the doc itself } while(go) { // prepopulate data.ccaddr here app.beginPriv(); var ccoriginal = Collab.getCCaddr(doc); var initiatorEmailOriginal = Collab.hasInitiatorEmailRequest(doc); app.endPriv(); // preserve original email state to pass it (as is) to the next approver data.initiatorEmail = initiatorEmailOriginal; // changed in A8 - 04/13/2006 tshiono // operate cc field with the same handling as cc: of mail application // add a check box to notify initiator of the approval status. // var bShowInitiatorEmail; if ((typeof ccoriginal != "undefined") && (ccoriginal.length > 0)) bShowInitiatorEmail = true; else bShowInitiatorEmail = false; if(bIsEnd) { app.beginPriv(); data.finalApprovalEmail = Collab.finalApprovalEmailEnabled(); app.endPriv(); } var stringList = {}; if (bRejection) stringList = ANApprovalGetStrings(5); // 5 is reject else if (bIsEnd) stringList = ANApprovalGetStrings(4); // 4 is end else { // XXX - work around for appRightsValidate // set to true to work around // set to false for shipping behavior if (false) { stringList = ANApprovalGetStrings(2); // 2 is continue strings for UB'd doc } else { // changed in A9 - 10/26/2007 thiono // because appRightsValidate hasn't worked since A8, changed the way of ubiquity checking // check if the doc contains UR dictionary and it has annots creation caps, or not // // get the ubiquity rights. why a 2 and not an enum? don't ask. var bUBAnnots = false; // try // { // var ubSignInfo = doc.appRightsValidate({}, 2); // var annotRights = ubSignInfo.appRightsAnnots; // // for (i in annotRights) { // if (annotRights[i] == "Create") // bUBAnnots = true; // } // } // catch(e) {} // app.beginPriv(); bUBAnnots = Collab.isUbiquitized(doc); app.endPriv(); if (bUBAnnots) stringList = ANApprovalGetStrings(2); // 2 is continue strings for UB'd doc else stringList = ANApprovalGetStrings(3); // 3 is continue strings for non-UB'd doc } } CBRunApproveDialog(stringList.title.replace(/%docname%/, docName), stringList.text.replace(/%docname%/, docName), stringList.dest.replace(/%docname%/, docName), stringList.tip.replace(/%docname%/, docName), stringList.subj.replace(/%docname%/, docName), stringList.msg.replace(/%docname%/, docName), docName, true, // whether address is editable data, bShowInitiatorEmail, // true if we have ccoriginal bIsEnd); // true if it is the final approval app.beginPriv(); doc = app.openDoc({ cPath: data.docPath, bHidden: true, bUseConv: true }); app.endPriv(); var resultDoSend; if(data.result == "myok") { try { app.beginPriv(); // save final approval method. if(bIsEnd) Collab.enableFinalApprovalEmail(data.finalApprovalEmail); // Set that a workflow has started Collab.inEmailWorkflow = true; app.endPriv(); //console.println("Calling dosend"); var checkCC = data.ccaddr.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g'),""); if (checkCC.length == 0) data.ccaddr = ""; var docScriptName = "___ADBERMAIS___"; // call with ccoriginal, this is the "CC Me" by the approval initiator // changed in A8 - 04/27/2006 tshiono // call with ccaddr, this is the same cc handling as general mailer application. // use bcc field to handle initiator address instead of cc field. // if(!bIsEnd || (bIsEnd && data.finalApprovalEmail)) { // changed in A9 - 10/19/2007 tshiono // remove ADBERMAIS script when only rejecting or finally completing. if(bRejection || bIsEnd) { // try to remove the script that triggers Approval workflow functions. app.beginPriv(); Collab.removeApprovalDocScript(doc, docScriptName); app.endPriv(); } resultDoSend = ANDoSend(doc,doc.docID[0],"",data.addr,0,data.ccaddr,ccoriginal,data.subj,data.msg,false,false,true,true,null,initiatorEmailOriginal); // false for no ubiquitizing false for no UI true for Approval bNoBean //console.println("send original to " + data.addr); if(resultDoSend.raised || !resultDoSend.submitFormResult) { // Set that the workflow has ended app.beginPriv(); Collab.inEmailWorkflow = false; app.endPriv(); return 0; } bSentEmail = true; } // check CC address and if there is one, send the CC (no bean) // changed in A8 - 04/27/2006 tshiono // check ccoriginal address and if there is one, send the ccoriginal (no bean) // //if ((typeof data.ccaddr != "undefined") && (data.ccaddr.length > 0)) if (data.initiatorEmail && (typeof ccoriginal != "undefined") && (ccoriginal.length > 0)) { // make subject string of the notification mail. var subjNotify = (bRejection || bIsEnd)? stringList.subj.replace(/%docname%/, docName) : AnnotsString.IDS_APPROVAL_NOTIFY_SUBJ.replace(/%docname%/, docName); // make content of the notification mail. var msgNotify = (bIsEnd && !data.finalApprovalEmail)? AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_COMPLETE.replace(/%docname%/, docName) : stringList.notify.replace(/%docname%/, docName); msgNotify = msgNotify.replace(/%receiver%/, data.addr); // changed in A9 - 10/19/2007 tshiono // try to remove the script that triggers Approval workflow functions. // try to prepare sending a mail that notifies the initiator of approval status. // make all annotations read-only temporarily before sending the notification mail. app.beginPriv(); Collab.removeApprovalDocScript(doc, docScriptName); Collab.beginInitiatorMailOperation(doc); app.endPriv(); // call with actual ccoriginal that came from Collab.getCCaddr // changed in A8 - 06/03/2006 tshiono // don't add any scripts into doc if this case is the final approval, and // all annotations in the doc are already set with read-only before calling // this method. // resultDoSend = ANDoSend(doc,doc.docID[0],"",ccoriginal,0,"","",subjNotify,msgNotify,false,false,true,true,null,false); // false to not ubiquitize false for no UI true for Approval true to not send bean //console.println("sending notification to " + ccoriginal); // changed in A9 - 10/19/2007 tshiono // try to conclude sending a mail that notifies the initiator of approval status. // revert read-only annotations to the previous state. app.beginPriv(); Collab.endInitiatorMailOperation(doc); app.endPriv(); if(resultDoSend.raised || !resultDoSend.submitFormResult) { // Set that the workflow has ended app.beginPriv(); Collab.inEmailWorkflow = false; app.endPriv(); return 0; } bSentEmail = true; } //console.println("doc was sent"); if (bUnregister) Collab.unregisterApproval(doc); if(bSentEmail) { app.beginPriv(); //console.println("send message (2)"); Collab.alertWithHelp( AnnotsString.IDS_APPROVAL_CONFIRM_MSG.replace(/%docname%/, docName), "", AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE.replace(/%docname%/, docName), "Annots:SendForApprovalConfirm"); app.endPriv(); } // Set that the workflow has ended app.beginPriv(); Collab.inEmailWorkflow = false; app.endPriv(); return 1; // success } catch(e) { app.beginPriv(); Collab.inEmailWorkflow = false; app.endPriv(); } } else { //console.println("doc was NOT sent"); go = false; } } return 0; }) // end ANSendForApproval ANSendForBrowserReview = app.trustedFunction(function(doc) { var err; app.beginPriv(); if(doc) app.execMenuItem("Annots:BrowserBasedReview", doc); else app.execMenuItem("Annots:BrowserBasedReview"); app.endPriv() if(err) DebugThrow (err); }) // Send the current document out for review ANSendForReview = app.trustedFunction(function(doc, bUpdate) { if(bUpdate == undefined) bUpdate = false; var data = {}; if(doc && doc.path) { data.docPath = doc.path; if(doc.path.match(/^http/)) data.docFS = fileSystem.WebDAV; // XXX get this from the doc itself } if(doc && Collab.isDocDirty(doc)) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SEND_FOR_EMAIL_REVIEW_DOC_DIRTY, oDoc: doc}); app.endPriv(); return 0; } var go = true; var startStep = 0; // check for return address. Gotta have somewhere to send comments back to. app.beginPriv(); var eaddr = identity.email; app.endPriv(); if(!eaddr) { DoIdentityDialog(AnnotsString.IDS_REVIEW_IDENTITY_SETUP_TEXT, AnnotsString.IDS_EMAIL_INVALID, AnnotsString.IDS_SEND_FOR_REVIEW_TITLE_NONAME, true, false); app.beginPriv(); eaddr = identity.email; app.endPriv(); } if (!eaddr) return 0; while(go) { CBRunEmailReviewWizard(data, startStep); doc = data.doc; startStep = 1; if(data.result == "fnsh") { var to = data.addrs.join(";"); var startDate = new Date(); var from = data.raddr; // reuse the proxy ID if there already is one var proxyID; var alreadyReviewing = false; var canProxy = Collab.canProxy(doc); try { if(Collab.isEmailReview(doc)) { // getProxy will throw if no review // and return undefined if there's a proxyless review proxyID = Collab.getProxy(doc); alreadyReviewing = true; } } catch(e) {} var docID; // already a proxy? reuse it if(proxyID) docID = proxyID; else // no proxy yet? if this is already a review (we're creating a subreview) // then use the existing doc ID, else create a new one docID = (alreadyReviewing || !canProxy) ? doc.docID[0] : Collab.createUniqueDocID(); var resultDoSend = ANDoSend(doc,docID,from,to,0,"","",data.subj,data.msg,data.readerEnable,false,false,false,data.toolbars); // false for no UI false for Review false to add mojo if(!resultDoSend.raised && resultDoSend.submitFormResult) { // don't register twice (might be an informal sub review) if(!alreadyReviewing || bUpdate == true) { //console.println("collab (3.1)"); Collab.registerReview({ doc: doc, initiator: null, initScript: "", invitees: to, cc: "", bcc: "", sentDate: startDate, toolbars: data.toolbars }); //console.println("collab (3.2)"); if(canProxy) Collab.registerProxy(doc, docID); //console.println("collab (3.3)"); } var docName = doc.documentFileName; app.beginPriv(); //console.println("send message (3)"); Collab.alertWithHelp( AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_MSG.replace(/%docname%/, docName), "", AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE.replace(/%docname%/, docName), "Annots:SendForReviewConfirm"); app.endPriv(); if(doc.hidden) { doc.closeDoc(true); // XXX - not sure if I want to do this Collab.bringToFront(); } else { // XXX - not sure if I want to do this Collab.bringToFront(doc); } //bring app to front in case email program came up return 1; // success } } else go = false; } if(doc && doc.hidden) doc.closeDoc(true); return 0; // cancelled }) ANSendCommentsToAuthor = app.trustedFunction(function (doc) { //console.println("collab (4)"); var keepTrying = true; var result; var e; if (Collab.isEmailReview(doc) && ANVerifyComments(doc, AnnotsString.IDS_SEND_COMMENTS_NO_COMMENTS)) { var docName = doc.documentFileName; var go = true; // send w/ proxy ID if there is one var permID = Collab.getProxy(doc); app.beginPriv(); var data = { addr: permID ? doc.Collab.reviewersEmail : doc.Collab.initiatorEmail }; app.endPriv(); // otherwise, just use our ID if(!permID) permID = doc.docID[0]; var bAsPDF = true; app.beginPriv(); var maxPDFCommentsSize = Collab.maxPDFCommentsSize; app.endPriv(); // check if the file size is ok if(doc.filesize > (1024 * 1024 * maxPDFCommentsSize)) { app.beginPriv(); var result = app.alert(AnnotsString.IDS_SEND_COMMENTS_DOC_IS_LARGE.replace(/%mb%/, maxPDFCommentsSize), 2, 3, AnnotsString.IDS_SEND_COMMENTS_DOC_IS_LARGE_TITLE); app.endPriv(); if(result == 3) bAsPDF = false; else if(result == 2) go = false; } while(go) { CBRunReturnResponseDialog(AnnotsString.IDS_SEND_COMMENTS_TO_AUTHOR_TITLE.replace(/%docname%/, docName), AnnotsString.IDS_SEND_COMMENTS_TO_AUTHOR_INST, AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TIP, AnnotsString.IDS_SEND_COMMENTS_TO_AUTHOR_SUBJ, AnnotsString.IDS_SEND_COMMENTS_TO_AUTHOR_MSG, docName, true, data); if(data.result == "ok") { var url = "mailto:" + escape(data.addr) + "?subject=" + escape(data.subj) + "&body=" + escape(data.msg) + "&ui=false"; try { app.beginPriv(); var didSubmitForm = doc.submitForm({ aFields: [], bAnnotations: true, bInclNMKey: true, cURL: url, bPDF: bAsPDF, bFDF: !bAsPDF, cPermID: permID, bExclFKey: true, bCheckReqdFields: false }); app.endPriv(); if(didSubmitForm) { go = false; Collab.setReviewRespondedDate(doc, new Date()); app.beginPriv(); //console.println("send message (4)"); Collab.alertWithHelp( AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_MSG.replace(/%docname%/, docName), "", AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE.replace(/%docname%/, docName), "Annots:SendForReviewConfirm"); app.endPriv(); } } catch(e) { app.beginPriv(); app.alert({cMsg: e["message"], oDoc: doc}); app.endPriv(); } } else go = false; } return; } }); ANSendApprovalToAuthorEnabled = app.trustedFunction(function(doc) { app.beginPriv(); var hasAddr = doc.Collab.initiatorEmail; app.endPriv(); return (event.rc = doc && hasAddr && (doc.requestPermission(permission.annot, permission.canExport) == permission.granted) && (doc.requestPermission(permission.annot, permission.modify) == permission.granted)); }); ANProxyAuthenticateResource = app.trustedFunction(function(bCanStore, bStore, cTitle, cStr) { var auth = new Object; auth.result = new Object; auth.result.response = false; auth.initialize = function(dialog) { dialog.enable({keyc: bCanStore}); dialog.load({keyc: bCanStore ? bStore : false}); }; auth.commit = function(dialog) { var values = dialog.store(); this.result.Username = values.usrn; this.result.Password = values.pass; this.result.SaveCredential = values.keyc; this.result.response = true; }; auth.description = { name: cTitle, elements: [ { type: "view", align: "align_center", elements: [ { type: "static_text", align: "align_left", name: cStr, wrap_name: true, width: 280 }, { type: "view", align_children: "align_fill", elements: [ { type: "view", align: "align_center", align_children: "align_row", elements: [ { type: "static_text", name: AnnotsString.IDS_SYNC_AUTHENTICATE_USERNAME }, { type: "edit_text", item_id: "usrn", char_width: 20 } ] }, { type: "view", align: "align_center", align_children: "align_row", elements: [ { type: "static_text", name: AnnotsString.IDS_SYNC_AUTHENTICATE_PASSWORD }, { type: "edit_text", item_id: "pass", char_width: 20, password: true } ] } ] }, { item_id: "keyc", type: "check_box", align: "align_left", name: AnnotsString.IDS_SYNC_AUTHENTICATE_SAVECRED }, { type: "ok_cancel" } ] } ] }; app.beginPriv(); app.execDialog(auth); app.endPriv(); return auth.result; }); ANAuthenticateResource = app.trustedFunction(function(bCanStore, bStore, cServer, cRealm, bShowWarning) { var auth = new Object; auth.result = new Object; auth.result.response = false; // restrict length if(cServer==undefined || cServer.length>512) { return auth.result; } if(cRealm==undefined || cRealm.length>512) { return auth.result; } auth.initialize = function(dialog) { dialog.enable({keyc: bCanStore}); dialog.load({keyc: bCanStore ? bStore : false}); dialog.visible({warn: bShowWarning}); }; auth.commit = function(dialog) { var values = dialog.store(); this.result.Username = values.usrn; this.result.Password = values.pass; this.result.SaveCredential = values.keyc; this.result.response = true; }; auth.description = { name: AnnotsString.IDS_SYNC_AUTHENTICATE_TITLE, elements: [ { type: "view", align: "align_center", elements: [ { type: "static_text", align: "align_left", item_id: "warn", name: AnnotsString.IDS_SYNC_AUTHENTICATE_WARNING_BASIC_NON_SSL }, { type: "cluster", name: AnnotsString.IDS_SYNC_AUTHENTICATE_CAPTION, align: "align_center", elements: [ { type: "static_text", align: "align_left", name: cServer, }, { type: "static_text", align: "align_left", name: cRealm, }, { type: "view", align_children: "align_fill", elements: [ { type: "view", align: "align_center", align_children: "align_row", elements: [ { type: "static_text", name: AnnotsString.IDS_SYNC_AUTHENTICATE_USERNAME }, { type: "edit_text", item_id: "usrn", char_width: 20 } ] }, { type: "view", align: "align_center", align_children: "align_row", elements: [ { type: "static_text", name: AnnotsString.IDS_SYNC_AUTHENTICATE_PASSWORD }, { type: "edit_text", item_id: "pass", char_width: 20, password: true } ] } ] }, { item_id: "keyc", type: "check_box", align: "align_left", name: AnnotsString.IDS_SYNC_AUTHENTICATE_SAVECRED } ] }, { type: "ok_cancel" } ] } ] }; app.beginPriv(); app.execDialog(auth); app.endPriv(); return auth.result; }); TestHSShare = function(url, users, limitedAccess) { result = false; console.println("\nTesting Hosted Services Share API..."); swConn = Collab.swConnect(); if (swConn) { result = swConn.shareFile(url, users, limitedAccess); if (result == 0) console.println("Share file API succeeded"); else console.println("*** Share file API failed"); swConn.disconnect(); } else console.println("\nERROR: Unable to establish connection with Acrobat.com"); return result; }; function ANMatchString (searchStr, matchStr) { return searchStr.match(matchStr); }; function ANMatchStringCaseInsensitive (searchStr, matchStr) { var matchStrRegExp = new RegExp(matchStr, "i"); return searchStr.match(matchStrRegExp); }; ANShareFile2 = app.trustedFunction(function(cPath) { var shareDlg = new Object; shareDlg.initialize = function(dialog) { this.result = new Object; this.result.response = false; var toLoad = {path: cPath}; dialog.load(toLoad); }; shareDlg.commit = function(dialog) { var values = dialog.store(); app.beginPriv(); this.result.path = Collab.convertPlatformPathToDIPath(values.path); app.endPriv(); this.result.Invite = values.invt; this.result.Message = values.mesg; this.result.response = true; }; shareDlg.brws = function(dialog) { app.beginPriv(); var p = app.browseForDoc(); app.endPriv(); if (p) { // dialog.description.path = p.cPath; // this.data.docFS = p.cFS; app.beginPriv(); var platPath = Collab.convertDIPathToPlatformPath(p.cPath); app.endPriv(); var toLoad = {path: platPath}; dialog.load(toLoad); } }; shareDlg.description = { name: "Share a File", elements: [ { type: "view", align_children: "align_left", elements: [ { type: "static_text", name: "Select a file to share:", width: 300, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", item_id: "path", alignment: "align_fill", }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws", }, ] }, { type: "static_text", name: "Send email to:", font: "dialog", bold: true, }, { type: "edit_text", multiline: true, height: { prod: [ 2, { edit_text_height: [] } ] }, item_id: "invt", alignment: "align_fill" }, { type: "static_text", name: "Message:", font: "dialog", bold: true, }, { type: "edit_text", multiline: true, height: { prod: [ 4, { edit_text_height: [] } ] }, item_id: "mesg", alignment: "align_fill" }, { type: "ok_cancel" } ] } ] }; app.beginPriv(); app.execDialog(ANTrustPropagateAll(shareDlg)); app.endPriv(); return shareDlg.result; }); function ANDefaultInvite(doc, bUpdate, decodedURL) { if(!doc.external) return ANSendForReview(doc, bUpdate); return CBBBRInvite(doc, decodedURL); // go to phase 2 of the BBR invite stuff }; function CBdef(a, b) { return typeof a == "undefined" ? b : a; } function Matrix2D(a, b, c, d, h, v) { this.a = CBdef(a, 1); this.b = CBdef(b, 0); this.c = CBdef(c, 0); this.d = CBdef(d, 1); this.h = CBdef(h, 0); this.v = CBdef(v, 0); this.fromRotated = function(doc, page) { page = CBdef(page, 0); var cropBox = doc.getPageBox("Crop", page); var mediaBox = doc.getPageBox("Media", page); var mbHeight = mediaBox[1] - mediaBox[3]; var mbWidth = mediaBox[2] - mediaBox[0]; var rotation = doc.getPageRotation(page); var m = new Matrix2D(1, 0, 0, 1, cropBox[0] - mediaBox[0], cropBox[3] - mediaBox[3]); if(rotation == 90) return this.concat(m.rotate(Math.asin(1.0)).translate(mbHeight, 0)); else if(rotation == 180) return this.concat(m.rotate(2.0 * -Math.asin(1.0)).translate(mbWidth, mbHeight)); else if(rotation == 270) return this.concat(m.rotate(-Math.asin(1.0)).translate(0, mbWidth)); return this.concat(m); } this.transform = function(pts) { var result = new Array(pts.length); if(typeof pts[0] == "object") for(var n = 0; n < pts.length; n++) result[n] = this.transform(pts[n]); else for(var n = 0; n + 1 < pts.length; n += 2) { result[n] = this.a * pts[n] + this.c * pts[n + 1] + this.h; result[n + 1] = this.b * pts[n] + this.d * pts[n + 1] + this.v; } return result; } this.concat = function(m) { return new Matrix2D( (this.a * m.a) + (this.b * m.c), (this.a * m.b) + (this.b * m.d), (this.c * m.a) + (this.d * m.c), (this.c * m.b) + (this.d * m.d), (this.h * m.a) + (this.v * m.c) + m.h, (this.h * m.b) + (this.v * m.d) + m.v); } this.invert = function() { var result = new Matrix2D; var q = this.b * this.c - this.a * this.d; if (q) { result.a = - this.d / q; result.b = this.b / q; result.c = this.c / q; result.d = - this.a / q; result.h = -(this.h * result.a + this.v * result.c); result.v = -(this.h * result.b + this.v * result.d); } return result; } this.translate = function(dx, dy) { return this.concat(new Matrix2D(1, 0, 0, 1, CBdef(dx, 0), CBdef(dy, 0))); } this.scale = function(sx, sy) { return this.concat(new Matrix2D(CBdef(sx, 1), 0, 0, CBdef(sy, 1), 0, 0)); } this.rotate = function(t) { t = CBdef(t, 0); return this.concat(new Matrix2D(Math.cos(t), Math.sin(t), -Math.sin(t), Math.cos(t), 0, 0)); } } function hasHanko() { return (app.language == "JPN") || (app.language == "KOR") || (app.language == "CHS") || (app.language == "CHT"); } SetHTTPMethods = app.trustedFunction(function() { if(typeof Net.HTTP != "undefined") { Net.HTTP.DocCtr = ANTrustPropagateAll( { CreateWorkspace: function(cURL) { var params = { cVerb: "PROPFIND", cURL: cURL, oHandler: ANTrustPropagateAll( { // oNotify: oDidHappen, response: function(msg, uri, e) { // HTTP 405 - Can't MKCOL if it exists! // if(e != undefined && e.error != 405) // this.oNotify.onError(e); // else this.oNotify.onCreateCollection(200); console.println("Received response:"); console.println(msg); } }) } app.beginPriv(); console.println("sending PROPFIND request"); Net.HTTP.request(params); app.endPriv(); }, }); Net.HTTP.WebDAV = ANTrustPropagateAll( { CreateCollection: function(cURL, oDidHappen, oAuth) { var params = { cVerb: "MKCOL", cURL: cURL, oHandler: ANTrustPropagateAll( { oNotify: oDidHappen, response: function(msg, uri, e) { // HTTP 405 - Can't MKCOL if it exists! if(e != undefined && e.error != 405) this.oNotify.onError(e); else this.oNotify.onCreateCollection(200); } }), oAuthenticate: oAuth } app.beginPriv(); //console.println("sending MKCOL request"); Net.HTTP.request(params); app.endPriv(); }, PutFile: function(cURL, oData, oDidHappen, oAuth) { var params = { cVerb: "PUT", cURL: cURL, oRequest: oData, oHandler: ANTrustPropagateAll( { oNotify: oDidHappen, response: function(msg, uri, e) { if(e != undefined) this.oNotify.onError(e); else this.oNotify.onPutFile(200); } }), oAuthenticate: oAuth } app.beginPriv(); Net.HTTP.request(params); app.endPriv(); }, DeleteFile: function(cURL, oDidHappen, oAuth) { var params = { cVerb: "DELETE", cURL: cURL, oHandler: ANTrustPropagateAll( { oNotify: oDidHappen, response: function(msg, uri, e) { if(e != undefined) this.oNotify.onError(e); else this.oNotify.onDeleteFile(200); } }), oAuthenticate: oAuth } app.beginPriv(); Net.HTTP.request(params); app.endPriv(); }, EnumerateCollection: function(cURL, oEnumerator, oAuth) { var params = { cVerb: "PROPFIND", cURL: cURL, oHandler: ANTrustPropagateAll( { oBaseURL: util.crackURL(cURL), enumerator: oEnumerator, response: function(response, uri, e) { try { if(e != undefined) { this.enumerator.onError(e); } else { var string = SOAP.stringFromStream(response); var xmlDeclMatcher = /^<\?xml version[^>]+?>/; string = string.replace(xmlDeclMatcher ,'') string = string.replace(/\n/g ,'') var msg = XML(string); var ns = new Namespace("DAV:"); var responses = msg..ns::response; if(this.enumerator.onEnumerateBegin != undefined) this.enumerator.onEnumerateBegin(); for(var i in responses) { var resp = responses[i]; var prop = responses[i].ns::propstat.ns::prop; var resource = {}; // ensure that the resource URL begins with the base URL var href = resp.ns::href; if(href.charAt(0) == '/') { with(this.oBaseURL) { // Relative to base href resource.url = cScheme; resource.url += "://"; if(nURLType == IPV6Type) resource.url += "[" + cHost + "]"; else resource.url += cHost; if(nPort != undefined) resource.url += ":" + nPort; resource.url += href; } } else { // Absolute if(this.oBaseURL.nURLType == IPV6Type) resource.url = cURL; else resource.url = href.toString(); } resource.displayName = prop.ns::displayname; resource.lastModified = prop.ns::getlastmodified; resource.contentLength = prop.ns::getcontentlength; resource.contentType = prop.ns::getcontenttype; resource.etag = prop.ns::getetag; resource.type = prop.ns::resourcetype; if(resource.type.ns::collection != undefined) { if(this.enumerator.onEnumerateCollection != undefined) this.enumerator.onEnumerateCollection(resource); } else this.enumerator.onEnumerateFile(resource); } if(this.enumerator.onEnumerateEnd != undefined) this.enumerator.onEnumerateEnd(); } }catch(e) { this.enumerator.onError(e); } } }), oAuthenticate: oAuth, aHeaders: [ { name: "Depth", value: "1" } ] }; app.beginPriv(); Net.HTTP.request(params); app.endPriv(); } }); Net.HTTP.runTaskSet = app.trustedFunction(function(taskSet) { var oTaskDialog = { // Properties oTaskSet: taskSet, oDialog: null, nCurrentTask: 0, bResult: false, // Methods getCurrentTask: function() { return this.oTaskSet.aTasks[this.nCurrentTask]; }, runCurrentTask: function() { try { this.setTaskProgress(0); this.getCurrentTask().runTask(this, this.oTaskSet); this.setTaskProgress(100); } catch(e) { console.println(e); console.println(e.stack); } }, handleSuccess: function() { this.getCurrentTask().onSuccess(this, this.oTaskSet); this.nCurrentTask++; if(this.nCurrentTask >= this.oTaskSet.aTasks.length) { // Complete this.bResult = true; this.oDialog.load({ cncl: AnnotsString.IDS_DONE }); } else this.runCurrentTask(); }, handleFailure: function(e) { if(e != undefined && e.text != undefined) this.setTaskStatus(e.text); this.getCurrentTask().onFailure(this, this.oTaskSet); }, initialize: function(dialog) { this.oDialog = dialog; this.runCurrentTask(); }, setTaskStatus: function(status) { this.oDialog.load({ desc: status }); }, setTaskProgress: function(nPercent) { var nSegLen = 100 / this.oTaskSet.aTasks.length; var nComplete = (this.nCurrentTask + (nPercent/100)); this.oDialog.load({ prog: nComplete * nSegLen }); }, cncl: function(dialog) { dialog.end("cncl"); }, // Dialog Description description: { name: taskSet.cTitle, elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "cluster", item_id: "task", name: taskSet.cTitle, elements: [ { type: "view", align_children: "align_row", elements: [ { type: "progress_bar", width: 300, height: 20, item_id: "prog", }, { type: "button", item_id: "cncl", name: AnnotsString.IDS_CANCEL } ] }, { type: "static_text", alignment: "align_fill", item_id: "desc", name: "<STATUS>", } ] } ] } ] } }; app.beginPriv(); app.execDialog(oTaskDialog); app.endPriv(); return oTaskDialog.bResult; }); // runTaskSet } }); SetRSSMethods = app.trustedFunction(function() { if(typeof RSS != "undefined") { // RSS Namespace var rmaNS = "http://ns.adobe.com/Acrobat/RSS/Reviews/"; var inboxNS = "http://ns.adobe.com/Acrobat/RSS/Inbox/"; var rtNS = "urn://ns.adobe.com/Acrobat/ReviewTracker/"; var wrkflwNS = "http://ns.adobe.com/Acrobat/RSS/Workflows/"; //HREFs and URLs var cReviewsIveSentURL = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/MyReviews.rss"; var cReviewsIveSentFeedLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cReviewsIveSentURL; var cReviewsIveReceivedURL = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ParticipantReviews.rss"; var cReviewsIveReceivedFeedLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cReviewsIveReceivedURL; var cReviewsSuperGroupURL = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ReviewsSuperGroup.rss"; var cReviewsSuperGroupLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cReviewsSuperGroupURL; var cReviewsOfflineURL = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/OfflineReviews.rss"; var cReviewsOfflineFeedLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cReviewsOfflineURL; var cServersURL = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ReviewServers.rss"; var cServersFeedLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cServersURL; var cServerItemLink = "acrobat:Inbox?container=" + rtNS + "&selectFeed=" + cServersURL;//append a # and the Server Item Guid to this link to get the Item Link // RSS Extensions var rmaMethod = rmaNS + ":method"; var rmaDocID = rmaNS + ":docID"; var rmaDocTitle = rmaNS + ":docTitle"; var rmaDocLink = rmaNS + ":docLink"; var rmaTo = rmaNS + ":to"; var rmaCc = rmaNS + ":cc"; var rmaBcc = rmaNS + ":bcc"; var rmaIsOffline = rmaNS + ":isOffline"; var rmaIsInitiated = rmaNS + ":isInitiated"; var rmaIsOnline = rmaNS + ":isOnline"; var rmaLastSync = rmaNS + ":lastSync"; var rmaLatestVersion = rmaNS + ":latestVersion"; var rmaRemoteURL = rmaNS + ":remoteURL"; var rmaLocation = rmaNS + ":location"; var rmaLocationPathType = rmaNS + ":locationPathType"; var rmaFolder = rmaNS + ":folder"; var rmaServers = rmaNS + ":serverReviews"; var rmaHasConnected = rmaNS + ":hasConnected"; var rmaConnectionStatus = rmaNS + ":connectionStatus"; var rmaWorkspace = rmaNS + ":workspace"; var inboxHidden = inboxNS + ":hidden"; //RSS extensions for Workflows var wrkflwID = wrkflwNS + ":docID"; var wrkflwDocTitle = wrkflwNS + ":docTitle"; var wrkflwDocLink = wrkflwNS + ":docLink"; var wrkflwDeleteLink = wrkflwNS + ":deleteLink"; var wrkflwType = wrkflwNS + ":type"; var wrkflwHasError = wrkflwNS + ":hasError"; var wrkflwServerWorkflows = wrkflwNS + ":serverWorkflows"; var serverErrors = wrkflwNS + ":serverErrors"; //Shared Review workflow states var REVIEW_STATE_ACTIVE = "Active"; var REVIEW_STATE_ENDED = "Ended"; var REVIEW_STATE_SUSPENDED = "Suspended"; var REVIEW_STATE_CORRUPTED = "Corrupted"; //Event Logging Category and Subcategory constants var EVENT_LOGGING_CATEGORY_TRACKER = "Tracker"; var EVENT_LOGGING_SUBCATEGORY_REVIEWS = "Reviews"; var LogAVUMEvent = app.trustedFunction(function(category, subcategory, eventName) { var logEventParams = {}; logEventParams.cat = category; logEventParams.subcat = subcategory; logEventParams.evnt = eventName; app.beginPriv(); Collab.AVUMLogEventWrapper(logEventParams); app.endPriv(); }); var ReviewTrackerAddNewFolder = app.trustedFunction(function(url) { var result; var current = Collab.getReviewFolders(url); while(true) { // Query for a name app.beginPriv(); var folder = app.response(AnnotsString.IDS_REVIEW_PANEL_ADD_FOLDER, AnnotsString.IDS_REVIEW_PANEL_NEW_FOLDER); app.endPriv(); if(folder != undefined && folder != null) { if(folder.length < 1 || folder.length > 15) { app.beginPriv(); app.alert(AnnotsString.IDS_REVIEW_PANEL_FOLDER_LENGTH, 1, 0); app.endPriv(); } else { var bFound = false; if(current != undefined) { for(var i = 0; i < current.length && !bFound; i++) bFound = current[i] == folder; } if(bFound) { var msg = AnnotsString.IDS_REVIEW_PANEL_FOLDER_EXISTS; msg = msg.replace(/%s/g, folder); app.beginPriv(); app.alert(msg, 1, 0); //PSIRT-9653 // app.Priv(); looked like a typo which should instead have been app.endPriv(); // since app.Priv() was undefined the researcher has assigned app.Priv() to some arbitrary function app.endPriv(); } else { app.beginPriv(); Collab.addReviewFolder(url, folder); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_REVIEWS, "CreateFolder"); app.endPriv(); result = folder; break; } } } else break; } return result; }); var RemoveMultipleSelectedReviews = app.trustedFunction(function(bIsInitiated) { try { if(bIsInitiated) msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_MULTIPLE_SENT; else msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_MULTIPLE_JOINED; app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; var result = app.alert({cTitle:msgboxtitle, cMsg: msg, nIcon: 2, nType: 2}); app.endPriv(); if(result == 4) { app.beginPriv(); Collab.removeMultipleSelectedReviewsInTracker(); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_REVIEWS, "RemoveMultiple"); app.endPriv(); return true; } return false; } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }); var SetReviewFolderForMultipleReviews = app.trustedFunction(function(feedURL, reviewIDs, folderName) { try { app.beginPriv(); Collab.setReviewFolderForMultipleReviews(feedURL, reviewIDs, folderName); app.endPriv(); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }); var ReviewTrackerRemoveFolder = app.trustedFunction(function(url, folder) { var msg; if(url == cReviewsIveSentURL) msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_FOLDER_SENT; else msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_FOLDER_JOINED; msg = msg.replace(/%foldername%/g, folder); app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; var result = app.alert({cTitle:msgboxtitle, cMsg: msg, nIcon: 2, nType: 2}); app.endPriv(); if(result == 4) { app.beginPriv(); Collab.removeReviewFolder(url, folder); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_REVIEWS, "RemoveFolder"); app.endPriv(); } }); var ReviewTrackerRemoveFolderWhileMultipleSelect = app.trustedFunction(function(url, folder) { app.beginPriv(); Collab.removeReviewFolder(url, folder); app.endPriv(); }); var TrackerExpandSelection = app.trustedFunction(function() { app.beginPriv(); Collab.expandTrackerSelection(); app.endPriv(); }); var TrackerCanExpandSelection = app.trustedFunction(function(url) { app.beginPriv(); var canExpand = Collab.canExpandTrackerSelection; app.endPriv(); return canExpand; }); var TrackerCollapseSelection = app.trustedFunction(function() { app.beginPriv(); Collab.collapseTrackerSelection(); app.endPriv(); }); var TrackerCanCollapseSelection = app.trustedFunction(function(url) { app.beginPriv(); var canCollapse = Collab.canCollapseTrackerSelection; app.endPriv(); return canCollapse; }); var ReviewHasDeadline = app.trustedFunction(function(docID) { app.beginPriv(); var hasDeadline = Collab.hasReviewDeadline(docID); app.endPriv(); return hasDeadline; }); var ReviewHasCommentRepositoryIntact = app.trustedFunction(function(docID) { app.beginPriv(); var hasCommentRepositoryIntact = Collab.hasReviewCommentRepositoryIntact(docID); app.endPriv(); return hasCommentRepositoryIntact; }); var ReviewState = app.trustedFunction(function(docID) { app.beginPriv(); var reviewState = Collab.getReviewState(docID); app.endPriv(); return reviewState; }); var ReviewTrackerRemoveReview = app.trustedFunction(function(item, cType) { var docID = item.Extension[rmaDocID]; var msg; var isInitiated = item.Extension[rmaIsInitiated]; if(isInitiated && cType == "SharedReview") msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_REVIEW_SENT; else msg = AnnotsString.IDS_REVIEW_PANEL_CONFIRM_REMOVE_REVIEW_JOINED; msg = msg.replace(/%reviewname%/g, item.Title); app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; var result = app.alert({cTitle:msgboxtitle, cMsg: msg, nIcon: 2, nType: 2}); app.endPriv(); if(result == 4 && typeof docID != "undefined") { switch(cType) { case "Offline": Collab.unregisterOffline(docID); break; default: Collab.unregisterReview(docID); break; } LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_REVIEWS, "Remove"); return true; } else return false; }); var ReviewTrackerRemoveReviewWhileMultipleSelect = app.trustedFunction(function(item, cType) { var docID = item.Extension[rmaDocID]; if(typeof docID != "undefined") { switch(cType) { case "Offline": Collab.unregisterOffline(docID); break; default: Collab.unregisterReview(docID); break; } return true; } else return false; }); // Review Tracker UI var oReviewTrackerUI = { createContext: app.trustedFunction(function() { var result = { //General strings cIveSent: AnnotsString.IDS_REVIEW_PANEL_MY_REVIEWS, cNoIveSentReviews: AnnotsString.IDS_TRACKER_NO_SENT_REVIEWS, cIveReceived: AnnotsString.IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS, cNoIveReceivedReviews: AnnotsString.IDS_TRACKER_NO_SENT_REVIEWS, cReviewsSuperGroup: AnnotsString.IDS_TRACKER_REVIEWS_SUPER_GROUP_TITLE, nbsp_placeholder: "NBSP_PLACEHOLDER", cNotApplicable: AnnotsString.IDS_TRACKER_NOT_APPLICABLE, cNewByTotal: AnnotsString.IDS_TRACKER_NEW_BY_TOTAL, cUnreadByTotal: AnnotsString.IDS_TRACKER_UNREAD_BY_TOTAL, cNewByActive: AnnotsString.IDS_TRACKER_NEW_BY_ACTIVE, cActiveByTotal: AnnotsString.IDS_TRACKER_ACTIVE_BY_TOTAL, cDeadlineUpdated: AnnotsString.IDS_TRACKER_EXTRA_INFO_DEADLINE_UPDATED, cViewCommentsButton: AnnotsString.IDS_TRACKER_VIEW_COMMENTS_BUTTON, cReviewersLabel: AnnotsString.IDS_TRACKER_REVIEWERS_LABEL, cClick: AnnotsString.IDS_TRACKER_CLICK, cHere: AnnotsString.IDS_TRACKER_HERE, cToResumeActive: AnnotsString.IDS_TRACKER_TO_RESUME_ACTIVE, cHowDoIFixThis: AnnotsString.IDS_TRACKER_HOW_DO_I_FIX_THIS, cChangesSinceLastReviewed: AnnotsString.IDS_TRACKER_CHANGES_SINCE_LAST_VIEWED, cNoneSinceLastViewed: AnnotsString.IDS_TRACKER_CHANGES_NONE, cNewReviewersSinceLastViewed: AnnotsString.IDS_TRACKER_CHANGES_NEW_REVIEWERS, cNewCommentsSinceLastViewed: AnnotsString.IDS_TRACKER_CHANGES_NEW_COMMENTS, cReviewHasEnded: AnnotsString.IDS_TRACKER_CHANGES_REVIEW_ENDED, cNoComments: AnnotsString.IDS_SHARED_REVIEW_STATUS_NO_COMMENTS, cNoDeadline: AnnotsString.IDS_SHARED_REVIEW_NO_DEADLINE, cUpdated: AnnotsString.IDS_SHARED_REVIEW_DEADLINE_UPDATED, cSentUsing: AnnotsString.IDS_SHARED_REVIEW_SENT_USING_SERVER, cEmailAttachment: AnnotsString.IDS_SHARED_REVIEW_EMAIL_ATTACHMENT, cEditFileLocation: "(" + AnnotsString.IDS_TRACKER_EDIT_FILE_LOCATION + ")", cNone: AnnotsString.IDS_TRACKER_NONE, cNoSentReviews: AnnotsString.IDS_TRACKER_NO_SENT_REVIEWS, cNoJoinedReviews: AnnotsString.IDS_TRACKER_NO_JOINED_REVIEWS, cNoReviewsInFolder: AnnotsString.IDS_TRACKER_NO_REVIEWS_IN_FOLDER, //Table Column Header strings cTableHeaderFileName: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_FILENAME, cTableHeaderDeadline: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_DEADLINE, cTableHeaderNumberOfComments: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_COMMENTS, cTableHeaderNumberOfReviewers: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_REVIEWERS, cTableHeaderUnreadByTotal: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_UNREAD_BY_TOTAL, cTableHeaderNewByTotal: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_TOTAL, cTableHeaderNewByActive: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_ACTIVE, cTableHeaderEmail: AnnotsString.IDS_TABLE_HEADER_EMAIL, cTableHeaderReviewer: AnnotsString.IDS_SHARED_REVIEW_STATUS_NAME, cTableHeaderTitle: AnnotsString.IDS_TABLE_HEADER_TITLE, cTableHeaderReviewerType: AnnotsString.IDS_SHARED_REVIEW_STATUS_STATUS, //Def List strings cDefListFileLocationProp: AnnotsString.IDS_DEFINITION_LIST_FILE_LOCATION, cDefListStatusProp: AnnotsString.IDS_DEFINITION_LIST_STATUS, cDefListAccessLevelProp: AnnotsString.IDS_DEFINITION_LIST_ACCESS_LEVEL, cDefListErrorProp: AnnotsString.IDS_DEFINITION_LIST_ERROR, cDefListSentProp: AnnotsString.IDS_DEFINITION_LIST_SENT, cDefListReceivedOnProp: AnnotsString.IDS_DEFINITION_LIST_RECEIVED_ON, cDefListDeadlineProp: AnnotsString.IDS_DEFINITION_LIST_DEADLINE, cDefListCommentsProp: AnnotsString.IDS_DEFINITION_LIST_COMMENTS, cDefListReviewersProp: AnnotsString.IDS_DEFINITION_LIST_REVIEWERS, //Action strings cChangeDeadline: AnnotsString.IDS_TRACKER_ACTION_CHANGE_DEADLINE, cAddDeadline: AnnotsString.IDS_TRACKER_ACTION_ADD_DEADLINE, cEndReview: AnnotsString.IDS_TRACKER_ACTION_END_REVIEW, cDeleteReview: AnnotsString.IDS_TRACKER_ACTION_DELETE_REVIEW, cAddReviewers: AnnotsString.IDS_TRACKER_ACTION_ADD_REVIEWERS, cNewWithSameReviewers: AnnotsString.IDS_TRACKER_ACTION_NEW_WITH_SAME_REVIEWERS, cEmailInitiator: AnnotsString.IDS_TRACKER_ACTION_EMAIL_INITIATOR, cEmailAllReviewers: AnnotsString.IDS_TRACKER_ACTION_EMAIL_ALL, reviewSync: { "EBR": AnnotsString.IDS_REVIEW_PANEL_LAST_RECV, "BBR": AnnotsString.IDS_REVIEW_PANEL_LAST_DOWNLOAD }, currentReview: { cReviewID: null, oReviewInfo: null, }, currentReviewsInFeed: { aReviewInfo: null, }, showItemView: function(dialog, feed) { try { var L = function(s) { return AnnotsString[s]; } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var extension = selection.Extension; var cReviewID = extension[rmaDocID]; this.currentReview.cReviewID = cReviewID; app.beginPriv(); this.currentReview.oReviewInfo = Collab.getReviewInfo(cReviewID); app.endPriv(); var reviewInfo = this.currentReview.oReviewInfo; var oReviewers = reviewInfo.oReviewers; //status strings to be used in Reviewers Table var oStatus = { Initiator: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_INITIATOR, Required: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_REQUIRED, Optional: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_OPTIONAL, Uninvited: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_ADDED, }; //Workflow state strings var oWorkflowState = { "Active": AnnotsString.IDS_WORKFLOW_STATE_INPROGRESS, "Ended": AnnotsString.IDS_WORKFLOW_STATE_ENDED, "Suspended": AnnotsString.IDS_WORKFLOW_STATE_SUSPENDED, "Corrupted": AnnotsString.IDS_WORKFLOW_STATE_CORRUPTED, }; //get info of all reviewers var nActiveReviewers = 0; var aReviewers = []; for(var curReviewer in oReviewers) { //Fix for bug 1556877: Review info does not display when selecting shared review file in Review Tracker. //Map should not have empty string as a key. We should guard against such cases. if(curReviewer == "") continue; var nComments = oReviewers[curReviewer].nComments; var nNewComments = oReviewers[curReviewer].nNewComments; if(nComments != undefined) { nActiveReviewers++; } else { nComments = 0; nNewComments = 0; } var cName = oReviewers[curReviewer].cName; if(cName == undefined) cName = ""; var cTitle = oReviewers[curReviewer].cTitle; if(cTitle == undefined) cTitle = ""; aReviewers[aReviewers.length] = { cName: cName, cEmail: curReviewer, cEmailLink: LINK("acrobat", "internal?mailto=" + escape(curReviewer)), cTitle: cTitle, cRole: oStatus[oReviewers[curReviewer].cStatus], nTotalComments: nComments, nUnreadComments: nNewComments, bHasParticipated: oReviewers[curReviewer].bHasParticipated }; } XML.setSettings({ignoreComments: false}); var group = extension[rmaFolder]; var cTopArrowXHTML = null; var cSentRecvd = (feed.URL == cReviewsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cReviewsIveSentURL) ? cReviewsIveSentFeedLink : cReviewsIveReceivedFeedLink; var cReviewName = selection.Title; //if group is not selected, then "Reviews > I've Sent > filename" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cReviewsSuperGroupLink}>{this.cReviewsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > {cReviewName} </div> } //there is a group(folder) as well else { var cGroupLink = "acrobat:Inbox?gotoLevel=1"; cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cReviewsSuperGroupLink}>{this.cReviewsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > <a class="blueLink" href={cGroupLink} style="unicode-bidi: embed;">{group}</a> > {cReviewName} </div> } var bIsInitiated = extension[rmaIsInitiated]; var bIsSharedReview = (extension[rmaMethod] == "SharedReview"); var cVisibleSharedReviewOnly = "display: none;"; var cVisibleNonSharedReviewOnly = "display: none;"; if(bIsSharedReview) cVisibleSharedReviewOnly = ""; else cVisibleNonSharedReviewOnly = ""; var cVisibleInitiatedReviewOnly = "display: none;"; if(bIsInitiated) cVisibleInitiatedReviewOnly = ""; var cReviewFileLink = "acrobat:Review?open=" + cReviewID + "&via=filePathLink"; var cReviewViewCommentsLink = "acrobat:Review?open=" + cReviewID + "&via=viewCommentsLink"; var cReviewFilePath = extension[rmaLocation]; var cReviewServer = reviewInfo.cServer; var cReviewStatus = REVIEW_STATE_ACTIVE;//by default the review is active var bReviewIsEnded = false; if(bIsSharedReview) { bReviewIsEnded = reviewInfo.bIsEnded;//check if this review is Ended if(bReviewIsEnded) cReviewStatus = REVIEW_STATE_ENDED; } var bIsReviewCorrupted = false; if(bIsSharedReview) { bIsReviewCorrupted = reviewInfo.bIsCorrupted;//check if this review is corrupted if(bIsReviewCorrupted) cReviewStatus = REVIEW_STATE_CORRUPTED; } var bIsReviewSuspended = false; if(bIsSharedReview) { bIsReviewSuspended = reviewInfo.bIsSuspended;//check if this review is Suspended if(bIsReviewSuspended) cReviewStatus = REVIEW_STATE_SUSPENDED; } var cClickHerePostString = ""; var cClickHereLink = ""; var cHowDoIFixThisLink = ""; var cVisibleClickHerePart = "display: none;";//dont display by default var cVisibleHowDoIFixThis = "display: none;";//dont display by default if(cReviewStatus == REVIEW_STATE_SUSPENDED) { cClickHereLink = "acrobat:Review?resume=" + cReviewID; cClickHerePostString = this.cToResumeActive; cVisibleClickHerePart = ""; } else if(cReviewStatus == REVIEW_STATE_CORRUPTED) { cHowDoIFixThisLink = "acrobat:Review?showHelpForCorruptedWorkflow"; cVisibleHowDoIFixThis = ""; } var cVisibleError = "display: none;";//dont display by default var cReviewError = ""; if(bIsSharedReview) { cReviewError = reviewInfo.cError;//Errors can be fetched only in case of Shared Review if(cReviewError != "") { cReviewError = cReviewError.replace(/%cProductVariant%/g, app.viewerType.match('Reader') != null ? AnnotsString.IDS_PRODUCT_VARIANT_READER : AnnotsString.IDS_PRODUCT_VARIANT_ACROBAT); cReviewError = this.cDefListErrorProp + " " + cReviewError; cVisibleError = "";//display if there is an error } } if(cReviewError == "") cReviewError = this.nbsp_placeholder;//else the span tag is reduced to null leading to everything getting red var cSentRecvdDateTime = ""; var cSentRecvdProp = ""; if(bIsInitiated) { cSentRecvdDateTime = reviewInfo.cSent; cSentRecvdProp = this.cDefListSentProp; } else { cSentRecvdProp = this.cDefListReceivedOnProp; cSentRecvdDateTime = reviewInfo.cReceived; } var cSentRecvdUsingServer = this.cSentUsing; cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%dateTimeSentRecvd%", cSentRecvdDateTime); if(bIsSharedReview) cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", cReviewServer); else if(extension[rmaMethod] == "EBR") cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", this.cEmailAttachment); else if(extension[rmaMethod] == "BBR") cSentRecvdUsingServer = cSentRecvdDateTime; //Access Level strings var oAccessLevel = { "None": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS_SR, "Restricted": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS_SR, }; var cAccessLevel = ""; var cVisibleAccessLevel = "display: none;"; if(bIsSharedReview) { cAccessLevel = reviewInfo.cAccessLevel; if(cAccessLevel != "Invalid") { cAccessLevel = oAccessLevel[cAccessLevel]; cVisibleAccessLevel = ""; } } var cReviewDeadline = ""; var cReviewDeadlineUpdate = ""; var cDeadlinePropVal = "";//this shall finally store what is to be shown for the Deadline Property if(bIsSharedReview) { //deadline cReviewDeadline = reviewInfo.cDeadline; //deadline update if(!bIsInitiated)//for initiator there is no deadline update cReviewDeadlineUpdate = reviewInfo.cDeadlineUpdate; } var cVisibleDeadline = bIsSharedReview ? "" : "display: none;";//display deadline only for Shared Reviews if(cReviewDeadlineUpdate != "")//if the review has deadline update, then display it cDeadlinePropVal = cReviewDeadlineUpdate; else if(cReviewDeadline != "")//if the review has deadline, then display it cDeadlinePropVal = cReviewDeadline; else cDeadlinePropVal = this.cNone; var bIsCommentRepositoryDeleted = reviewInfo.bIsCommentRepositoryDeleted; var cVisibleChangeDeadline = "display: none;";//dont display by default var cVisibleAddDeadline = "display: none;";//dont display by default if(!bIsCommentRepositoryDeleted) { if(cReviewDeadline != "") { if(bIsInitiated) cVisibleChangeDeadline = "";//if review has deadline, then only initiator can change it } else if(bIsSharedReview) { if(bIsInitiated) cVisibleAddDeadline = "";//if review does not have deadline, then only initiator can change it } } var cReviewChangeDeadlineLink = "acrobat:Review?changeDeadline=" + cReviewID; var cReviewAddDeadlineLink = "acrobat:Review?addDeadline=" + cReviewID; var bReviewHasEndedUpdate = false; var cReviewEndedStyle = ""; if(cReviewStatus == REVIEW_STATE_ENDED) { var cWorkflowsFileState = reviewInfo.cWorkflowsFileState; bReviewHasEndedUpdate = (cWorkflowsFileState != REVIEW_STATE_ENDED); cReviewEndedStyle = bReviewHasEndedUpdate ? "font-weight: bold;" : ""; } var cVisibleEndReview = "display: none;";//dont display by default if(bIsInitiated && bIsSharedReview) { if(!bReviewIsEnded) cVisibleEndReview = "";//if review is not ended, then initiator can end review for shared review } var cReviewEndReviewLink = "acrobat:Review?end=" + cReviewID; var cPDFIconForReview = (bIsSharedReview && bReviewIsEnded) ? "ended-iconic" : "pdf-iconic"; var cReviewComments = ""; if(bIsSharedReview)//only for Shared Review we show the number of comments { cReviewComments = this.cNewByTotal; cReviewComments = cReviewComments.replace(/%new%/, "" + reviewInfo.nNewComments); cReviewComments = cReviewComments.replace(/%total%/, "" + reviewInfo.nComments); } var cReviewReviewers = ""; if(bIsSharedReview)//only for Shared Review we show the number of reviewers { cReviewReviewers = this.cNewByActive; cReviewReviewers = cReviewReviewers.replace(/%new%/, "" + reviewInfo.nNewReviewers); cReviewReviewers = cReviewReviewers.replace(/%active%/, "" + nActiveReviewers); } var cVisibleEmailInitiator = "display: none;";//dont display by default if(!bIsInitiated) cVisibleEmailInitiator = ""; //show "Add Reviewers" if I am the initiator and the review has not ended for Shared Review var cVisibleAddReviewers = "display: none;";//dont display by default if(bIsInitiated && (!bIsSharedReview || !bReviewIsEnded)) cVisibleAddReviewers = ""; var cVisibleNewWithSameReviewers = "display: none;";//dont display by default if(bIsInitiated && bIsSharedReview) cVisibleNewWithSameReviewers = ""; var cReviewEmailInitiatorLink = "acrobat:Review?emailInitiator=" + cReviewID; var cReviewEmailAllReviewersLink = "acrobat:Review?emailAllReviewers=" + cReviewID; var cReviewAddReviewersLink = "acrobat:Review?invite=" + cReviewID; var cReviewNewWithSameReviewersLink = "acrobat:Review?newSharedReviewWithSameReviewers=" + cReviewID; var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> <div id="pg_sent_details" style="margin-left: 35px;"> <br /> <div class="buttons"> <a href={cReviewViewCommentsLink} title={cReviewFilePath} class={cPDFIconForReview}><span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;">{this.cViewCommentsButton}</span></a> </div> <br /> <div style="margin-left: -6px;"> <table class="definitionListTableSmall"> <tr> <th><span class="dontWrap">{this.cDefListFileLocationProp}</span></th> <td><a href={cReviewFileLink}><span class="blueLink">{cReviewFilePath}</span></a></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListStatusProp}</span></th> <td><span class="dontWrap"><span style={cReviewEndedStyle}>{oWorkflowState[cReviewStatus]}</span> <span style={cVisibleHowDoIFixThis}><a style="color:blue;" href={cHowDoIFixThisLink}>({this.cHowDoIFixThis})</a></span> <span style={cVisibleClickHerePart}>({this.cClick} <a style="color:blue;" href={cClickHereLink}>{this.cHere}</a> {cClickHerePostString})</span></span></td> </tr> <tr style={cVisibleError}> <th>{this.nbsp_placeholder}</th> <td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif" /><span style="color:red;">{cReviewError}</span></td> </tr> <tr> <th><span class="dontWrap">{cSentRecvdProp}</span></th> <td><span class="dontWrap">{cSentRecvdUsingServer}</span></td> </tr> <tr style={cVisibleAccessLevel}> <th><span class="dontWrap">{this.cDefListAccessLevelProp}</span></th> <td><span class="dontWrap">{cAccessLevel}</span></td> </tr> <tr style={cVisibleDeadline}> <th><span class="dontWrap">{this.cDefListDeadlineProp}</span></th> <td><span class="dontWrap">{cDeadlinePropVal}</span></td> </tr> </table> </div> <div style={cVisibleInitiatedReviewOnly} class="buttons"> <a style={cVisibleChangeDeadline} href={cReviewChangeDeadlineLink} class="change-deadline-iconic"><span class="blueLink">{this.cChangeDeadline}</span></a> <a style={cVisibleAddDeadline} href={cReviewAddDeadlineLink} class="change-deadline-iconic"><span class="blueLink">{this.cAddDeadline}</span></a> <a style={cVisibleEndReview} href={cReviewEndReviewLink} class="end-review-iconic"><span class="blueLink">{this.cEndReview}</span></a> </div> <span style={cVisibleInitiatedReviewOnly}> <br /> </span> <div class="dottedLine">{this.nbsp_placeholder}</div> <br /> <div class="buttons"> <span class="reviewers-iconic" style="font-weight:bold; font-size:12;">{this.cReviewersLabel}</span> </div> <div style="margin-left: -6px;"> <table class="definitionListTableSmall" style={cVisibleSharedReviewOnly}> <tr> <th><span class="dontWrap">{this.cDefListCommentsProp}</span></th> <td><span class="dontWrap">{cReviewComments}</span></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListReviewersProp}</span></th> <td><span class="dontWrap">{cReviewReviewers}</span></td> </tr> </table> </div> <span style={cVisibleNonSharedReviewOnly}> <br /> </span> <div class="buttons"> <a style={cVisibleEmailInitiator} href={cReviewEmailInitiatorLink} class="email-initiator-iconic"><span class="blueLink">{this.cEmailInitiator}</span></a> <a href={cReviewEmailAllReviewersLink} class="email-all-iconic"><span class="blueLink">{this.cEmailAllReviewers}</span></a> <a style={cVisibleAddReviewers} href={cReviewAddReviewersLink} class="add-reviewer-iconic"><span class="blueLink">{this.cAddReviewers}</span></a> <a style={cVisibleNewWithSameReviewers} href={cReviewNewWithSameReviewersLink} class="review-same-reviewers-iconic"><span class="blueLink">{this.cNewWithSameReviewers}</span></a> </div> <br /> </div> <div class="borderedDivDetailPage"> <table id="reviewerList" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="margin-left: 10px;">{this.cTableHeaderEmail}</th> <th>{this.cTableHeaderReviewer}</th> <th>{this.cTableHeaderTitle}</th> <th style={cVisibleSharedReviewOnly}><center>{this.cTableHeaderNumberOfComments}<br />{this.cTableHeaderNewByTotal}</center></th> <th>{this.cTableHeaderReviewerType}</th> </tr> </table> </div> </body> </html> //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //get the reference to TABLE with ID "reviewerList" var tableXHTML = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "reviewerList") { tableXHTML = i; break; } } // //Sorting functionality for Reviewers table in Detailed View of a Review var rolePriority = { Initiator: 4, Required: 3, Optional: 2, Added: 1, }; var isRoleEqual = function(role1, role2) { var nRole1 = rolePriority[role1]; var nRole2 = rolePriority[role2]; return (nRole1 == nRole2); }; var isRoleLesser = function(role1, role2) { var nRole1 = rolePriority[role1]; var nRole2 = rolePriority[role2]; return (nRole1 < nRole2); }; var isReviewerLesser = function(reviewer1, reviewer2) { if(isRoleLesser(reviewer1.cRole, reviewer2.cRole)) return 1; else if(isRoleEqual(reviewer1.cRole, reviewer2.cRole)) { //compare the email IDs - case-insensitive var emailID1 = reviewer1.cEmail.toLowerCase(); var emailID2 = reviewer2.cEmail.toLowerCase(); return (emailID1 > emailID2); } else return 0; }; // //sort reviewers Initiator->Required->Optional->Added and then on Email(alphabetical, case-insensitive) for(var current = 1; current < aReviewers.length; current++) { //save the current value var curVal = aReviewers[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //check if aReviewers[trav] < curVal if(isReviewerLesser(aReviewers[trav], curVal)) aReviewers[trav + 1] = aReviewers[trav]; else//if(aReviewers[trav] >= curVal) break; } if((trav + 1) != current) aReviewers[trav + 1] = curVal; } // var evenOddRow = false; for(var curReviewerIndex = 0; curReviewerIndex < aReviewers.length; curReviewerIndex++) { var curReviewer = aReviewers[curReviewerIndex]; var cComments = this.cUnreadByTotal; if(!curReviewer.bHasParticipated) cComments = ""; else cComments = "" + curReviewer.nUnreadComments + " / " + curReviewer.nTotalComments; evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var trReviewerXHTML = <tr bgcolor={cRowColor}> <td><a href={curReviewer.cEmailLink}><span class="blueLink">{curReviewer.cEmail}</span></a></td> <td>{curReviewer.cName}</td> <td>{curReviewer.cTitle}</td> <td style={cVisibleSharedReviewOnly}><center>{cComments}</center></td> <td>{curReviewer.cRole}</td> </tr> tableXHTML.appendChild(trReviewerXHTML); } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }, showFeedView: function(dialog, feed) { try { var L = function(s) { return AnnotsString[s]; } var LINK = function(scheme, s) { return scheme + ":" + s; } var extension = feed.Extension; var items = feed.Items; var group; XML.setSettings({ignoreComments: false}); var aReviewList = [];//this array shall hold all the reviews to be shown in this Feed/Summary View if(dialog.isGroupSelection()) group = dialog.getSelection("Group"); //free up the old reviewinfo objects if(this.currentReviewsInFeed.aReviewInfo) { for(var i = 0; i < this.currentReviewsInFeed.aReviewInfo.length; i++) this.currentReviewsInFeed.aReviewInfo[i] = null; } this.currentReviewsInFeed.aReviewInfo = new Array(); for(var i in items) { var item = items[i]; var docID = item.Extension[rmaDocID]; // Filter by group and hidden if(item.Extension[inboxHidden]) continue; if(group != undefined && item.Extension[rmaFolder] != group) continue; var reviewInfo = null; app.beginPriv(); reviewInfo = Collab.getReviewInfo(docID); app.endPriv(); if(reviewInfo == null) continue; this.currentReviewsInFeed.aReviewInfo.push(reviewInfo); var bIsSharedReview = (item.Extension[rmaMethod] == "SharedReview"); var bIsInitiated = item.Extension[rmaIsInitiated]; aReviewList[aReviewList.length] = { cFileName: item.Title, nSentRecvdTime: bIsInitiated ? reviewInfo.nSent : reviewInfo.nReceived, cDeadline: bIsSharedReview ? reviewInfo.cDeadline : "", nTotalComments: bIsSharedReview ? reviewInfo.nComments : 0, nUnreadComments: bIsSharedReview ? reviewInfo.nNewComments : 0, nActiveReviewers: 0, nNewReviewers: bIsSharedReview ? reviewInfo.nNewReviewers : 0, cDeadlineUpdate: bIsSharedReview ? reviewInfo.cDeadlineUpdate : false, cFileLink: LINK("acrobat", "Inbox?container=" + rtNS + "&selectFeed=" + feed.URL + "#" + item.Guid), bIsSharedReview: bIsSharedReview, } //extra work for Shared Reviews if(bIsSharedReview) { //get info of all reviewers var nActiveReviewers = 0; var oReviewers = reviewInfo.oReviewers; for(var curReviewer in oReviewers) { //Fix for bug 1556877: Review info does not display when selecting shared review file in Review Tracker. //Map should not have empty string as a key. We should guard against such cases. if(curReviewer == "") continue; var nComments = oReviewers[curReviewer].nComments; if(nComments != undefined) nActiveReviewers++; } aReviewList[aReviewList.length - 1].nActiveReviewers = nActiveReviewers; //if there is no deadline for Shared Review, display "No Deadline" if(aReviewList[aReviewList.length - 1].cDeadline == "") aReviewList[aReviewList.length - 1].cDeadline = this.cNoDeadline; //if there is a deadline update for a Shared Review, display that in the Deadline column as (Updated) if(aReviewList[aReviewList.length - 1].cDeadlineUpdate != "") aReviewList[aReviewList.length - 1].cDeadline += " (" + this.cUpdated + ")"; } } var cSentRecvd = (feed.URL == cReviewsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cReviewsIveSentURL) ? cReviewsIveSentFeedLink : cReviewsIveReceivedFeedLink; var cNoReviewsInFeed; if(group) cNoReviewsInFeed = this.cNoReviewsInFolder; else cNoReviewsInFeed = (feed.URL == cReviewsIveSentURL) ? this.cNoSentReviews : this.cNoJoinedReviews; var cFeedIconClass = (feed.URL == cReviewsIveSentURL) ? "reviews-sent-iconic" : "reviews-joined-iconic"; var viewXHTML; if(aReviewList.length == 0) { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div class="summary_page"> <span class={cFeedIconClass}><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <span> &#8226; {cNoReviewsInFeed}<br /> </span> </div> </body> </html> } else { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div> <div id="mainDiv" class="summary_page"> <span class={cFeedIconClass}><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> </div> </body> </html> } var cTopArrowXHTML; //if group is not selected, then "Reviews > I've Sent" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a href={cReviewsSuperGroupLink}><span class="blueLink">{this.cReviewsSuperGroup}</span></a> > {cSentRecvd} </div> } //there is a group(folder) as well else { cTopArrowXHTML = <div class="bread_crumb"> <a href={cReviewsSuperGroupLink}><span class="blueLink">{this.cReviewsSuperGroup}</span></a> > <a href={cSentRecvdLink}><span class="blueLink">{cSentRecvd}</span></a> > {group} </div> } //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //create the table only if there are reviews if(aReviewList.length > 0) { //get the reference to DIV with ID "mainDiv" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // //create a table and add as child of mainDiv var tableXHTML = <table class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderDeadline}</th> <th><center>{this.cTableHeaderNumberOfComments}<br />{this.cTableHeaderNewByTotal}</center></th> <th><center>{this.cTableHeaderNumberOfReviewers}<br />{this.cTableHeaderNewByActive}</center></th> </tr> </table> // borderedDiv.appendChild(tableXHTML); //sort reviews based on Sent/Received time for(var current = 1; current < aReviewList.length; current++) { //save the current value var curVal = aReviewList[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //compare current with trav if(aReviewList[trav].nSentRecvdTime > curVal.nSentRecvdTime) break; else aReviewList[trav + 1] = aReviewList[trav]; } if((trav + 1) != current) aReviewList[trav + 1] = curVal; } // var evenOddRow = false; //for all the Reviews in this Feed, create a row <tr> and insert into tableXHTML for(var reviewIndex = 0; reviewIndex < aReviewList.length; reviewIndex++) { var curReview = aReviewList[reviewIndex]; //create comments(new/total) string var cComments = ""; if(curReview.bIsSharedReview) cComments = "" + curReview.nUnreadComments + " / " + curReview.nTotalComments; //create reviewers(new/total) string var cReviewers = ""; if(curReview.bIsSharedReview) cReviewers = "" + curReview.nNewReviewers + " / " + curReview.nActiveReviewers; //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var reviewXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curReview.cFileLink}><span class="blueLink">{curReview.cFileName}</span></a></td> <td>{curReview.cDeadline}</td> <td><center>{cComments}</center></td> <td><center>{cReviewers}</center></td> </tr> tableXHTML.appendChild(reviewXHTML); } } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }, onSelectionChanged: function(dialog) { var myReviewsURN = "urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/MyReviews.rss" try { if(dialog.isItemSelection()) { var feed = dialog.getFeed(); this.showItemView(dialog, feed); } else// if(dialog.isFeedSelection() || dialog.isGroupSelection()) { var feed = dialog.getFeed(); this.showFeedView(dialog, feed); } } catch(e){ console.println(e); } }, handleLink: function(dialog, url) { if(url.indexOf("acrobat:internal?") == 0) { var params = url.split("?")[1].split("&"); for(var i in params) { var a = params[i].split("="); switch(a[0]) { case "newFolder": ReviewTrackerAddNewFolder(a[1]); break; case "mailto": app.mailMsg({bUI: true, cTo: unescape(a[1])}); break; } } } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.showItemView = app.trustedFunction(result.showItemView); result.showFeedView = app.trustedFunction(result.showFeedView); app.endPriv(); return result; }), getInitiateMenu: app.trustedFunction(function(selection) { var result = [ { cName: "SendForReview", cDisplayName: AnnotsString.IDS_SEND_FOR_REVIEW, cIconURL: "local://A_SendByEmailForReview_Sm_N.png", onExecute: function(selection, doc) { ANSendForReview(doc); }, onEnabled: function(selection, doc) { return ANSendForReviewEnabled(doc); } }, { cName: "SendForSharedReview", cDisplayName: AnnotsString.IDS_SEND_FOR_SHARED_REVIEW, cIconURL: "local://A_SendForSharedReview_Sm_N.png", onExecute: function(selection, doc) { ANSendForSharedReview(doc); }, onEnabled: function(selection, doc) { return ANSendForSharedReviewEnabled(doc); } }, hasHanko() ? { cName: "SendForApproval", cDisplayName: AnnotsString.IDS_SEND_FOR_APPROVAL, cIconURL: "local://A_J_Approve_Sm_N.png", onExecute: function(selection, doc) { ANStartApproval(doc); }, onEnabled: function(selection, doc) { return ANSendForReviewEnabled(doc); } } : null, ]; return result; }), getGroupContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_FOLDER, onExecute: function(selection, doc) { ReviewTrackerRemoveFolder(selection.feed.URL, this.group); }, group: selection.group }; return result; }, getFeedTip: function(selection) { return selection.feed.Description; }, getItemTip: function(selection) { var reviewMethods = { "EBR": AnnotsString.IDS_REVIEW_PANEL_EMAIL, "BBR": AnnotsString.IDS_REVIEW_PANEL_ONLINE, "SharedReview": AnnotsString.IDS_REVIEW_PANEL_SHARED, }; var item = selection.item; var result = AnnotsString.IDS_REVIEW_PANEL_REVIEW_OF_TIP; result = result.replace(/{type}/g, reviewMethods[item.Extension[rmaMethod]]); var title = item.Title; return result.replace(/{title}/g, title); }, getGroupTip: function(selection) { //check if we are the initiator var bIsInitiated = (selection.feed.URL == cReviewsIveSentURL) ? true : false; if(bIsInitiated) return AnnotsString.IDS_REVIEW_PANEL_MY_REVIEWS_DESC; else return AnnotsString.IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS_DESC; }, getFeedContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "CreateNewFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_NEW_FOLDER, onExecute: function(selection, doc) { var url = selection.feed.URL; ReviewTrackerAddNewFolder(url); }, }; return result; }, getMultipleSelectContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED, onExecute: function(selection, doc) { var bIsInitiated = (selection[0].feed.URL == cReviewsIveSentURL) ? true : false; var bHasEBROrBRR = false; if(bIsInitiated) { //check if there is any EBR or BBR in the selected items for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewType = extension[rmaMethod]; if(reviewType == "EBR" || reviewType == "BBR") { bHasEBROrBRR = true; break; } } } } RemoveMultipleSelectedReviews(bIsInitiated && !bHasEBROrBRR); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "MoveToFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_MOVE_TO_FOLDER, oSubMenu: [ { cName: "None", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_FOLDER_NONE, onExecute: function(selection, doc) { var reviewIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewID = extension[rmaDocID]; reviewIDs[reviewIDs.length] = reviewID; } } SetReviewFolderForMultipleReviews(selection[0].feed.URL, reviewIDs, ""); } }, { bSeparator: true }, ] }; var sendToMenu = result[result.length - 1].oSubMenu; var folders = Collab.getReviewFolders(selection[0].feed.URL);//the feed URL for the first selected item works here for(var i in folders) { var origFolderName = folders[i]; if(app.platform == "WIN" || app.platform == "MAC") { folders[i] = folders[i].replace("&", "&&");//escape actual ampersand } else if (app.platform == "UNIX") { folders[i] = folders[i].replace("&", "_");//for underline folders[i] = folders[i].replace("_", "__");//escape actual underscore } sendToMenu[sendToMenu.length] = { cName: origFolderName, cDisplayName: folders[i], onExecute: function(selection, doc) { var reviewIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewID = extension[rmaDocID]; reviewIDs[reviewIDs.length] = reviewID; } } SetReviewFolderForMultipleReviews(selection[0].feed.URL, reviewIDs, this.cName); } }; } return result; }, getItemContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "OpenReview", cDisplayName: AnnotsString.IDS_ATTACHLAUNCH_OPEN, onExecute: function(selection) { app.launchURL(selection.item.Link); } }; result[result.length] = { bSeparator: true }; if(!app.viewerType.match(/Reader/))//Change Deadline, Add Deadline, End Review should not be accessible in Reader { result[result.length] = { cName: "ChangeDeadline", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CHANGE_DEADLINE, onExecute: function(selection) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?changeDeadline=" + docID); }, onEnabled: function(selection) { //check that this is a shared review var reviewType = selection.item.Extension[rmaMethod]; if(reviewType != "SharedReview") return false; //check if we are the initiator var isInitiated = selection.item.Extension[rmaIsInitiated]; if(typeof isInitiated == "undefined" || !isInitiated) return false; var docID = selection.item.Extension[rmaDocID]; //check that the comment repository is present var bIsCommentRepositoryIntact = ReviewHasCommentRepositoryIntact(docID); if(!bIsCommentRepositoryIntact) return false; //check if the review has a deadline return ReviewHasDeadline(docID); } }; result[result.length] = { cName: "AddDeadline", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_ADD_DEADLINE, onExecute: function(selection) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?addDeadline=" + docID); }, onEnabled: function(selection) { //check that this is a shared review var reviewType = selection.item.Extension[rmaMethod]; if(reviewType != "SharedReview") return false; //check if we are the initiator var isInitiated = selection.item.Extension[rmaIsInitiated]; if(typeof isInitiated == "undefined" || !isInitiated) return false; var docID = selection.item.Extension[rmaDocID]; //check that the comment repository is present var bIsCommentRepositoryIntact = ReviewHasCommentRepositoryIntact(docID); if(!bIsCommentRepositoryIntact) return false; //check if the review has a deadline return !ReviewHasDeadline(docID); } }; result[result.length] = { cName: "EndReview", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_END_REVIEW, onExecute: function(selection) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?end=" + docID); }, onEnabled: function(selection) { //check that this is a shared review var reviewType = selection.item.Extension[rmaMethod]; if(reviewType != "SharedReview") return false; //check if we are the initiator var isInitiated = selection.item.Extension[rmaIsInitiated]; if(!isInitiated) return false; //check if the review's state is not "end" var docID = selection.item.Extension[rmaDocID]; return (ReviewState(docID) != REVIEW_STATE_ENDED); } }; } result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_REVIEW, onExecute: function(selection, doc) { var reviewType = selection.item.Extension[rmaMethod]; ReviewTrackerRemoveReview(selection.item, reviewType); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "EmailInitiator", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_EMAIL_INITIATOR, onExecute: function(selection, doc) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?emailInitiator=" + docID); }, onEnabled: function(selection, doc) { var isInitiated = selection.item.Extension[rmaIsInitiated]; return (typeof isInitiated == "undefined" || !isInitiated); } }; result[result.length] = { cName: "EmailReviewers", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_EMAIL_PARTICIPANTS, onExecute: function(selection, doc) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?emailAllReviewers=" + docID); }, }; if(!app.viewerType.match(/Reader/))//Add Reviewers, Start New Review with Same Reviewers shall not be accessible in Reader { result[result.length] = { cName: "Invite", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_INVITE, onExecute: function(selection, doc) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?invite=" + docID); }, onEnabled: function(selection, doc) { //check if we are the initiator var isInitiated = selection.item.Extension[rmaIsInitiated]; if(!isInitiated) return false; //if this is a shared review, then the review should not have ended var reviewType = selection.item.Extension[rmaMethod]; if(reviewType == "SharedReview") { var docID = selection.item.Extension[rmaDocID]; return (ReviewState(docID) != REVIEW_STATE_ENDED); } else//otherwise show it return true; } }; result[result.length] = { cName: "NewWithSameReviewers", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_NEW_WITH_SAME_REVIEWERS, onExecute: function(selection, doc) { var docID = selection.item.Extension[rmaDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Review?newSharedReviewWithSameReviewers=" + docID); }, onEnabled: function(selection, doc) { //check that this is a shared review var reviewType = selection.item.Extension[rmaMethod]; if(reviewType != "SharedReview") return false; //check if we are the initiator var isInitiated = selection.item.Extension[rmaIsInitiated]; return isInitiated; } }; } result[result.length] = { bSeparator: true }; if(!app.viewerType.match(/Reader/))//Convert to PDF shall not be accessible in Reader { result[result.length] = { cName: "ConvertToPDF", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_PDF_FROM_TRACKER_DETAILS, onExecute: function(selection) { app.launchURL("acrobat:Review?convertToPDF"); } }; result[result.length] = { bSeparator: true }; } result[result.length] = { cName: "CreateNewFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_NEW_FOLDER, onExecute: function(selection, doc) { var url = selection.feed.URL; ReviewTrackerAddNewFolder(url); }, }; result[result.length] = { cName: "MoveToFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_MOVE_TO_FOLDER, oSubMenu: [ { cName: "None", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_FOLDER_NONE, onExecute: function(selection, doc) { var ext = selection.item.Extension; // Add the item to the folder Collab.setReviewFolder(selection.feed.URL, ext[rmaDocID], ""); } }, { bSeparator: true }, ] }; var sendToMenu = result[result.length - 1].oSubMenu; var folders = Collab.getReviewFolders(selection.feed.URL); for(var i in folders) { var origFolderName = folders[i]; if(app.platform == "WIN" || app.platform == "MAC") { folders[i] = folders[i].replace("&", "&&");//escape actual ampersand } else if (app.platform == "UNIX") { folders[i] = folders[i].replace("&", "_");//for underline folders[i] = folders[i].replace("_", "__");//escape actual underscore } sendToMenu[sendToMenu.length] = { cName: origFolderName, cDisplayName: folders[i], onExecute: function(selection, doc) { var item = selection.item; var feed = selection.feed; var ext = item.Extension; Collab.setReviewFolder(feed.URL, ext[rmaDocID], this.cName); } }; } return result; }, supportsMultipleSelection: function() { return true; }, isCompatibleForMultipleSelectionWith: function(driverURL) { if(driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker" || driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup" || driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker") return true; else return false; }, canDeleteFeed: function(selection) { return false; }, canDeleteFeedWhileMultipleSelect: function(selection) { return false; }, canDeleteItem: function(selection) { return true; }, onDeleteItem: function(selection) { var reviewType = selection.item.Extension[rmaMethod]; return ReviewTrackerRemoveReview(selection.item, reviewType); }, canDeleteItemWhileMultipleSelect: function(selection) { return true; }, onDeleteItemWhileMultipleSelect: function(selection) { return ReviewTrackerRemoveReviewWhileMultipleSelect(selection.item, "Review"); }, onDeleteAllMultipleSelected: function(selection) { //check if we are the initiator var aFeedURL = selection[0].feed.URL.split(/#/); var bIsInitiated = (aFeedURL[0] == cReviewsIveSentURL) ? true : false; var bHasEBROrBRR = false; if(bIsInitiated) { //check if there is any EBR or BBR in the selected items for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewType = extension[rmaMethod]; if(reviewType == "EBR" || reviewType == "BBR") { bHasEBROrBRR = true; break; } } } } return RemoveMultipleSelectedReviews(bIsInitiated && !bHasEBROrBRR); }, canDeleteGroup: function(selection) { return true; }, onDeleteGroup: function(selection) { var url = selection.feed.URL; var group = selection.group; if(typeof group != "undefined") { ReviewTrackerRemoveFolder(url, group); return true; } else return false; }, canDeleteGroupWhileMultipleSelect: function(selection) { return true; }, onDeleteGroupWhileMultipleSelect: function(selection) { var url = selection.feed.URL; var group = selection.group; if(typeof group != "undefined") { ReviewTrackerRemoveFolderWhileMultipleSelect(url, group); return true; } else return false; }, canChangeGroups: function() { return true; }, canModifyItemGroup: function(selection, src, dst) { return true; }, modifyItemGroup: function(selection, src, dst) { var item = selection.item; var feed = selection.feed; var ext = item.Extension; var folders = Collab.getReviewFolders(feed.URL); if(dst.length == 0 && src.length != 0) { Collab.setReviewFolder(feed.URL, ext[rmaDocID], ""); return; } for(var i in dst) { var newFolder = null; for(var j in folders) { if(dst[i] == folders[j]) newFolder = folders[j]; } if(newFolder != null) { Collab.setReviewFolder(feed.URL, ext[rmaDocID], newFolder); break; } } } }; // Offline Docs UI var oOfflineTrackerUI = { createToolBar: function() { var result = [ { cType: "button", cName: "RT:GoBackOnline", cDisplayName: AnnotsString.IDS_GO_ONLINE_LABEL_TEXT, cTip: AnnotsString.IDS_GO_ONLINE_TIP_TEXT, cIconURL: "local://C_OnlineComments_Lg_N.png", onExecute: function(selection) { var docID = selection.item.Extension[rmaDocID]; Collab.goBackOnline(docID); }, onEnabled: function(selection) { return selection.type == "item"; } }, { cType: "button", cName: "RT:RemoveOffline", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_BUTTON, cTip: AnnotsString.IDS_REVIEW_PANEL_REMOVE_TIP, cIconURL: "local://C_RemoveFromList_Md_N.png", onExecute: function(selection) { ReviewTrackerRemoveReview(selection.item, "Offline"); }, onEnabled: function(selection) { return selection.type == "item"; } } ]; return result; }, createContext: app.trustedFunction(function() { var result = { onSelectionChanged: function(dialog) { if(dialog.isItemSelection()) this.showItemView(dialog); else if(dialog.isFeedSelection() || dialog.isGroupSelection()) this.showFeedView(dialog); }, showFeedView: function(dialog) { try { var L = function(s) { return AnnotsString[s]; } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var feed = dialog.getFeed(); var extension = feed.Extension; var items = feed.Items; XML.setSettings({ignoreComments: false}); var strs = { cListTitle: feed.Title, aReviewList: [], }; for(var i in items) { var item = items[i]; if(item.Extension[inboxHidden]) continue; var docID = item.Extension[rmaDocID]; strs.aReviewList[strs.aReviewList.length] = { cFileLink: LINK("acrobat", "Inbox?container=" + rtNS + "&selectFeed=" + feed.URL + "#" + item.Guid), cDeleteLink: LINK("acrobat", "Review?remove=" + docID), cFileName: item.Title, } } with(strs) { var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="pg_joined"> <h1>{cListTitle}</h1> <div class="content_offline"> <table id="listEntries" class="offlineList" cellspacing="0" cellpadding="0"> </table> </div> </div> </body> </html> var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "listEntries") { for(var j in aReviewList) { with(aReviewList[j]) { var serverXHTML = <tr> <td class="label"><a href={cFileLink} class="online-review-iconic">{cFileName}</a></td> <td class="trash"><a href={cDeleteLink}><img src="AdobeTracker/trash.gif" height="30" width="30" /></a></td> </tr> i.appendChild(serverXHTML); } } break; } } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); } }, showItemView: function(dialog) { // Items only if(!dialog.isItemSelection()) return; var selection = dialog.getSelection(); var title = AnnotsString.IDS_REVIEW_PANEL_TITLE; title = title.replace(/{title}/g, selection.Title); var extension = selection.Extension; XML.setSettings({ignoreComments: false}); var online = extension[rmaIsOnline]; var strs = { cTitle: title, cAttentionProperty: AnnotsString.IDS_REVIEW_PANEL_ATTENTION, cAttentionValue: AnnotsString.IDS_REVIEW_PANEL_ONLINE_REVIEW, cTypeProperty: AnnotsString.IDS_REVIEW_PANEL_TYPE, cTypeValue: extension[rmaMethod], cURLProperty: AnnotsString.IDS_REVIEW_PANEL_REMOTE_URL, cURLValue: extension[rmaRemoteURL], cVisibleWarning: online ? "" : "display: none", cOnlineURL: online, }; with(strs) { var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <h1 class="review-browser-iconic">{ cTitle }</h1> <div style={cVisibleWarning}> <a style="color: #000000;text-decoration: none" href={cOnlineURL}> <div style="padding: 5px; background-color: #FFE4E1;"> <b>{cAttentionProperty}</b> {cAttentionValue} </div> </a><br /> </div> <div class="content_offline_detail"> <dl> <dt>{ cTypeProperty }</dt> <dd>{ cTypeValue }</dd> <dt>{ cURLProperty }</dt> <dd><a href={cURLValue}>{ cURLValue }</a></dd> </dl> </div> </body> </html> var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.showItemView = app.trustedFunction(result.showItemView); result.showFeedView = app.trustedFunction(result.showFeedView); app.endPriv(); return result; }), getFeedContextMenu: function(selection) { return null; }, getMultipleSelectContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED, onExecute: function(selection, doc) { RemoveMultipleSelectedReviews(false);//For Offline Reviews, we just show message as for Participant Reviews } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "MoveToFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_MOVE_TO_FOLDER, oSubMenu: [ { cName: "None", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_FOLDER_NONE, onExecute: function(selection, doc) { var reviewIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewID = extension[rmaDocID]; reviewIDs[reviewIDs.length] = reviewID; } } SetReviewFolderForMultipleReviews(selection[0].feed.URL, reviewIDs, ""); } }, { bSeparator: true }, ] }; var sendToMenu = result[result.length - 1].oSubMenu; var folders = Collab.getReviewFolders(selection[0].feed.URL);//the feed URL for the first selected item works here for(var i in folders) { var origFolderName = folders[i]; if(app.platform == "WIN" || app.platform == "MAC") { folders[i] = folders[i].replace("&", "&&");//escape actual ampersand } else if (app.platform == "UNIX") { folders[i] = folders[i].replace("&", "_");//for underline folders[i] = folders[i].replace("_", "__");//escape actual underscore } sendToMenu[sendToMenu.length] = { cName: origFolderName, cDisplayName: folders[i], onExecute: function(selection, doc) { var reviewIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var reviewID = extension[rmaDocID]; reviewIDs[reviewIDs.length] = reviewID; } } SetReviewFolderForMultipleReviews(selection[0].feed.URL, reviewIDs, this.cName); } }; } return result; }, getItemContextMenu: function(selection) { var result = [ { cName: "OpenReview", cDisplayName: AnnotsString.IDS_ATTACHLAUNCH_OPEN, onExecute: function(selection) { app.launchURL(selection.item.Link); } }, { bSeparator: true }, { cName: "GoBackOnline", cDisplayName: AnnotsString.IDS_GO_ONLINE_LABEL_TEXT, onExecute: function(selection, doc) { var docID = selection.item.Extension[rmaDocID]; Collab.goBackOnline(docID); } }, { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_REVIEW, onExecute: function(selection, doc) { ReviewTrackerRemoveReview(selection.item, "Offline"); } } ]; return result; }, getFeedTip: function(selection) { return selection.feed.Description; }, getItemTip: function(selection) { var result = AnnotsString.IDS_REVIEW_PANEL_REVIEW_OF_TIP; result = result.replace(/{type}/g, AnnotsString.IDS_REVIEW_PANEL_OFFLINE); var title = selection.item.Title; return result.replace(/{title}/g, title); }, supportsMultipleSelection: function() { return true; }, isCompatibleForMultipleSelectionWith: function(driverURL) { if(driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker" || driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup" || driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker") return true; else return false; }, canDeleteFeed: function(selection) { return false; }, canDeleteFeedWhileMultipleSelect: function(selection) { return false; }, canDeleteItem: function(selection) { return true; }, onDeleteItem: function(selection) { return ReviewTrackerRemoveReview(selection.item, "Offline"); }, canDeleteItemWhileMultipleSelect: function(selection) { return true; }, onDeleteItemWhileMultipleSelect: function(selection) { return ReviewTrackerRemoveReviewWhileMultipleSelect(selection.item, "Offline"); }, onDeleteAllMultipleSelected: function(selection) { RemoveMultipleSelectedReviews(false);//For Offline Reviews, we just show message as for Participant Reviews }, }; // Server Status UI var oServerStatusUI = { createContext: app.trustedFunction(function() { var result = { //strings cLabelServerStatus: AnnotsString.IDS_TRACKER_SERVER_STATUS, cTableHeaderServerName: AnnotsString.IDS_TABLE_HEADER_SERVER_NAME, cTableHeaderNumActiveFiles: AnnotsString.IDS_TABLE_HEADER_NUM_ACTIVE_FILES, cTableHeaderNumErrors: AnnotsString.IDS_TABLE_HEADER_NUM_ERRORS, nbsp_placeholder: "NBSP_PLACEHOLDER", cNone: AnnotsString.IDS_TRACKER_NONE, cFileTypeReview: AnnotsString.IDS_TRACKER_SERVER_FILETYPE_REVIEW, cFileTypeForm: AnnotsString.IDS_TRACKER_SERVER_FILETYPE_FORM, cTableHeaderFileName: AnnotsString.IDS_TABLE_HEADER_FILE_NAME, cTableHeaderStatus: AnnotsString.IDS_TABLE_HEADER_STATUS, cTableHeaderError: AnnotsString.IDS_TABLE_HEADER_ERROR, cTableHeaderType: AnnotsString.IDS_TABLE_HEADER_TYPE, onSelectionChanged: function(dialog) { if(dialog.isItemSelection()) this.showItemView(dialog); else if(dialog.isFeedSelection() || dialog.isGroupSelection()) this.showFeedView(dialog); }, showFeedView: function(dialog) { try { var L = function(s) { return AnnotsString[s]; } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var feed = dialog.getFeed(); var extension = feed.Extension; var items = feed.Items; XML.setSettings({ignoreComments: false}); var aServers = []; for(var j in items) { var oServer = items[j]; var ext = oServer.Extension; var workflowsOnThisServer = ext[wrkflwServerWorkflows]; var countOfWorkflowsInError = ext[serverErrors]; var cServerStatus = "status-ok-iconic"; if(countOfWorkflowsInError > 0) cServerStatus = "status-issue-iconic"; aServers[aServers.length] = { cServerLink: LINK("acrobat", "Inbox?container=" + rtNS + "&selectFeed=" + feed.URL + "#" + oServer.Guid), cServerName: oServer.Title, cServerStatus: cServerStatus, nNumErrors: countOfWorkflowsInError, nNumActiveFiles: workflowsOnThisServer.length, }; } var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="bread_crumb"> {this.cLabelServerStatus} &gt; </div> <div id="pg_serverstatus_summary"> <div class="summary_page"> <span class="servers-super-iconic"><span style="font-weight:bold;">{this.cLabelServerStatus}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> <table id="tableServers" class="borderedTable" cellpadding="0" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th width="60px;"><center>{this.cTableHeaderStatus}</center></th> <th>{this.cTableHeaderServerName}</th> <th><center>{this.cTableHeaderNumActiveFiles}</center></th> <th><center>{this.cTableHeaderNumErrors}</center></th> </tr> </table> </div> </div> </div> </body> </html> //find the tableServers table element var tableServersXHTML = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "tableServers") { tableServersXHTML = i; break; } } // var evenOddRow = false; for(var index = 0; index < aServers.length; index++) { var curServer = aServers[index]; evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; //different rows shall be added to the tableServersXHTML defined below var serverXHTML = <tr bgcolor={cRowColor}> <td><center><span class={curServer.cServerStatus}></span></center></td> <td><a href={curServer.cServerLink}><span class="blueLink">{curServer.cServerName}</span></a></td> <td><center>{curServer.nNumActiveFiles}</center></td> <td><center>{curServer.nNumErrors}</center></td> </tr> tableServersXHTML.appendChild(serverXHTML); } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); console.println("EXCEPTION: " + e); console.println(e.stack); } }, showItemView: function(dialog) { try { var L = function(s) { return AnnotsString[s]; } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var extension = selection.Extension; var cServerName = selection.Title; var aWorkflows = []; for(var workflow in extension[wrkflwServerWorkflows]) { var ext = extension[wrkflwServerWorkflows][workflow]; var cWorkflowID = ext[wrkflwID]; var props = { cWorkflowName: ext[wrkflwDocTitle], cWorkflowType: ext[wrkflwType], cWorkflowTypeDisplay: "", cWorkflowOpenLink: ext[wrkflwDocLink], cWorkflowDeleteLink: ext[wrkflwDeleteLink], }; if(props.cWorkflowType == "Review") props.cWorkflowTypeDisplay = this.cFileTypeReview; else if(props.cWorkflowType == "Form") props.cWorkflowTypeDisplay = this.cFileTypeForm; var bWorkflowHasError = ext[wrkflwHasError]; if(bWorkflowHasError == "") { props.cWorkflowStatus = "status-ok-iconic"; props.cWorkflowError = this.cNone; } else { props.cWorkflowStatus = "status-issue-iconic"; if(props.cWorkflowType == "Review") { app.beginPriv(); props.cWorkflowError = Collab.getReviewError(cWorkflowID); app.endPriv(); } else if(props.cWorkflowType == "Form") { app.beginPriv(); props.cWorkflowError = FormWorkflow.getFormWorkflowError(cWorkflowID); app.endPriv(); } } if(props.cWorkflowError == undefined) props.cWorkflowError = this.cNone; aWorkflows[aWorkflows.length] = props; } XML.setSettings({ignoreComments: false}); var cTopArrowXHTML = null; //"Server Status > servername" cTopArrowXHTML = <div class="bread_crumb"> <a href={cServersFeedLink}><span class="blueLink">{this.cLabelServerStatus}</span></a> > {cServerName} </div> var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div> <div class="summary_page"> <span class="servers-super-iconic"><span style="font-weight:bold;">{cServerName}</span></span> <br /> <br /> </div> </div> <div class="borderedDivDetailPage"> <table id="tableWorkflows" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th width="60px;"><center>{this.cTableHeaderStatus}</center></th> <th>{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderType}</th> <th>{this.cTableHeaderError}</th> </tr> </table> </div> </body> </html> //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //find the tableWorkflows table element var tableWorkflowsXHTML = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "tableWorkflows") { tableWorkflowsXHTML = i; break; } } // var evenOddRow = false; for(var index = 0; index < aWorkflows.length; index++) { var curWorkflow = aWorkflows[index]; evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; //different rows shall be added to the tableWorkflowsXHTML defined below var workflowXHTML = <tr bgcolor={cRowColor}> <td><center><span class={curWorkflow.cWorkflowStatus}></span></center></td> <td><a href={curWorkflow.cWorkflowOpenLink} style="color:#0000FF;">{curWorkflow.cWorkflowName}</a></td> <td>{curWorkflow.cWorkflowTypeDisplay}</td> <td>{curWorkflow.cWorkflowError}</td> </tr> tableWorkflowsXHTML.appendChild(workflowXHTML); } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }, handleLink: function(dialog, url) { if(url.indexOf("acrobat:internal?") == 0) { var params = url.split("?")[1].split("&"); for(var i in params) { var a = params[i].split("="); switch(a[0]) { case "returnToInitiator": Collab.returnToInitiator(a[1]); break; } } } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.showItemView = app.trustedFunction(result.showItemView); result.showFeedView = app.trustedFunction(result.showFeedView); app.endPriv(); return result; }), getFeedContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; return result; }, getItemContextMenu: function(selection) { return null; }, getFeedTip: function(selection) { return selection.feed.Description; }, getItemTip: function(selection) { var item = selection.item; var extension = item.Extension; var bAllWorkflowsAreOkay = true; for(var workflow in extension[wrkflwServerWorkflows]) { var ext = extension[wrkflwServerWorkflows][workflow]; var bWorkflowHasError = ext[wrkflwHasError]; if(bWorkflowHasError != "") { bAllWorkflowsAreOkay = false; break; } } if(bAllWorkflowsAreOkay) return AnnotsString.IDS_TRACKER_ALL_WORKFLOWS_ARE_OKAY; else return AnnotsString.IDS_TRACKER_SOME_WORKFLOWS_ARE_IN_ERROR; }, canDeleteFeed: function(selection) { return false; }, canDeleteItem: function(selection) { return false; }, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // RSS Super Group UI var oRSSSuperGroupUI = { createContext: app.trustedFunction(function() { var result = { //General strings cWhatIsTitle: AnnotsString.IDS_RSS_EMPTY_VIEW_TITLE, cWhatIsText: CBSetProductVariant(AnnotsString.IDS_RSS_EMPTY_VIEW_BODY), cSubscribeToRSSFeedText: AnnotsString.IDS_RSS_SUBSCRIBE_TO_RSS_FEED, onSelectionChanged: function(dialog) { this.showEmptyView(dialog); }, showEmptyView: function(dialog) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } var cSubscribeToRSSFeedLink = "acrobat:Inbox?subscribeToRSSFeed=dummy"; XML.setSettings({ignoreComments: false}); var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="summary_page"> <div> <h3>{this.cWhatIsTitle}</h3> <p> {this.cWhatIsText} </p> </div> <div class="buttons"> <a href={cSubscribeToRSSFeedLink} class="rss-iconic"><span class="blueLink">{this.cSubscribeToRSSFeedText}</span></a> </div> </div> </body> </html> var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.showEmptyView = app.trustedFunction(result.showEmptyView); app.endPriv(); return result; }), getFeedContextMenu: function(selection) { return null; }, getItemContextMenu: function(selection) { return null; }, canDeleteFeed: function(selection) { return false; }, canDeleteItem: function(selection) { return false; }, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reviews Super Group UI var oReviewsSuperGroupUI = { createContext: app.trustedFunction(function() { var result = { //General strings cIveSent: AnnotsString.IDS_REVIEW_PANEL_MY_REVIEWS, cIveReceived: AnnotsString.IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS, cOffline: AnnotsString.IDS_REVIEW_PANEL_OFFLINE_DOCS, cReviewsSuperGroup: AnnotsString.IDS_TRACKER_REVIEWS_SUPER_GROUP_TITLE, onSelectionChanged: function(dialog) { this.showEmptyView(dialog); }, showEmptyView: function(dialog) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } XML.setSettings({ignoreComments: false}); app.beginPriv(); var haveOfflineReviews = Collab.haveOfflineReviews; app.endPriv(); var isReader = app.viewerType == "Reader"; //display Offline Reviews Link if there are any Offline Reviews var cVisibleOfflineReviews = haveOfflineReviews ? "" : "display:none"; //do not display Initiated Reviews Link in Reader var cVisibleMyReviews = isReader ? "display:none" : ""; var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="bread_crumb"> {this.cReviewsSuperGroup} &gt; </div> <div class="super_group_page"> <span class="reviews-super-iconic"><span style="font-weight:bold;">{this.cReviewsSuperGroup}</span></span> <br /> <br /> <p style="line-height:25px;"> <span style={cVisibleMyReviews}>&#8226; <a href={cReviewsIveSentFeedLink}><span class="blueLink">{this.cIveSent}</span></a> <br /></span> <span>&#8226; <a href={cReviewsIveReceivedFeedLink}><span class="blueLink">{this.cIveReceived}</span></a> <br /></span> <span style={cVisibleOfflineReviews}>&#8226; <a href={cReviewsOfflineFeedLink}><span class="blueLink">{this.cOffline}</span></a> <br /></span> </p> </div> </body> </html> var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.showEmptyView = app.trustedFunction(result.showEmptyView); app.endPriv(); return result; }), getGroupContextMenu: app.trustedFunction(function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; return result; }), canDeleteFeed: function(selection) { return false; }, canDeleteItem: function(selection) { return false; }, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Uber Summary UI var oUberSummaryUI = { createContext: app.trustedFunction(function() { var result = { onSelectionChanged: function(dialog) { app.beginPriv(); var haveCollabWorkflows = Collab.haveReviews; var haveFormWorkflows = FormWorkflow.haveFormWorkflows; app.endPriv(); //Do not show empty view for Reader if(app.viewerType != "Reader" && haveCollabWorkflows == false && haveFormWorkflows == false) { this.showEmptyView(dialog); } else { this.showFeedView(dialog); } }, //strings cLatestUpdates: AnnotsString.IDS_TRACKER_LATEST_UPDATES_TITLE, cReviewsUpdates: AnnotsString.IDS_TRACKER_REVIEWS_UPDATES, cNoReviewsUpdates: AnnotsString.IDS_TRACKER_NO_REVIEWS_UPDATES, cFormsUpdates: AnnotsString.IDS_TRACKER_FORMS_UPDATES, cNoFormsUpdates: AnnotsString.IDS_TRACKER_NO_FORMS_UPDATES, cServerStatus: AnnotsString.IDS_TRACKER_SERVER_STATUS, cTableHeaderFileName: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_FILENAME, cTableHeaderDeadline: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_DEADLINE, cTableHeaderNumberOfComments: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_COMMENTS, cTableHeaderNumberOfReviewers: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_REVIEWERS, cTableHeaderUnreadByTotal: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_UNREAD_BY_TOTAL, cTableHeaderNewByTotal: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_TOTAL, cTableHeaderNewByActive: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_ACTIVE, cTableHeaderRespondentsAndNew: getFormsString("IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDENTS"), cTableHeaderTotalRecipients: getFormsString("IDS_FORMS_TRACKER_TABLE_HEADER_TOTAL_RECIPIENTS"), cTableHeaderDistributedOn: getFormsString("IDS_FORMS_TRACKER_TABLE_HEADER_DISTRIBUTED_ON"), cTableHeaderNumberOfActiveFiles: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_ACTIVE_FILES, cTableHeaderNumberOfErrors: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_NUM_ERRORS, cTableHeaderServerName: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_SERVER_NAME, nbsp_placeholder: "NBSP_PLACEHOLDER", cUnreadByTotal: AnnotsString.IDS_TRACKER_UNREAD_BY_TOTAL, cNewByActive: AnnotsString.IDS_TRACKER_NEW_BY_ACTIVE, cNoDeadline: AnnotsString.IDS_SHARED_REVIEW_NO_DEADLINE, cUpdated: AnnotsString.IDS_SHARED_REVIEW_DEADLINE_UPDATED, // formsXHTML: null, reviewsXHTML: null, reviewsSectionHasUpdates: 1, formsSectionHasUpdates: 1, reviewsAggInfo: null, formsAggInfo: null, reviewsSectionFeed: null, formsSectionFeed: null, aFormsWorkflows: [],//array to hold information of all Forms workflows aReviewsWorkflows: [],//array to hold information of all Reviews workflows aServersInError: [],//array to hold information of all Servers in error setReviewsSectionHasUpdates: function(hasUpdates) { this.reviewsSectionHasUpdates = hasUpdates; }, setFormsSectionHasUpdates: function(hasUpdates) { this.formsSectionHasUpdates = hasUpdates; }, updateReviewsXHTML: function(dialog) { var aggInfo; if(this.reviewsAggInfo == null) { app.beginPriv(); this.reviewsAggInfo = Collab.getAggregateReviewInfo();//get the aggregate reviews info this.reviewsAggInfo.setHandler(this);//set the handler for updates app.endPriv(); } //get the section feed for reviews app.beginPriv(); aggInfo = this.reviewsAggInfo.sectionFeed(); app.endPriv(); // var bHasAWorkflowWithTrueUpdates = false;//ie do we have a workflow without errors since we do not display workflows with errors - that will only confuse the user this.aReviewsWorkflows = [];//initialize the array to empty for(var fileName in aggInfo) { var fileMap = aggInfo[fileName]; var numErrors = fileMap["errors"]; if(numErrors == 0) { this.aReviewsWorkflows[this.aReviewsWorkflows.length] = { cFileName: fileName, cFileLink: fileMap["docLink"], nTotalComments: fileMap["totalComments"], nUnreadComments: fileMap["unreadComments"], iLastUpdateTime: fileMap["lastUpdateTime"], nNewReviewers: fileMap["newReviewers"], nActiveReviewers: fileMap["activeReviewers"], cDeadline: fileMap["deadline"], bDeadlineUpdated: fileMap["deadlineUpdated"], nNumberOfErrors: fileMap["errors"], cServerName: fileMap["serverName"], }; bHasAWorkflowWithTrueUpdates = true; //if there is no deadline for Shared Review, display "No Deadline" if(this.aReviewsWorkflows[this.aReviewsWorkflows.length - 1].cDeadline == "") this.aReviewsWorkflows[this.aReviewsWorkflows.length - 1].cDeadline = this.cNoDeadline; //if there is a deadline update for a Shared Review, display that in the Deadline column as (Updated) if(this.aReviewsWorkflows[this.aReviewsWorkflows.length - 1].bDeadlineUpdated) this.aReviewsWorkflows[this.aReviewsWorkflows.length - 1].cDeadline += " (" + this.cUpdated + ")"; } else { this.aReviewsWorkflows[this.aReviewsWorkflows.length] = { iLastUpdateTime: fileMap["lastUpdateTime"], nNumberOfErrors: fileMap["errors"], cServerName: fileMap["serverName"], }; } } //save the XHTML in persistent variable - thats what the job of this function is if(!bHasAWorkflowWithTrueUpdates) { //the empty reviews section this.reviewsXHTML = <div class="summary_page"> <span class="reviews-super-iconic"><span style="font-weight:bold;">{this.cReviewsUpdates}</span></span> <br /> <br /> <span> &#8226; {this.cNoReviewsUpdates} </span> <br /> </div> return;//job done } this.reviewsXHTML = <div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> <span class="reviews-super-iconic"><span style="font-weight:bold;">{this.cReviewsUpdates}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> //different rows shall be added to the tableXHTML defined below var tableXHTML = <table id="updatedReviewsList" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderDeadline}</th> <th><center>{this.cTableHeaderNumberOfComments}<br />{this.cTableHeaderNewByTotal}</center></th> <th><center>{this.cTableHeaderNumberOfReviewers}<br />{this.cTableHeaderNewByActive}</center></th> </tr> </table> //get the reference to DIV with ID "borderedDivID" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in this.reviewsXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // borderedDiv.appendChild(tableXHTML); //sort on the basis of last update time for(var current = 1; current < this.aReviewsWorkflows.length; current++) { //save the current value var curVal = this.aReviewsWorkflows[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //compare current with trav if(this.aReviewsWorkflows[trav].iLastUpdateTime > curVal.iLastUpdateTime) break; else this.aReviewsWorkflows[trav + 1] = this.aReviewsWorkflows[trav]; } if((trav + 1) != current) this.aReviewsWorkflows[trav + 1] = curVal; } //we have the sorted array here var evenOddRow = false; //otherwise we prepare the Reviews Section XHTML for(var current = 0; current < this.aReviewsWorkflows.length; current++) { var curWorkflow = this.aReviewsWorkflows[current]; //Fix for bug 1696893 (Incorrect info being seen on the Latest Updates page for reviews in error.) //The workflows in error shall not be shown in the Uber Summary page if(curWorkflow.nNumberOfErrors == 0) { var cComments = "" + curWorkflow.nUnreadComments + " / " + curWorkflow.nTotalComments; var cReviewers = "" + curWorkflow.nNewReviewers + " / " + curWorkflow.nActiveReviewers; evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; //create a row (<tr>) and append as a child to tableXHTML var trXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curWorkflow.cFileLink}><span class="blueLink">{curWorkflow.cFileName}</span></a></td> <td>{curWorkflow.cDeadline}</td> <td><center>{cComments}</center></td> <td><center>{cReviewers}</center></td> </tr> // tableXHTML.appendChild(trXHTML); } } }, updateFormsXHTML: function(dialog) { var aggInfo; if(this.formsAggInfo == null) { app.beginPriv(); this.formsAggInfo = FormWorkflow.getAggregateFormWorkflowInfo();//get the aggregate forms workflow info this.formsAggInfo.setHandler(this);//set the handler for updates app.endPriv(); } //get the section feed for forms app.beginPriv(); aggInfo = this.formsAggInfo.sectionFeed(); app.endPriv(); //this.formsSectionFeed = aggInfo;//save the aggInfo to be used while preparing "Servers section", else we have to dispatch another JS->C++ call to get the same // var bHasAWorkflowWithTrueUpdates = false;//ie do we have a workflow without errors since we do not display workflows with errors - that will only confuse the user this.aFormsWorkflows = [];//initialize the array to empty for(var fileName in aggInfo) { var fileMap = aggInfo[fileName]; this.aFormsWorkflows[this.aFormsWorkflows.length] = { cFileName: fileName, cFileLink: fileMap["docLink"], cDistributedOn: fileMap["distributedOn"], nTotalRecipients: fileMap["totalRecipients"], nTotalRespondents: fileMap["totalRespondents"], nNewRespondents: fileMap["newRespondents"], iLastUpdateTime: fileMap["lastUpdateTime"], nNumberOfErrors: fileMap["errors"], cServerName: fileMap["serverName"], }; if(this.aFormsWorkflows[this.aFormsWorkflows.length - 1].nNumberOfErrors == 0) bHasAWorkflowWithTrueUpdates = true; var cRecipientsResponded = "" + this.aFormsWorkflows[this.aFormsWorkflows.length - 1].nTotalRespondents; cRecipientsResponded += " (" + this.aFormsWorkflows[this.aFormsWorkflows.length - 1].nNewRespondents + ")"; this.aFormsWorkflows[this.aFormsWorkflows.length - 1].cRecipientsResponded = cRecipientsResponded; } //myReviewTrackerDebugAlert("updateFormsXHTML - numbef of updated workflows = " + this.aFormsWorkflows.length); //save the XHTML in persistent variable - thats what the job of this function is if(!bHasAWorkflowWithTrueUpdates) { //the empty forms updates section this.formsXHTML = <div class="summary_page"> <span class="forms-super-iconic"><span style="font-weight:bold;">{this.cFormsUpdates}</span></span> <br /> <br /> <span> &#8226; {this.cNoFormsUpdates} </span> <br /> </div> return;//job done } this.formsXHTML = <div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> <span class="forms-super-iconic"><span style="font-weight:bold;">{this.cFormsUpdates}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> //different rows shall be added to the tableXHTML defined below var tableXHTML = <table id="updatedFormsList" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderDistributedOn}</th> <th><center>{this.cTableHeaderRespondentsAndNew}</center></th> <th><center>{this.cTableHeaderTotalRecipients}</center></th> </tr> </table> //get the reference to DIV with ID "borderedDivID" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in this.formsXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // borderedDiv.appendChild(tableXHTML); //sort on the basis of last update time for(var current = 1; current < this.aFormsWorkflows.length; current++) { //save the current value var curVal = this.aFormsWorkflows[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //compare current with trav if(this.aFormsWorkflows[trav].iLastUpdateTime > curVal.iLastUpdateTime) break; else this.aFormsWorkflows[trav + 1] = this.aFormsWorkflows[trav]; } if((trav + 1) != current) this.aFormsWorkflows[trav + 1] = curVal; } //we have the sorted array here var evenOddRow = false; var isFirstRow = true; //otherwise we prepare the Forms Section XHTML for(var current = 0; current < this.aFormsWorkflows.length; current++) { var curWorkflow = this.aFormsWorkflows[current]; //Fix for bug 1696893 (Incorrect info being seen on the Latest Updates page for reviews in error.) //The workflows in error shall not be shown in the Uber Summary page if(curWorkflow.nNumberOfErrors == 0) { //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; //create a row (<tr>) and append as a child to tableXHTML var trXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curWorkflow.cFileLink}><span class="blueLink">{curWorkflow.cFileName}</span></a></td> <td>{curWorkflow.cDistributedOn}</td> <td><center>{curWorkflow.cRecipientsResponded}</center></td> <td><center>{curWorkflow.nTotalRecipients}</center></td> </tr> // tableXHTML.appendChild(trXHTML); } } }, updateServersXHTML: function(dialog) { var oServersInfo = {};//this object will hold all servers having errors //when we reach here, we shall have the Reviews Section Array as well as Forms Section Array, which //we will then use to prepare the Servers Section XHTML //STEP 1 - handle review servers for(var current = 0; current < this.aReviewsWorkflows.length; current++) { var curWorkflow = this.aReviewsWorkflows[current]; if(curWorkflow.nNumberOfErrors <= 0) continue; var cServerName = curWorkflow.cServerName; if(oServersInfo[cServerName] == null) { oServersInfo[cServerName] = { iLastUpdateTime: 0, nNumberOfErrors: 0, };//create a new object } oServersInfo[cServerName].nNumberOfErrors += curWorkflow.nNumberOfErrors; if(curWorkflow.iLastUpdateTime > oServersInfo[cServerName].iLastUpdateTime) oServersInfo[cServerName].iLastUpdateTime = curWorkflow.iLastUpdateTime; } // //STEP 2 - handle forms servers for(var current = 0; current < this.aFormsWorkflows.length; current++) { var curWorkflow = this.aFormsWorkflows[current]; if(curWorkflow.nNumberOfErrors <= 0) continue; var cServerName = curWorkflow.cServerName; if(oServersInfo[cServerName] == null) { oServersInfo[cServerName] = { iLastUpdateTime: 0, nNumberOfErrors: 0, };//create a new object } oServersInfo[cServerName].nNumberOfErrors += curWorkflow.nNumberOfErrors; if(curWorkflow.iLastUpdateTime > oServersInfo[cServerName].iLastUpdateTime) oServersInfo[cServerName].iLastUpdateTime = curWorkflow.iLastUpdateTime; } // this.aServersInError = [];//initialize the array to empty for(var serverName in oServersInfo) { var serverMap = oServersInfo[serverName]; this.aServersInError[this.aServersInError.length] = { cServerName: serverName, cServerLink: cServerItemLink + "#" + cServersURL + serverName, iLastUpdateTime: serverMap.iLastUpdateTime, nNumberOfErrors: serverMap.nNumberOfErrors, nActiveWorkflows: 0,//these are computed later }; } //save the XHTML in persistent variable - thats what the job of this function is if(this.aServersInError.length == 0) { //the empty servers updates section - we do not show it if there are no errors this.serversXHTML = ""; return;//job done } this.serversXHTML = <div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> <span class="servers-super-iconic"><span style="font-weight:bold;">{this.cServerStatus}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> //different rows shall be added to the tableXHTML defined below var tableXHTML = <table id="updatedFormsList" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderServerName}</th> <th><center>{this.cTableHeaderNumberOfActiveFiles}</center></th> <th><center>{this.cTableHeaderNumberOfErrors}</center></th> </tr> </table> //get the reference to DIV with ID "borderedDivID" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in this.serversXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // borderedDiv.appendChild(tableXHTML); var evenOddRow = false; //sort on the basis of last update time for(var current = 1; current < this.aServersInError.length; current++) { //save the current value var curVal = this.aServersInError[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //compare current with trav if(this.aServersInError[trav].iLastUpdateTime > curVal.iLastUpdateTime) break; else this.aServersInError[trav + 1] = this.aServersInError[trav]; } if((trav + 1) != current) this.aServersInError[trav + 1] = curVal; } //we have the sorted array here //otherwise we prepare the Servers Section XHTML for(var current = 0; current < this.aServersInError.length; current++) { var curServer = this.aServersInError[current]; //compute the number of active workflows app.beginPriv(); curServer.nActiveWorkflows += Collab.getNumberOfReviewsOnServer(curServer.cServerName); curServer.nActiveWorkflows += FormWorkflow.getNumberOfFormWorkflowsOnServer(curServer.cServerName); app.endPriv(); //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; //create a row (<tr>) and append as a child to tableXHTML var trXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curServer.cServerLink}><span class="blueLink">{curServer.cServerName}</span></a></td> <td><center>{curServer.nActiveWorkflows}</center></td> <td><center>{curServer.nNumberOfErrors}</center></td> </tr> // tableXHTML.appendChild(trXHTML); } }, showFeedView: function(dialog) { try { var bDisplayToggleSynchronizerIconLink = app.platform == "WIN";//Synchronizer Icon exists only for Windows var cDisplayToggleSynchronizerIconLink = bDisplayToggleSynchronizerIconLink ? "" : "display: none;"; var cToggleSynchronizerLinkIconic = ""; var cToggleBezelLinkIconic = ""; var cToggleSynchronizerIcon = ""; if(bDisplayToggleSynchronizerIconLink) { app.beginPriv(); if(Collab.isSynchronizerIconShown) { cToggleSynchronizerIcon = AnnotsString.IDS_TRACKER_REMOVE_SYNC_ICON; cToggleSynchronizerLinkIconic = "turn-off-notification-in-tray-iconic"; } else { cToggleSynchronizerIcon = AnnotsString.IDS_TRACKER_RESTORE_SYNC_ICON; cToggleSynchronizerLinkIconic = "turn-on-notification-in-tray-iconic"; } app.endPriv(); } var cToggleDisplayBezel = ""; app.beginPriv(); if(Collab.isDisplayBezelEnabled) { cToggleDisplayBezel = AnnotsString.IDS_TRACKER_REMOVE_NOTIFICATION_BEZEL; cToggleBezelLinkIconic = "turn-off-notification-in-acrobat-iconic"; } else { cToggleDisplayBezel = AnnotsString.IDS_TRACKER_RESTORE_NOTIFICATION_BEZEL; cToggleBezelLinkIconic = "turn-on-notification-in-acrobat-iconic"; } app.endPriv(); cToggleDisplayBezel = cToggleDisplayBezel.replace("{product}", app.viewerType == "Reader" ? AnnotsString.IDS_PRODUCT_VARIANT_READER : AnnotsString.IDS_PRODUCT_VARIANT_ACROBAT); var cToggleSynchronizerIconLink = "acrobat:Review?toggleSynchronizerIcon"; var cToggleDisplayBezelLink = "acrobat:Review?toggleDisplayNotificationBezel"; //prepare the HTML envelope var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="bread_crumb"> {this.cLatestUpdates} &gt; </div> <div id="mainContainer"> </div> </body> </html> // //find the mainContainer div element var mainContainerDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::div) { if(i.@id == "mainContainer") { mainContainerDiv = i; break; } } // //get reviews section if(this.reviewsSectionHasUpdates) { this.updateReviewsXHTML(); } mainContainerDiv.appendChild(this.reviewsXHTML); // //get forms section if(this.formsSectionHasUpdates) { this.updateFormsXHTML(); } mainContainerDiv.appendChild(this.formsXHTML); // //get servers section if(this.reviewsSectionHasUpdates || this.formsSectionHasUpdates) { this.updateServersXHTML(); } mainContainerDiv.appendChild(this.serversXHTML); // var downButtonsXHTML = <div class="buttons" style="margin: 20px 0 0 35px;"> <br /> <br /> <a class={cToggleSynchronizerLinkIconic} style={cDisplayToggleSynchronizerIconLink} href={cToggleSynchronizerIconLink}><span class="blueLink">{cToggleSynchronizerIcon}</span></a> <a class={cToggleBezelLinkIconic} href={cToggleDisplayBezelLink}><span class="blueLink">{cToggleDisplayBezel}</span></a> </div> mainContainerDiv.appendChild(downButtonsXHTML); //after we have reached here, we have processed everything, hence the review section and forms section do not have any updates this.setReviewsSectionHasUpdates(0); this.setFormsSectionHasUpdates(0); // //join all of the above to form the complete HTML - and load the same var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); // } catch(e) { myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); console.println("EXCEPTION: " + e); console.println(e.stack); } }, showEmptyView: function(dialog) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } XML.setSettings({ignoreComments: false}); var cWelcomeStr = AnnotsString.IDS_TRACKER_WELCOME; var cWhatIsReviewTitle = AnnotsString.IDS_TRACKER_NO_REVIEWS_TITLE; var cWhatIsReviewText = CBSetProductVariant(AnnotsString.IDS_TRACKER_NO_REVIEWS_BODY); var cCreateSharedReviewText = AnnotsString.IDS_TRACKER_CREATE_SHARED_REVIEW; var cCreateSharedReviewLink = LINK("acrobat", "Review?initiate=SharedReview"); var cCreateEmailReviewText = AnnotsString.IDS_TRACKER_CREATE_EMAIL_REVIEW; var cCreateEmailReviewLink = LINK("acrobat", "Review?initiate=EmailReview"); var cWhatIsFormTitle = AnnotsString.IDS_TRACKER_NO_FORMS_TITLE; var cWhatIsFormText = CBSetProductVariant(AnnotsString.IDS_TRACKER_NO_FORMS_BODY); var cCreateFormText = AnnotsString.IDS_TRACKER_CREATE_SHARED_FORM; var cCreateFormLink = LINK("acrobat", "Forms?action=createForm"); var cDistributeFormText = AnnotsString.IDS_TRACKER_DISTRIBUTE_SHARED_FORM; var cDistributeFormLink = LINK("acrobat", "Forms?action=distributeForm"); // review_list.html var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="content_uber_summary_page"> <div> <div class="error"> {cWelcomeStr} </div> <h3>{cWhatIsReviewTitle}</h3> <p> {cWhatIsReviewText} </p> </div> <div class="buttons"> <a href={cCreateSharedReviewLink} class="create-shared-iconic"><span class="blueLink">{cCreateSharedReviewText}</span></a> <a href={cCreateEmailReviewLink} class="create-email-iconic"><span class="blueLink">{cCreateEmailReviewText}</span></a> </div> <div> <h3>{cWhatIsFormTitle}</h3> <p> {cWhatIsFormText} </p> </div> <div class="buttons"> <a href={cCreateFormLink} class="create-form-iconic"><span class="blueLink">{cCreateFormText}</span></a> <a href={cDistributeFormLink} class="distribute-form-iconic"><span class="blueLink">{cDistributeFormText}</span></a> </div> </div> </body> </html> var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myReviewTrackerDebugAlert("EXCEPTION: " + e); myReviewTrackerDebugAlert(e.stack); } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; app.beginPriv(); result.onSelectionChanged = app.trustedFunction(result.onSelectionChanged); result.showEmptyView = app.trustedFunction(result.showEmptyView); result.showFeedView = app.trustedFunction(result.showFeedView); result.updateReviewsXHTML = app.trustedFunction(result.updateReviewsXHTML); result.updateFormsXHTML = app.trustedFunction(result.updateFormsXHTML); result.updateServersXHTML = app.trustedFunction(result.updateServersXHTML); app.endPriv(); return result; }), getFeedContextMenu: function(selection) { return null; }, getItemContextMenu: function(selection) { return null; }, canDeleteFeed: function(selection) { return false; }, canDeleteItem: function(selection) { return false; }, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// app.beginPriv(); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker", oReviewTrackerUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker", oOfflineTrackerUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/ServerTracker", oServerStatusUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/RSSSuperGroup", oRSSSuperGroupUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup", oReviewsSuperGroupUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/UberSummary", oUberSummaryUI); app.endPriv(); } }); InitAnnot = app.trustedFunction(function() { if(typeof Collab != "undefined") { /* Set up default annot stores */ Collab.addAnnotStore("NONE", AnnotsString.IDS_STORE_NONE, {create: function(doc, user, settings){ return null; }}); Collab.setStoreNoSettings("NONE", true); if(typeof ADBC != "undefined" && app.platform == "WIN") { Collab.addAnnotStore("DB", AnnotsString.IDS_STORE_DATABASE, {create: function(doc, user, settings){ doc.collabDBRoot = settings; doc.collabDBFlags = CBFNiceTableName; return (settings && settings != "") ? new ADBCAnnotStore(doc, user) : null; }}, null, true); } Collab.addAnnotStore("DAVFDF", AnnotsString.IDS_STORE_DAVFDF, {create: function(doc, user, settings){ return (settings && settings != "") ? new FSAnnotStore(doc, user, settings + doc.Collab.docID + "/", fileSystem.WebDAV) : null; }}); Collab.addAnnotStore("FSFDF", AnnotsString.IDS_STORE_FSFDF, {create: function(doc, user, settings){ return (settings && settings != "") ? new FSAnnotStore(doc, user, settings + doc.Collab.docID + "/") : null; }}); Collab.setStoreFSBased("FSFDF", true); Collab.addStateModel ({ cName: "Review", cUIName: AnnotsString.IDS_ACTION_REVIEW, oStates: { "None": AnnotsString.IDS_STATE_NONE, "Accepted": { cUIName: AnnotsString.IDS_STATE_ACCEPT, cIconName: "A_Accept_Sm_N.png" }, "Rejected": { cUIName: AnnotsString.IDS_STATE_REJECT, cIconName: "A_Reject_Sm_N.png" }, "Cancelled": { cUIName: AnnotsString.IDS_STATE_CANCELLED, cIconName: "A_Cancel_Sm_N.png" }, "Completed": { cUIName: AnnotsString.IDS_STATE_COMPLETED, cIconName: "A_Complete_Sm_N.png" } }, cDefault: "None" }); Collab.addStateModel ({ cName: "CollabStatus", cUIName: AnnotsString.IDS_ACTION_COLLAB, oStates: { "Modified": AnnotsString.IDS_STATE_COLLAB_ACTIVE, "Completed": AnnotsString.IDS_STATE_COLLAB_COMPLETED }, cDefault: "Modified", bHidden: true }); Collab.addStateModel ({ cName: "Marked", cUIName: AnnotsString.IDS_ACTION_MARKED, oStates: { "Marked": AnnotsString.IDS_STATE_MARKED, "Unmarked": AnnotsString.IDS_STATE_UNMARKED }, cDefault: "Unmarked", bHidden: true, bHistory: false }); Collab.addStateModel ({ cName: "Privacy", cUIName: AnnotsString.IDS_ACTION_PRIVACY, oStates: { "Public": AnnotsString.IDS_STATE_PUBLIC, "Private": AnnotsString.IDS_STATE_PRIVATE }, cDefault: "Public", bHidden: true, bHistory: false }); Collab.addStateModel ({ cName: "ApprovalStatus", cUIName: AnnotsString.IDS_ACTION_APPROVAL, oStates: { "None": AnnotsString.IDS_STATE_NONE, "Approve": AnnotsString.IDS_STATE_APPROVAL_CONFIRM, "Reject": AnnotsString.IDS_STATE_APPROVAL_DENY }, cDefault: "None", bHidden: true, bHistory: false }); Collab.addStateModel ({ cName: "Basic", cUIName: AnnotsString.IDS_ACTION_BASIC, oStates: { "Created": AnnotsString.IDS_STATE_CREATED, "Modified": AnnotsString.IDS_STATE_MODIFIED, "Deleted": AnnotsString.IDS_STATE_DELETED }, cDefault: "Created", bHidden: true, bHistory: true }); Collab.invite = ANDefaultInvite; } }); } catch(e) { console.println(e.extMessage); } try { //Following function has been made global while fixing the bug 2737699, as it is neeed at mulitple locations. function encodeSMBurl(path) { if (path && (path.substr(0,4) == "smb:") && path.indexOf("#") == -1) { var escapedPath = "smb:"; path = path.substr(4); var components = path.split('/'); for(var i in components) { var cmp = components[i]; escapedPath = escapedPath + encodeURIComponent(cmp) + "/"; DebugAlert("escapedPath :" + escapedPath); } var len = escapedPath.length; return escapedPath.substr(0, len-1); } } //Following function has been made global while fixing the bug 2737699, as it is neeed at mulitple locations. // This function is to ensure that Shared Review location and file location should not be same. function globalCheckForSameSMBLocation (smbURL , data) { //Changes for BUG #1805232 //SR initiation fails when trying to upload the shared review file on the shared location where the file is originally kept //Get smb folder chosen for comment repository as UNC path var smbFolderChosenAsUNC = smbURL; smbFolderChosenAsUNC = smbFolderChosenAsUNC.replace(/\/+$/,"");//remove trailing slashes //Get File Location chosen (without the file name) as UNC path var fileLocationChosen = data.doc.path; fileLocationChosen = fileLocationChosen.substring(0, fileLocationChosen.lastIndexOf('/'));//get rid of filename app.beginPriv(); fileLocationChosen = Collab.convertDIPathToPlatformPath(fileLocationChosen, true);//2nd param is true since we want to resolve mount paths as well app.endPriv(); fileLocationChosen = fileLocationChosen.replace(/\/+$/,"");//remove trailing slashes if(smbFolderChosenAsUNC.toLowerCase() == fileLocationChosen.toLowerCase()) { data.Error_DocumentLocationAndRepositoryLocationSame = true; } else { data.Error_DocumentLocationAndRepositoryLocationSame = false; } } function DebugAlert(string) { app.beginPriv(); //if((typeof app._DEBUG != "undefined") && app._DEBUG) // app.alert(string); app.endPriv(); } function DebugThrow(e) { app.beginPriv(); var isDebug = Collab.debugPrintln; app.endPriv(); throw (""); // Note: dikumar: bug 1627205. This is done to not to show any thro messages on the console. // To re-enable it for the next release remove the throw above and uncomment the following code. /* if (isDebug) throw (e); else//TODO: dikumar: do nothing here throw (e); */ } function SharedString(strID) { return AnnotsString[strID]; } function getDriver(reviewType) { switch(reviewType) { case "SharedReview": return "urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com"; break; case "FormDistribution": return "urn://ns.adobe.com/Collaboration/Forms/Acrobat.com"; break; default: return ""; break; } } const IWEmailSteps = [ { name: "IWEmailStepDescription", creator: function(data) { return IWEmailStepDescription(data.reviewType); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, ]; const IWEmailFormSteps = [ { name: "IWEmailStepDescription", creator: function(data) { return IWEmailStepDescription(data.reviewType); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, ]; const IWSteps = [ { //step 0: if no file is opened, open the browse for file dialog name: "IWBrowseDoc", creator: function(data) { return IWBrowseDoc("SharedReview", false); }, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, { //step 1: server selection step name: "IWDistributionServer", creator: function(data) { return IWDistributionServer("SharedReview", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_SR, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, { //server selection step name: "IWIdentityDialog", creator: function(data) { return IWIdentityDialog("SharedReview", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_SR, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, { name: "IWSharedReviewDocCenterLogin", creator: function(data) { return IWSharedReviewDocCenterLogin("SharedReview"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("SharedReview"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("SharedReview"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, noSteps: true, }, { name: "IWNewInternalServer", creator: function(data) { return IWNewInternalServer(data, "SharedReview", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADING_SR, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps:true, }, { name: "IWDistributeStepDescription", creator: function(data) { return IWDistributeStepDescription("SharedReview", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_SR, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, { name: "IWSaveProfileStepDescription", creator: function(data) { return IWSaveProfileStepDescription("SharedReview"); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, { name: "IWEmailStepDescription", creator: function(data) { return IWEmailStepDescription("SharedReview"); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, text: "", noSteps: true, }, ]; const IWFDSteps = [ { //step 0: if no file is opened, open the browse for file dialog name: "IWBrowseDoc", creator: function(data) { return IWBrowseDoc("FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { //step 1: server selection step name: "IWDistributionServer", creator: function(data) { return IWDistributionServer("FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_FD, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { //server selection step name: "IWIdentityDialog", creator: function(data) { return IWIdentityDialog("FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_FD, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { name: "IWSharedReviewDocCenterLogin", creator: function(data) { return IWSharedReviewDocCenterLogin("FormDistribution"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("FormDistribution"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("FormDistribution"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, noSteps: true, }, //step for specifying submit button { name: "IWSubmitButton", creator: function(data) { return IWSubmitButton("FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_FD, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { name: "IWNewInternalServer", creator: function(data) { return IWNewInternalServer(data, "FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADING_FD, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps:true, }, { name: "IWDistributeStepDescription", creator: function(data) { return IWDistributeStepDescription("FormDistribution", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_FD, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { name: "IWSaveProfileStepDescription", creator: function(data) { return IWSaveProfileStepDescription("FormDistribution"); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, { name: "IWEmailStepDescription", creator: function(data) { return IWEmailStepDescription("FormDistribution"); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, text: "", noSteps: true, }, ]; const ShareFileSteps = [ { name: "IWSharedReviewDocCenterLogin", creator: function(data) { return IWSharedReviewDocCenterLogin("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SF, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SF, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SF, noSteps: true, }, { name: "IWBrowseAnyDoc", creator: function(data) { return IWBrowseAnyDoc("ShareFile", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_SF, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SF, //text: "", noSteps: true, }, { name: "IWEmailStepDescription", creator: function(data) { return IWEmailStepDescription("ShareFile"); }, heading: "", title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SF, text: "", noSteps: true, } ]; const UploadFileSteps = [ { name: "IWSharedReviewDocCenterLogin", creator: function(data) { return IWSharedReviewDocCenterLogin("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF, noSteps: true, }, { name: "IWBrowseAnyDoc", creator: function(data) { return IWBrowseAnyDoc("ShareFile", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_UF, title: AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF, //text: "", noSteps: true, }, ]; const DocCenterLoginSteps = [ { name: "IWSharedReviewDocCenterLogin", creator: function(data) { return IWSharedReviewDocCenterLogin("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LOGIN, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_CONFIRM_TITLE, noSteps: true, }, ]; const DocCenterSignupSteps = [ { name: "IWSharedReviewDocCenterCreateID", creator: function(data) { return IWSharedReviewDocCenterCreateID("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE, noSteps: true, }, { name: "IWSharedReviewDocCenterCreateConfirm", creator: function(data) { return IWSharedReviewDocCenterCreateConfirm("ShareFile"); }, heading: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_CONFIRM_TITLE, noSteps: true, }, ]; function GetStepNum (name, reviewType) { switch (reviewType) { case "SharedReview": { switch (name) { case "IWBrowseDoc": { return 0; break; } case "IWDistributionServer": { return 1; break; } case "IWIdentityDialog": { return 2; break; } case "IWSharedReviewDocCenterLogin": { return 3; break; } case "IWSharedReviewDocCenterCreateID": { return 4; break; } case "IWSharedReviewDocCenterCreateConfirm": { return 5; break; } case "IWNewInternalServer": { return 6; break; } case "IWDistributeStepDescription": { return 7; break; } case "IWSaveProfileStepDescription": { return 8; break; } case "IWEmailStepDescription": { return 9; break; } } break; } case "FormDistribution": { switch (name) { case "IWBrowseDoc": { return 0; break; } case "IWDistributionServer": { return 1; break; } case "IWIdentityDialog": { return 2; break; } case "IWSharedReviewDocCenterLogin": { return 3; break; } case "IWSharedReviewDocCenterCreateID": { return 4; break; } case "IWSharedReviewDocCenterCreateConfirm": { return 5; break; } case "IWSubmitButton": { return 6; break; } case "IWNewInternalServer": { return 7; break; } case "IWDistributeStepDescription": { return 8; break; } case "IWSaveProfileStepDescription": { return 9; break; } case "IWEmailStepDescription": { return 10; break; } } break; } case "ShareFile": { switch (name) { case "IWSharedReviewDocCenterLogin": { return 0; break; } case "IWSharedReviewDocCenterCreateID": { return 1; break; } case "IWSharedReviewDocCenterCreateConfirm": { return 2; break; } case "IWBrowseAnyDoc": { return 3; break; } case "IWEmailStepDescription": { return 4; break; } } break; } case "DocCenterLogin": { switch (name) { case "IWSharedReviewDocCenterLogin": { return 0; break; } case "IWSharedReviewDocCenterCreateID": { return 1; break; } case "IWSharedReviewDocCenterCreateConfirm": { return 2; break; } break; } } case "DocCenterSignup": { switch (name) { case "IWSharedReviewDocCenterCreateID": { return 0; break; } case "IWSharedReviewDocCenterCreateConfirm": { return 1; break; } break; } } default: { //DebugThrow ("The Review Type is not defined, Some thing wrong"); return -1; break; } } //DebugThrow ("Either Review Type or name is incorrect/undefined!"); return -1; } const OldSRIWsteps = [ { // Step 1: Introduction creator: function(data) { return CBCreateGettingStartedStepDescription("SharedReview", false); }, heading: AnnotsString.IDS_SHARED_REVIEW_GETTING_STARTED_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TITLE, text: (app.viewerType.match('Exchange-Pro') != null) ? AnnotsString.IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TEXT_PRO : AnnotsString.IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TEXT_STD, }, { // Step 2: Distribute PDF creator: function(data) { return CBSharedReviewDistributeStepDescription(); }, heading: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_STEP_TITLE, text: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_STEP_TEXT, tip: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_TIP, }, { // Step 3: Invite Reviewers creator: function(data) { return CBSharedReviewInviteReviewers(); }, heading: AnnotsString.IDS_SHARED_REVIEW_SEND_INVITE_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_SEND_INVITE_STEP_TITLE, text: AnnotsString.IDS_SHARED_REVIEW_SEND_INVITE_STEP_TEXT, tip: AnnotsString.IDS_SHARED_REVIEW_SEND_INVITE_STEP_TIP, }, { // Step 4: Preview Invitation creator: function(data) { return CBCreateSendInvitationStepDescription(AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_MESSAGE_HEADING, false); }, heading: AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_TITLE, title: AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_HEADING, text: AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_TEXT, }, ]; if (typeof Collab != "undefined") { // really the width of PART of each panel //Initially we were usign the wizard width in the AlertWithHelp dialog. Now introducing a new width var. Collab.AlertWithHelpWidth = (app.platform == "WIN") ? 508 : 508; //We require a width=592, subtract 2*wizardMarginWidth. So, 592-(2*25)=542 Collab.wizardWidth = (app.platform == "WIN") ? 592 : 575; // really the height of PART of each panel // We require the wizard height to be 482. The row of buttons below is seperate, whose height is 54 (11+32+11). So 482-54=428 Collab.wizardHeight = 428; Collab.buttonRowMarginHeight = 11; Collab.buttonRowMarginWidth = 11; Collab.wizardMarginWidth = 25; Collab.marginWidth = 20; Collab.marginHeight = 20; Collab.tipIconWidth = 32; Collab.tipIconHeight = 32; Collab.navIconWidth = 12; Collab.navIconHeight = 12; function ANDumpObj(obj) { for (prop in obj) DebugPrintln(prop + " => " + obj[prop]); } function DebugPrintln(obj) { app.beginPriv(); if (Collab.debugPrintln) console.println(obj) else//do nothing ; app.endPriv(); } function TestReview() { app.beginPriv(); var doc = Collab.GetActiveDocIW(); app.endPriv(); var method = "EMAIL"; // can also be: UPLOAD var params = { doc: doc, initiator: "me@example.com", id: "some-guid", source: "smb://camelot/sync/test", driver: "urn://ns.adobe.com/Collaboration/SharedReview/SMB", invitees: "invitee1@example.com, invitee2@example.com", cc: "optional1@copmany.com", sentDate: new Date(), // deadDate: (data.internalDeadline != "") ? data.oDeadline : false, // ui: false, distributionMethod: method, requireSave: method == "UPLOAD", versionInfo: 9, accessLevel: 0, bezelMessage: "Your document has been distributed to reviewers as an email attachment and saved to your local hard drive.", }; console.println("Registering review - params:"); for (var prop in params) console.println(prop + " => " + params[prop]); // Register the review for the initiator BEFORE adding to the doc app.beginPriv(); Collab.registerReview(params); app.endPriv(); } function ANCreateMLSElement(name, width) { var m = name.match(/^\%bullet\%(.*)/); var e = { type: "static_text", name: name, wrap_name: true, width: width }; if(m) { e.width = { diff: [ width, { zstring_width: "\u2022" } ] }; e.name = m[1]; return { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: "\u2022" }, e ] }; } return e; } function ANCreateMLSEElementsFromArray(nameOrArray, width) { if(nameOrArray == undefined) return []; if(typeof nameOrArray.length == "undefined") return [ ANCreateMLSElement(nameOrArray, width) ]; var a = []; for(var i in nameOrArray) a = a.concat( [ ANCreateMLSElement(nameOrArray[i], width) ] ); return a; } function ANCreateTipElements(tip, width, tipDesc) { if(!tip) return []; return [ { type: "cluster", width: width, elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "tip1", width: Collab.tipIconWidth, height: Collab.tipIconHeight }, ANCreateMLSElement(tip, { diff: [ width, Collab.tipIconWidth * 2 ] }) ] } ].concat(tipDesc ? [ { type: "view", align: "align_right", elements: tipDesc } ] : []) } ]; } function ANCreateSkipElements(skipLabel, width) { if(!skipLabel) return []; return [ { type: "view", width: width, elements: [ { type: "check_box", item_id: "skip", alignment: "align_left", name: AnnotsString.IDS_DONT_SHOW_AGAIN } ] } ]; } function CBSetProductVariant(s) { return s.replace(/{cProductVariant}/g, app.viewerType.match('Exchange') != null ? AnnotsString.IDS_PRODUCT_VARIANT_ACROBAT : AnnotsString.IDS_PRODUCT_VARIANT_READER); } function CBIsValidEmail(addr) { var emailRE = /^([a-zA-Z0-9_\-\.\/]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,63}|[0-9]{1,3})(\]?)$/; return (addr != undefined && addr != "" && addr.match(emailRE) != null); } function ANFancyAlertImpl(title, content, tip, buttons, dontShowMeAgain, ok, cancel, other, width, honourDSMACancelArg) { var alertWidth = width ? width : Collab.AlertWithHelpWidth ; //whether to honour Don't show me again pref of user when he/she chooses the cancel option var honourDSMACancel = honourDSMACancelArg ? honourDSMACancelArg : false; // skeletal layout description var desc = { content: content, dontShowMeAgain: dontShowMeAgain }; // content eelment array var ca = []; // for each "content" element for(var i in content) { var cc = content[i]; var cid = "icn" + i; var item = []; var header = undefined; if(cc.header) header = { type: "static_text", name: cc.header, font: "dialog", bold: true, alignment: "align_fill" }; // maybe add a bullet if(cc.bullet) item[item.length] = { type: "static_text", name: "\u2022" }; // maybe add an icon if(cc.icon) item[item.length] = { type: "image", item_id: cid, width: cc.icon.width, height: cc.icon.height }; // throw them all into a row view var mlse = cc.text ? ANCreateMLSElement(cc.text, { diff: [ alertWidth, (cc.icon ? cc.icon.width : { zstring_width: "\u2022" }) ] }) : []; ca[ca.length] = { type: "view", align_children: "align_row", elements: item.concat(header ? [{ type: "view", align_children: "align_left", alignment: "align_fill", elements: [ header ].concat([mlse]) }] : [mlse]) }; } // add a tip if appropriate if(tip) { var te = ANCreateTipElements(tip, alertWidth); ca = ca.concat(te); } var ba = []; // add a bunch of buttons into an element array for(var i in buttons) { var bc = buttons[i]; var bid = "btn" + i; ba[ba.length] = { type: "button", item_id: bid, name: bc, alignment: "align_right" }; // throw a handler for the button in desc[bid] = eval("(function(dialog) { dialog.end('" + bid + "'); })"); } // basic buttons if(ok && cancel && other) { ba[ba.length] = { type: "ok_cancel_other", ok_name: ok, cancel_name: cancel, other_name: other, alignment: "align_right" } } else if(ok && cancel) { ba[ba.length] = { type: "ok_cancel", ok_name: ok, cancel_name: cancel, alignment: "align_right" } } else if(ok) { ba[ba.length] = { type: "ok", ok_name: ok, alignment: "align_right" } } // add the buttons into the larger desc ca[ca.length] = { type: "view", align_children: "align_row", elements: (dontShowMeAgain ? [ { type: "check_box", item_id: "dsma", name: (dontShowMeAgain.label ? dontShowMeAgain.label : AnnotsString.IDS_DONT_SHOW_AGAIN), alignment: "align_left" } ] : []) }; ca[ca.length] = { type: "view", align_children: "align_row", alignment: "align_right", elements: ([]).concat(ba) }; // add an init method to set up icons desc.initialize = function(dialog) { var il = { tip1: "C_Info_Xl_N.png", dsma: this.dontShowMeAgain ? this.dontShowMeAgain.pref : false }; for(var i in this.content) { var cc = this.content[i]; if(cc.icon) il["icn" + i] = cc.icon; } dialog.load(il); }; // store any change to the don't show me again saveChangesToDSMA = function(dialog){ if (typeof this.dontShowMeAgain != "undefined") this.dontShowMeAgain.pref = dialog.store()["dsma"]; return true; }; desc.commit = saveChangesToDSMA; // handle the "other" click desc.other = function(dialog) { dialog.end("other"); } if (honourDSMACancel) desc.cancel = saveChangesToDSMA; // full description desc.description = { name: title, elements: [ { type: "view", align_children: "align_left", elements: ca } ] }; app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); return result; } function ANPlatformPathToURL(url) { if (url.length > 0) { if (url.substr(0,2) == "\\\\") // convert from UNC path { url = "smb:" + url.replace(/\\/g, "/"); } else if (app.platform == "WIN" && url.length >= 2) // convert from mapped drive path { var drive = url.charAt(0); if ( ( (drive >= 'a' && drive <= 'z') || (drive >= 'A' && drive <= 'Z') ) && url.charAt(1) == ':') { if (url.substr(-1) != "\\") url += "\\"; app.beginPriv(); url = Collab.convertMappedDrivePathToSMBURL(url); app.endPriv(); } } // ensure proper scheme specifier if (!url.match(/^[a-z]+:.*/)) { if (url.substr(0,2) != "//") url = "//" + url; url = "smb:" + url; } } return url; } // Takes an SMB URL and converts it to a platform-specific form. On Windows this // function returns a UNC path; on Mac it returns the SMB URL. function ANSMBURLToPlatformPath(smbUrl) { DebugAlert("smbUrl 1" + smbUrl); if (app.platform == "WIN") { // strip off the smb: portion of the URL: if (smbUrl && (smbUrl.substr(0,4) == "smb:")) { smbUrl = smbUrl.substr(4); smbUrl = smbUrl.replace(/\//g, "\\"); } } return smbUrl; } // This is a utility functions for manipulating email addresses function SplitAddrs(addrs) { var addrVec = addrs.split(/\;|\n|\r\n|\r/); var resultVec = []; var j = 0; for(var i in addrVec) { var addr = addrVec[i].replace(/^\s*(\S(?:.*\S)?)\s*$/, "$1"); if(addr) resultVec[j++] = addr; } return resultVec; } function CBTrustPropagateWiz(w) { var steps = w.steps; for(var p in steps) steps[p] = ANTrustPropagateAll(steps[p]); return w; } function CBCreateStepNavElements(navs, activeStep) { var result = []; for(var i in navs) { var iconElement = { type: "image", width: Collab.navIconWidth, height: Collab.navIconHeight }; var staticElement = { type: "static_text", name: AnnotsString.IDS_TITLE_TMPL }; staticElement.name = staticElement.name.replace(/\%num\%/, 1 + (1 * i)); staticElement.name = staticElement.name.replace(/\%text\%/, navs[i]); if((1 * i) == (1 * activeStep)) iconElement.item_id = "nav1"; result = result.concat([{ type: "view", align_children: "align_row", elements: [iconElement, staticElement] }]); } return result; } function CBStartWizStep(dialog, title, navs, activeStep, heading, text, tip, tipDesc, finishString, description, noSteps) { var cancelPrevNextFinishWidth = { max: [ { string_width: AnnotsString.IDS_CANCEL }, { string_width: AnnotsString.IDS_PREVIOUS }, { string_width: AnnotsString.IDS_NEXT }, { string_width: finishString }, {string_width: AnnotsString.IDS_UPLOAD} ] }; var wizFrames = []; if(noSteps == undefined || !noSteps) { wizFrames[wizFrames.length] = { type: "cluster", align_children: "align_left", //back_color: "white", //item_id: "step", elements: [ { type: "static_text", name: AnnotsString.IDS_STEPS, font: "dialog", bold: true } ].concat( CBCreateStepNavElements(navs, activeStep) ) }; } wizFrames[wizFrames.length] = { type: "view", align_children: "align_left", elements: [ { type: "cluster", height: Collab.wizardHeight, elements: [ { type: "static_text", name: heading, width: Collab.wizardWidth, font: "dialog", bold: true } ].concat( ANCreateMLSEElementsFromArray(text, Collab.wizardWidth) ).concat( description.description ).concat( ANCreateTipElements(tip, Collab.wizardWidth, tipDesc) ) }, { type: "view", align_children: "align_right", alignment: "align_right", elements: [ { type: "view", align_children: "align_row", alignment: "align_right", elements: [ { type: "button", name: AnnotsString.IDS_CANCEL, item_id: "cncl", width: cancelPrevNextFinishWidth }, { type: "gap", width: 16 }, { type: "button", name: "*prev*", item_id: "prev", width: cancelPrevNextFinishWidth }, { type: "button", name: "*next*", item_id: "next", width: cancelPrevNextFinishWidth } ] } ] } ] }; // wrap the step's description with generic wizard trimmings var stepDescription = ANTrustPropagateAll({ next: function(dialog) { dialog.next(); }, prev: function(dialog) { dialog.previous(); }, cncl: function(dialog) { dialog.cancel(); }, description: { name: title, height: Collab.wizardHeight, elements: [ { type: "view", align_children: "align_distribute", elements: wizFrames, } ] } }); // make sure to move callbacks, etc. up to the top level for(var i in description) if(i != "description") stepDescription[i] = description[i]; // stick the dialog ref in there stepDescription.dialog = dialog; // take over the dialog app.beginPriv(); app.execDialog(stepDescription, dialog); app.endPriv(); // set up the default buttons dialog.makeDefault("next"); dialog.makeCancel("cncl"); // XXX // console.println("wizard bounds: " + app.measureDialog({description: stepDescription.description}).toSource()); // call any init method if(typeof stepDescription.initialize != "undefined") stepDescription.initialize(dialog); return stepDescription; } function CBRunSimpleWiz(wizard, startStepNum, endStepNum, data) { var description = ANTrustPropagateAll({ wizard: wizard, curStepNum: startStepNum, endStepNum: endStepNum < 0 ? (wizard.steps.length - 1) : endStepNum, data: data, next: function() { this.commitCurStep(true); var nextStep = this.curStepNum; var filter = this.wizard.stepFilter; while(nextStep < this.endStepNum) { if(!filter(this.data, nextStep + 1)) { if(nextStep < this.endStepNum) this.startStep(nextStep + 1); else this.dialog.end("fnsh"); break; } else nextStep += 1; } if(nextStep >= this.endStepNum) this.dialog.end("fnsh"); }, previous: function() { this.commitCurStep(false); var prevStep = this.curStepNum; var filter = this.wizard.stepFilter; while(true) { if(prevStep == 0 || !filter(this.data, prevStep -1)) { this.startStep(prevStep - 1); break; } else prevStep -= 1; } }, cancel: function() { // this might have cleanup side effects so call it this.commitCurStep(false); this.dialog.end("cncl"); }, commitCurStep: function(next) { if(this.curStep && this.curStep.commit) this.curStep.commit(this.dialog, next); }, startStep: function(stepNum) { DebugPrintln("$$$> in startStep: step number = " + stepNum); var wizStep = this.wizard.steps[stepNum]; this.curDescription = wizStep.creator(this.data); this.curDescription.data = this.data; this.curStepNum = stepNum; var titles = []; for(var i in this.wizard.steps) titles = titles.concat([this.wizard.steps[i].title]); //dikumar: temporarily changing the title. //var wiztitle = this.wizard.title.replace(/\%stepnum\%/, this.curStepNum + 1).replace(/\%stepcount\%/, this.wizard.steps.length); var wiztitle = this.wizard.steps[this.curStepNum].title; this.curStep = CBStartWizStep(this.dialog, wiztitle, titles, this.curStepNum, wizStep.heading, wizStep.text ? wizStep.text.split(/\n|\r\n|\r/) : null, wizStep.tip, wizStep.tipDesc, this.wizard.finishString, this.curDescription, wizStep.noSteps); this.dialog.load({ next: stepNum < this.endStepNum ? AnnotsString.IDS_NEXT : wizard.finishString, prev: AnnotsString.IDS_PREVIOUS, cncl: AnnotsString.IDS_CANCEL, tip1: "C_Info_Xl_N.png", nav1: "C_GotoNextView_Sm_N.png" // XXX }); this.dialog.enable({ prev: stepNum > 0 }); }, initialize: function(dialog) { // basic setup this.dialog = dialog; dialog.monitor = this; app.beginPriv(); dialog.next = app.trustPropagatorFunction(function() { this.monitor.next(); }); dialog.previous = app.trustPropagatorFunction(function() { this.monitor.previous(); }); dialog.cancel = app.trustPropagatorFunction(function() { this.monitor.cancel(); }); app.endPriv(); // Default Step Filter Impl if(typeof this.wizard.stepFilter == "undefined") this.wizard.stepFilter = function(data, stepNum) { return false; } this.startStep(this.curStepNum); }, description: { width: Collab.wizardWidth, height: Collab.wizardHeight } }); app.beginPriv(); description.data.result = app.execDialog(description); app.endPriv(); return description.data; } function CBStartWizStepNew(dialog, title, navs, activeStep, heading, text, tip, tipDesc, finishString, description, noSteps) { var cancelPrevNextFinishWidth = { max: [ { string_width: AnnotsString.IDS_CANCEL }, { string_width: AnnotsString.IDS_PREVIOUS }, { string_width: AnnotsString.IDS_NEXT }, { string_width: finishString }, {string_width: AnnotsString.IDS_UPLOAD} ] }; var wizFrames = []; wizFrames[wizFrames.length] = { type: "view", alignment: "align_fill", align_children: "align_left", item_id: "mgrp", back_color: "dialogBackground", gradient_direction: "topToBottom", gradient_type: "darkToLight", //margin_width: Collab.wizardMarginWidth, elements: [ { type: "view", elements: [ ] .concat( ANCreateMLSEElementsFromArray(text, Collab.wizardWidth) ).concat( description.description ).concat( ANCreateTipElements(tip, Collab.wizardWidth, tipDesc) ) }, { type: "view", align_children: "align_left", alignment: "align_fill", width: Collab.wizardWidth, margin_height: Collab.buttonRowMarginHeight, margin_width: Collab.wizardMarginWidth, elements: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_HELP, item_id: "help", alignment: "align_left", width: cancelPrevNextFinishWidth }, { type: "gap", alignment: "align_fill", }, { type: "button", name: "*prev*", item_id: "prev", width: cancelPrevNextFinishWidth }, { type: "button", name: "*next*", item_id: "next", width: cancelPrevNextFinishWidth }, { type: "button", name: AnnotsString.IDS_CANCEL, item_id: "cncl", width: cancelPrevNextFinishWidth }, ] } ] } ] }; // wrap the step's description with generic wizard trimmings var stepDescription = ANTrustPropagateAll({ next: function(dialog) { dialog.next(); }, prev: function(dialog) { dialog.previous(); }, cncl: function(dialog) { dialog.cancel(); }, description: { name: title, margin_width: 0, margin_height: 0, height: Collab.wizardHeight, elements: [ { type: "view", align_children: "align_distribute", elements: wizFrames, } ] } }); // make sure to move callbacks, etc. up to the top level for(var i in description) if(i != "description") stepDescription[i] = description[i]; // stick the dialog ref in there stepDescription.dialog = dialog; // take over the dialog app.beginPriv(); app.execDialog(stepDescription, dialog); app.endPriv(); // set up the default buttons dialog.makeDefault("next"); dialog.makeCancel("cncl"); // XXX // DebugPrintln("wizard bounds: " + app.measureDialog({description: stepDescription.description}).toSource()); // call any init method if(typeof stepDescription.initialize != "undefined") stepDescription.initialize(dialog); return stepDescription; } // This is a modified version (new) of the existing implementation of the wizard // This should be used in the case of // 1. shared review // 2. forms // 3. file sharing // 4. connect function CBRunSimpleWizNew(wizard, startStepNum, endStepNum, data) { var description = ANTrustPropagateAll({ wizard: wizard, curStepNum: startStepNum, endStepNum: endStepNum < 0 ? (wizard.steps.length - 1) : endStepNum, data: data, next: function() { this.commitCurStep(true); if(this.data.delayOpenDoc == true && this.wizard.steps[this.curStepNum].name == "IWBrowseDoc") return; var nextStep = this.getNextStep(); if(nextStep > this.endStepNum) { if ((this.data.reviewType == "ShareFile") || (this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution")) { // Log the finish event for highlights var logEventParams = {}; var startPayloadParams = {}; var addStringToPayloadParams = {}; if(this.data.reviewType == "SharedReview") { logEventParams.cat = "Wizard"; logEventParams.subcat = "SharedReview"; logEventParams.evnt = "Complete"; } else if(this.data.reviewType == "FormDistribution") { logEventParams.cat = "Wizard"; logEventParams.subcat = "FormDistribution"; logEventParams.evnt = "Complete"; } else if(this.data.reviewType == "ShareFile" && data.type == 0) { logEventParams.cat = "Wizard"; logEventParams.subcat = "ShareFile"; logEventParams.evnt = "Complete"; } else if(this.data.reviewType == "ShareFile" && data.type == 1) { logEventParams.cat = "Wizard"; logEventParams.subcat = "UploadFile"; logEventParams.evnt = "Complete"; } app.beginPriv(); Collab.AVUMLogEventWrapper(logEventParams); app.endPriv(); if (this.data.reviewType == "ShareFile") { if(data.type == 0) { startPayloadParams.cat = "ShareFile"; startPayloadParams.subcat = "ShareFilePayload"; startPayloadParams.evnt = "Complete"; } else if(data.type == 1) { startPayloadParams.cat = "UploadFile"; startPayloadParams.subcat = "UploadFilePayload"; startPayloadParams.evnt = "Complete"; } app.beginPriv(); Collab.AVUMStartPayloadWrapper(startPayloadParams); app.endPriv(); } addStringToPayloadParams.name = "Exit_Status"; addStringToPayloadParams.val = "Complete"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); if ((this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution")) { addStringToPayloadParams.name = "Server_Type"; if(data.server) { if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com") addStringToPayloadParams.val = "Acrobat_Com"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/SMB") addStringToPayloadParams.val = "Network_Folder"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") addStringToPayloadParams.val = "SharePoint"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/WebDAV") addStringToPayloadParams.val = "Web_Server"; else if(this.data.reviewType == "FormDistribution" && this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") addStringToPayloadParams.val = "Email"; else addStringToPayloadParams.val = "Unknown"; } else addStringToPayloadParams.val = "Unknown"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } if (this.data.reviewType == "ShareFile") { app.beginPriv(); Collab.AVUMEndPayloadWrapper(); app.endPriv(); } } this.dialog.end("fnsh"); } else this.startStep(nextStep); }, previous: function() { this.commitCurStep(false); var prevStep = this.curStepNum; var filter = this.wizard.stepFilter; var prevStep = this.getPreviousStep(); this.startStep(prevStep); }, cancel: function() { // Log the cancel event for highlights if ((this.data.reviewType == "ShareFile") || (this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution")) { var logEventParams = {}; var startPayloadParams = {}; var addStringToPayloadParams = {}; if(this.data.reviewType == "SharedReview") { logEventParams.cat = "Wizard"; logEventParams.subcat = "SharedReview"; logEventParams.evnt = "Cancel"; } else if(this.data.reviewType == "FormDistribution") { logEventParams.cat = "Wizard"; logEventParams.subcat = "FormDistribution"; logEventParams.evnt = "Cancel"; } else if(this.data.reviewType == "ShareFile" && data.type == 0) { logEventParams.cat = "Wizard"; logEventParams.subcat = "ShareFile"; logEventParams.evnt = "Cancel"; } else if(this.data.reviewType == "ShareFile" && data.type == 1) { logEventParams.cat = "Wizard"; logEventParams.subcat = "UploadFile"; logEventParams.evnt = "Cancel"; } app.beginPriv(); Collab.AVUMLogEventWrapper(logEventParams); app.endPriv(); if (this.data.reviewType == "ShareFile") { if(data.type == 0) { startPayloadParams.cat = "ShareFile"; startPayloadParams.subcat = "ShareFilePayload"; startPayloadParams.evnt = "Cancel"; } else if(data.type == 1) { startPayloadParams.cat = "UploadFile"; startPayloadParams.subcat = "UploadFilePayload"; startPayloadParams.evnt = "Cancel"; } app.beginPriv(); Collab.AVUMStartPayloadWrapper(startPayloadParams); app.endPriv(); } addStringToPayloadParams.name = "Exit_Status"; addStringToPayloadParams.val = "Cancel"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); if ((this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution")) { addStringToPayloadParams.name = "Server_Type"; if(data.server) { if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com") addStringToPayloadParams.val = "Acrobat_Com"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/SMB") addStringToPayloadParams.val = "Network_Folder"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") addStringToPayloadParams.val = "SharePoint"; else if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/WebDAV") addStringToPayloadParams.val = "Web_Server"; else if(this.data.reviewType == "FormDistribution" && this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") addStringToPayloadParams.val = "Email"; else addStringToPayloadParams.val = "Unknown"; } else addStringToPayloadParams.val = "Unknown"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } if (this.data.reviewType == "ShareFile") { app.beginPriv(); Collab.AVUMEndPayloadWrapper(); app.endPriv(); } } // this might have cleanup side effects so call it this.commitCurStep(false); this.dialog.end("cncl"); }, commitCurStep: function(next) { if(this.curStep && this.curStep.commit) this.curStep.commit(this.dialog, next); }, startStep: function(stepNum) { DebugPrintln("$$$> in startStep: step number = " + stepNum); var wizStep = this.wizard.steps[stepNum]; this.curDescription = wizStep.creator(this.data); this.curDescription.data = this.data; this.curStepNum = stepNum; var titles = []; for(var i in this.wizard.steps) titles = titles.concat([this.wizard.steps[i].title]); //dikumar: temporarily changing the title. //var wiztitle = this.wizard.title.replace(/\%stepnum\%/, this.curStepNum + 1).replace(/\%stepcount\%/, this.wizard.steps.length); var wiztitle = this.wizard.steps[this.curStepNum].title; if ((this.data.reviewType == "ShareFile") || (this.data.reviewType == "SharedReview") || (this.data.reviewType == "SharedReviewEmail") || (this.data.reviewType == "FormDistribution") || (this.data.reviewType == "FormDistributionEmail") || (this.data.reviewType == "DocCenterLogin") || (this.data.reviewType == "DocCenterSignup")) this.curStep = CBStartWizStepNew(this.dialog, wiztitle, titles, this.curStepNum, wizStep.heading, wizStep.text ? wizStep.text.split(/\n|\r\n|\r/) : null, wizStep.tip, wizStep.tipDesc, this.wizard.finishString, this.curDescription, wizStep.noSteps); else this.curStep = CBStartWizStep(this.dialog, wiztitle, titles, this.curStepNum, wizStep.heading, wizStep.text ? wizStep.text.split(/\n|\r\n|\r/) : null, wizStep.tip, wizStep.tipDesc, this.wizard.finishString, this.curDescription, wizStep.noSteps); this.dialog.load({ next: stepNum < this.endStepNum ? AnnotsString.IDS_NEXT : wizard.finishString, prev: AnnotsString.IDS_PREVIOUS, cncl: AnnotsString.IDS_CANCEL, tip1: "C_Info_Xl_N.png", nav1: "C_GotoNextView_Sm_N.png" // XXX }); this.dialog.enable({ prev: stepNum >= 0 }); }, initialize: function(dialog) { // basic setup this.dialog = dialog; dialog.monitor = this; app.beginPriv(); dialog.next = app.trustPropagatorFunction(function() { this.monitor.next(); }); dialog.previous = app.trustPropagatorFunction(function() { this.monitor.previous(); }); dialog.cancel = app.trustPropagatorFunction(function() { this.monitor.cancel(); }); app.endPriv(); // Default Step Filter Impl if(typeof this.wizard.stepFilter == "undefined") this.wizard.stepFilter = function(data, stepNum) { return false; } this.startStep(this.curStepNum); }, // This is a representation of the state machine // This function returns the next step in a wizard based on the current state and the values in data getNextStep : function() { var wizard = this.wizard; var data = this.data; var curStepNum = this.curStepNum; var endStepNum = this.endStepNum; var nextStep = curStepNum; var nextStepName = "noFunc"; var filter = wizard.stepFilter; if (data.reviewType == "SharedReview") { switch (this.wizard.steps[curStepNum].name) { case "IWBrowseDoc": { //if there is an existing AlwaysUseServer, // Get the server var alwaysUseServer = getAlwaysUseServerValue(this.data.reviewType); if (alwaysUseServer != undefined) { // Do the IWDistributionServer init stuff var oldName = data.doc.documentFileName; var oldPath = data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT);; data.cDocumentPath = newPath + data.cDocumentName; data.server = alwaysUseServer; data.addInternalServer = false; if (data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) data.UseDocumentCenter = true; else data.UseDocumentCenter = false; if (this.data.UseDocumentCenter) { DebugAlert("browsedoc step\nuse dc\ndone dist server commit work\nnow checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step nextStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("Silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } else { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else { DistributionServerStepCommitWork(data); //the user chose a legacy server, so jump to email step. nextStepName = "IWEmailStepDescription"; } } } else nextStepName = "IWDistributionServer"; nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWDistributionServer": { if (this.data.addInternalServer) nextStepName = "IWNewInternalServer"; else { if (this.data.UseDocumentCenter) { DebugAlert("checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step nextStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } else { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else { DistributionServerStepCommitWork(data); //the user chose a legacy server, so jump to email step. nextStepName = "IWEmailStepDescription"; } } } nextStep = GetStepNum(nextStepName, data.reviewType); // select server profile or add new server break } case "IWSharedReviewDocCenterLogin": { if(this.data.signup==true) nextStepName = "IWSharedReviewDocCenterCreateID"; else { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWSharedReviewDocCenterCreateConfirm": { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWDistributeStepDescription": { if (this.data.addInternalServer) nextStepName = "IWSaveProfileStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); // select server profile or add new server break } case "IWIdentityDialog": { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); break } case "IWNewInternalServer": { nextStepName = "IWDistributeStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); // select server profile or add new server break } case "IWSaveProfileStepDescription": { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else { //the user chose a legacy server, so jump to email step. nextStepName = "IWEmailStepDescription"; } nextStep = GetStepNum(nextStepName, data.reviewType); break } } if (nextStepName == "noFunc") { while(nextStep <= endStepNum) { if(!filter(data, nextStep + 1)) { if(nextStep <= endStepNum) nextStep += 1; else nextStep = endStepNum; break; } else nextStep += 1; } } return nextStep; } else if (data.reviewType == "FormDistribution") { DebugAlert("Current step name is :"+this.wizard.steps[curStepNum].name) switch (this.wizard.steps[curStepNum].name) { case "IWBrowseDoc": { var alwaysUseServer = getAlwaysUseServerValue(this.data.reviewType); if (alwaysUseServer != undefined) { // Do the IWDistributionServer init stuff var oldName = data.doc.documentFileName; var oldPath = data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT) + ".pdf"; data.cDocumentPath = newPath + data.cDocumentName; data.addInternalServer = false; data.server = alwaysUseServer; if(data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") { nextStepName = "IWDistributeStepDescription"; DebugAlert("FD getnext step data.server.Settings.cSetting" + data.server.Settings.cSetting); } else { if (data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) data.UseDocumentCenter = true; else data.UseDocumentCenter = false; if (this.data.UseDocumentCenter) { DebugAlert("browsedoc step\nuse dc\ndone dist server commit work\nnow checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/Forms/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step nextStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("Silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } else { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else if(data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { DistributionServerStepCommitWork(data); startStepName = "IWDistributeStepDescription"; } else if(data.server.UI == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { DistributionServerStepCommitWork(data); startStepName = "IWNewInternalServer"; } else { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } } DebugAlert("asdfasf" + data.server.Settings.cSetting); } else nextStepName = "IWDistributionServer"; nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWDistributionServer": { if (this.data.addInternalServer == true) nextStepName = "IWNewInternalServer"; else if((this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/InternalServer")) nextStepName = "IWNewInternalServer"; else if(this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") { if(this.data.placeSubmitButton == true) nextStepName = "IWSubmitButton"; else nextStepName = "IWDistributeStepDescription"; } else { if (this.data.UseDocumentCenter) { DebugAlert("checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/Forms/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step nextStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } else { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else if(data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { DistributionServerStepCommitWork(data); startStepName = "IWDistributeStepDescription"; } else if(data.server.UI == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { DistributionServerStepCommitWork(data); startStepName = "IWNewInternalServer"; } else { //the user chose a legacy server, so jump to email step. DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } } DebugAlert("server type :" + this.data.serverType); //DebugAlert("isIdentityInfoPresent :" + this.data.isIdentityInfoPresent); DebugAlert("is submit button present :" + this.data.placeSubmitButton); nextStep = GetStepNum(nextStepName, data.reviewType); // // select server profile or add new server break } case "IWSharedReviewDocCenterLogin": { if(this.data.signup==true) nextStepName = "IWSharedReviewDocCenterCreateID"; else { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWSharedReviewDocCenterCreateConfirm": { DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWIdentityDialog": { DistributionServerStepCommitWork(data); if(data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { nextStepName = "IWDistributeStepDescription"; } else if(data.server.UI == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { nextStepName = "IWNewInternalServer"; } else { nextStepName = "IWEmailStepDescription"; } nextStep = GetStepNum(nextStepName, data.reviewType); break } case "IWDistributeStepDescription": { if (this.data.addInternalServer == true) { nextStepName = "IWSaveProfileStepDescription"; } else if((this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/InternalServer")) nextStepName = "IWSaveProfileStepDescription"; else if (this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else { //the user chose a legacy server, so jump to email step. DistributionServerStepCommitWork(data); nextStepName = "IWEmailStepDescription"; } } nextStep = GetStepNum(nextStepName, data.reviewType); // select server profile or add new server break } case "IWNewInternalServer": { nextStepName = "IWDistributeStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); // select server profile or add new server break } case "IWSaveProfileStepDescription": { if(ANValidateIdentity() == false) nextStepName = "IWIdentityDialog"; else { //the user chose a legacy server, so jump to email step. nextStepName = "IWEmailStepDescription"; } nextStep = GetStepNum(nextStepName, data.reviewType); break } }// end switch if (nextStepName == "noFunc") { while(nextStep <= endStepNum) { if(!filter(data, nextStep + 1)) { if(nextStep <= endStepNum) nextStep += 1; else nextStep = endStepNum; break; } else nextStep += 1; } } return nextStep; } else if (data.reviewType == "ShareFile") { DebugAlert("GetNext step for ShareFile: Current step name is :"+this.wizard.steps[curStepNum].name) switch (this.wizard.steps[curStepNum].name) { case "IWSharedReviewDocCenterLogin": { if(this.data.signup==true) { nextStepName = "IWSharedReviewDocCenterCreateID"; nextStep = GetStepNum(nextStepName, data.reviewType); } else { nextStepName = "IWBrowseAnyDoc"; nextStep = GetStepNum(nextStepName, data.reviewType); } break; } case "IWSharedReviewDocCenterCreateConfirm": { nextStepName = "IWBrowseAnyDoc"; nextStep = GetStepNum(nextStepName, data.reviewType); break; } case "IWBrowseAnyDoc": { DebugAlert("Logged in and files have been chosen, now do we show the email step or not. "); if (data.type == 0) { nextStepName = "IWEmailStepDescription"; nextStep = GetStepNum(nextStepName, data.reviewType); } else //data.type == 1 { nextStep = UploadFileSteps.length; } break } } if (nextStepName == "noFunc") { while(nextStep <= endStepNum) { if(!filter(data, nextStep + 1)) { if(nextStep <= endStepNum) nextStep += 1; else nextStep = endStepNum; break; } else nextStep += 1; } } return nextStep; } else if (data.reviewType == "DocCenterLogin") { DebugAlert("GetNext step for Doc CenterLogin: Current step name is :"+this.wizard.steps[curStepNum].name) switch (this.wizard.steps[curStepNum].name) { case "IWSharedReviewDocCenterLogin": { if(this.data.signup==true) { nextStepName = "IWSharedReviewDocCenterCreateID"; nextStep = GetStepNum(nextStepName, data.reviewType); } else { nextStep = DocCenterLoginSteps.length; } break; } } if (nextStepName == "noFunc") { while(nextStep <= endStepNum) { if(!filter(data, nextStep + 1)) { if(nextStep <= endStepNum) nextStep += 1; else nextStep = endStepNum; break; } else nextStep += 1; } } return nextStep; } else { switch (curStepNum) { default: nextStep += 1; break; } return nextStep; } }, getPreviousStep : function() { var wizard = this.wizard; var data = this.data; var curStepNum = this.curStepNum; var prevStep = curStepNum; var prevStepName = "noFunc"; //DebugPrintln("this.wizard.steps[curStepNum].name:"+this.wizard.steps[curStepNum].name); if (data.reviewType == "SharedReview") { switch (this.wizard.steps[curStepNum].name) { case "IWNewInternalServer": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWSharedReviewDocCenterLogin": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWSharedReviewDocCenterCreateConfirm": { prevStepName = "IWSharedReviewDocCenterLogin"; prevStep = GetStepNum(prevStepName, data.reviewType); break; } case "IWEmailStepDescription": { if (data.deliveryMethodLinkClicked == true) { prevStepName = "IWDistributionServer"; data.deliveryMethodLinkClicked = false; } else { if (data.UseDocumentCenter) prevStepName = "IWSharedReviewDocCenterLogin"; else prevStepName = "IWDistributionServer"; } prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWDistributeStepDescription": { prevStepName = "IWNewInternalServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWIdentityDialog": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } } //DebugPrintln("prevStepName:"+prevStepName); //DebugPrintln("prevStep:"+prevStep); if (prevStepName == "noFunc") { if (prevStep > 0) prevStep -= 1; } return prevStep; } else if (data.reviewType == "FormDistribution") { switch (this.wizard.steps[curStepNum].name) { case "IWEmailStepDescription": { if (data.deliveryMethodLinkClicked == true) { prevStepName = "IWDistributionServer"; data.deliveryMethodLinkClicked = false; } else { if (this.data.UseDocumentCenter) prevStepName = "IWSharedReviewDocCenterLogin"; else if (this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") prevStepName = "IWDistributeStepDescription"; else prevStepName = "IWDistributionServer"; } prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWSharedReviewDocCenterLogin": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWSharedReviewDocCenterCreateConfirm": { prevStepName = "IWSharedReviewDocCenterLogin"; prevStep = GetStepNum(prevStepName, data.reviewType); break; } case "IWDistributeStepDescription": { if (this.data.addInternalServer || (this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/InternalServer") ) prevStepName = "IWNewInternalServer"; else prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWIdentityDialog": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWSubmitButton": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } case "IWNewInternalServer": { prevStepName = "IWDistributionServer"; prevStep = GetStepNum(prevStepName, data.reviewType); break } } //DebugPrintln("prevStepName:"+prevStepName); //DebugPrintln("prevStep:"+prevStep); if (prevStepName == "noFunc") { if (prevStep > 0) prevStep -= 1; } return prevStep; } else if (data.reviewType == "ShareFile") { switch (this.wizard.steps[curStepNum].name) { case "IWBrowseAnyDoc": { prevStepName = "IWSharedReviewDocCenterLogin"; prevStep = GetStepNum(prevStepName, data.reviewType); break; } case "IWSharedReviewDocCenterCreateConfirm": { prevStepName = "IWSharedReviewDocCenterLogin"; prevStep = GetStepNum(prevStepName, data.reviewType); break; } case "IWEmailStepDescription": { prevStepName = "IWBrowseAnyDoc"; prevStep = GetStepNum(prevStepName, data.reviewType); break; } } if (prevStepName == "noFunc") { if (prevStep > 0) prevStep -= 1; } return prevStep; } else if (data.reviewType == "DocCenterLogin") { switch (this.wizard.steps[curStepNum].name) { case "IWSharedReviewDocCenterCreateConfirm": { prevStepName = "IWSharedReviewDocCenterLogin"; prevStep = GetStepNum(prevStepName, data.reviewType); } } if (prevStepName == "noFunc") { if (prevStep > 0) prevStep -= 1; } return prevStep; } }, description: { width: Collab.wizardWidth, height: Collab.wizardHeight } }); app.beginPriv(); description.data.result = app.execDialog(description); app.endPriv(); return description.data; } CBCreateInviteStepDescription = function(orderClusterTitle, disallowPrev, showReaderEnable, verifyRaddr) { app.beginPriv(); var description = ANTrustPropagateAll({ disallowPrev: disallowPrev, showReaderEnable: showReaderEnable, verifyRaddr: verifyRaddr, initialize: function(dialog) { this.data.certWarningPopped = false; if(!this.data.addrs) this.data.addrs = [] this.updateAddrs(dialog, true); this.canReaderEnable = (app.viewerType.match('Exchange-Pro') != null); this.data.readerEnable = this.canReaderEnable && (typeof this.data.readerEnable == "undefined" ? true : this.data.readerEnable); app.beginPriv(); if(!this.data.raddr) this.data.raddr = identity.email; app.endPriv(); if(!this.data.toolbars) this.data.toolbars = { Commenting: true, AdvCommenting: false }; dialog.focus("addr"); dialog.enable( { "adrb" : app.addressBookAvailable } ); }, splitAddrs: function(addrs) { var addrVec = addrs.split(/\;|\n|\r\n|\r/); var resultVec = []; var j = 0; for(var i in addrVec) { var addr = addrVec[i].replace(/^\s*(\S(?:.*\S)?)\s*$/, "$1"); if(addr) resultVec[j++] = addr; } return resultVec; }, joinAddrs: function(addrs) { return addrs.join("\n"); }, updateAddrs: function(dialog, dataIn) { // load from or to the dialog? if(dataIn) // load the value into the dialog dialog.load({addr: this.joinAddrs(this.data.addrs)}); else // split out the addresses to store this.data.addrs = this.splitAddrs(dialog.store()["addr"]); }, idle: function(dialog) { // XXX this stinks if(this.data.doc && this.data.doc.certified && !this.data.certWarningPopped) { this.data.certWarningPopped = true; app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED}); app.endPriv(); } var o = dialog.store(); var s = this.splitAddrs(o["addr"]); dialog.enable({ next: (s.length > 0 && !this.data.doc.certified) ? true : false, prev: this.disallowPrev ? false : true }); }, adrb: function(dialog) { this.updateAddrs(dialog, false); var addrs; try { var joinedAddrs = this.data.addrs.join(";"); app.beginPriv(); addrs = app.mailGetAddrs({ cTo: joinedAddrs, bCc: false, bBcc: false }); app.endPriv(); } catch(e) { // XXX ugh... need to catch throws about invalid e-mail addresses sep. from cancellation throws } if(addrs) { this.data.addrs = this.splitAddrs(addrs[0]); this.updateAddrs(dialog, true); } }, opts: function(dialog) { CBRunReviewOptionsDialog(this.data, this.showReaderEnable, this.canReaderEnable); }, emailListsMatch: function (firstList, secondList) { var firstArray = this.splitAddrs(firstList); var secondArray = this.splitAddrs(secondList); var firstSortedList = firstArray.sort().join(";"); var secondSortedList = secondArray.sort().join(";"); return (firstSortedList == secondSortedList); }, allEmailAddrsValid: function (addrArray) { var invalidIDs = ""; for(var i in addrArray) { var addr = addrArray[i]; if(!CBIsValidEmail(addr)) { if(invalidIDs != "") invalidIDs = invalidIDs + ", "; invalidIDs = invalidIDs + addr; } } return invalidIDs; }, resolveAddrs: function(dialog) { /*var bResolveHappened = false;*/ var props = { bUI: false, cTo: this.data.addrs.join(";"), cCc: "", cSubject: this.data.subj, cMsg: this.data.msg, bNoError: true, }; if(this.data.reviewType == "EBR") { dialog.enable({next: false}); props.bShowProgress = true; props.cProgressMessage = AnnotsString.IDS_GEN_STATUS_RESOLVING; } app.beginPriv(); try { var resolvedEmailList = app.getResolvedAddresses(props); } catch(e) { DebugThrow("Throw: Sendmail"); } app.endPriv(); var emailCategories = resolvedEmailList.split(/&/g); var finalLists = { toList: emailCategories[0].substr(3), ccList: emailCategories[1].substr(3), bccList: emailCategories[2].substr(4), }; this.removeDuplicateEmailAddresses(finalLists); /* if(!this.emailListsMatch(props.cTo, finalLists.toList) || !this.emailListsMatch(props.cCc, finalLists.ccList)) { bResolveHappened = true; } if(bResolveHappened) { this.data.addrs = this.splitAddrs(finalLists.toList); this.updateAddrs(dialog, true); DebugThrow("The email addresses got resolved. So try again."); } else { */ this.data.addrs = this.splitAddrs(finalLists.toList); this.updateAddrs(dialog, true); var invalidIDs = ""; invalidIDs = this.allEmailAddrsValid(this.data.addrs); if(invalidIDs != "") { app.beginPriv(); var result = app.alert(AnnotsString.IDS_SHARED_REVIEW_UNRESOLVED_MAIL_IDS.replace(/%mailids%/, invalidIDs), 1, 1); app.endPriv(); if(result != 1) DebugThrow("The email addresses are not valid. So try again."); } }, removeDuplicateEmailAddresses: function(lists) { lists.toList = this.removeDuplicateEmailAddressesInList(lists.toList); lists.ccList = this.removeDuplicateEmailAddressesInList(lists.ccList); lists.bccList = this.removeDuplicateEmailAddressesInList(lists.bccList); }, removeDuplicateEmailAddressesInList: function(addrList) { // Here newList would be created. Intially it would have // semicolons both at front and end to help in searching. // At the end of loop, we will remove them. var newList = ";"; var addrs = addrList.split(/;/g); for(var i in addrs) { var addr = addrs[i]; if(newList.match(";" + addr + ";") == null) newList = newList + addr + ";"; } var len = newList.length; return newList.substr(1, len - 2); }, commit: function(dialog, next) { this.updateAddrs(dialog, false); if (next) { // Fix for bug# 3222368, 3222202 - Resolve functionality is also provided on Mac now with webmail. Installed mail clients resolving is still not provided //if(app.platform == "WIN") { this.resolveAddrs(dialog); } // ensure a return email address if(this.verifyRaddr && !this.data.raddr) { CBRunReviewOptionsDialog(this.data, this.showReaderEnable, this.canReaderEnable); if(!this.data.raddr) { app.beginPriv(); app.alert(AnnotsString.IDS_INVITE_NO_RADDR); app.endPriv(); DebugThrow ("No return address"); } } switch(this.data.reviewType) { case "BBR": this.data.cannedSubj = AnnotsString.IDS_INVITE_DEFAULT_SUBJECT; this.data.cannedMsg = AnnotsString.IDS_INVITE_DEFAULT_MESSAGE; break; case "EBR": // Set the email contents this.data.cannedSubj = AnnotsString.IDS_SEND_FOR_REVIEW_SUBJ; if(this.data.readerEnable) this.data.cannedMsg = AnnotsString.IDS_SEND_FOR_REVIEW_PRO_MSG; else this.data.cannedMsg = AnnotsString.IDS_SEND_FOR_REVIEW_STD_MSG; break; default: console.println("Unhandled Review Type: " + this.data.reviewType); break; } } }, description: [ { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "view", align: "align_top", align_children: "align_top", elements: [ { type: "button", name: AnnotsString.IDS_INVITE_ADDRESS_BOOK, item_id: "adrb" } ] }, { type: "edit_text", multiline: true, height: { prod: [ 15, { edit_text_height: [] } ] }, item_id: "addr", alignment: "align_fill" } ] } ] }); app.endPriv(); return description; } CBCreateInviteStepDescriptionApproval = function(orderClusterTitle, disallowPrev, bShowInitiatorEmail, bShowReaderEnable, bCanReaderEnable) { var addrBookAndAddWidth = { max: [ { string_width: AnnotsString.IDS_INVITE_ADD }, { string_width: AnnotsString.IDS_INVITE_TO } ] } app.beginPriv(); var description = ANTrustPropagateAll({ disallowPrev: disallowPrev, initialize: function(dialog) { this.data.certWarningPopped = false; if(!this.data.addrs) this.data.addrs = []; // cc me checkbox defaults to false if (typeof this.data.initiatorEmail == "undefined") this.data.initiatorEmail = false; dialog.load({"cbx1" : this.data.initiatorEmail}); dialog.load({"1adr" : this.data.addrs}); dialog.focus("1adr"); // // if reader enable is not set, then default // to on if readerEnable is editable and default // to off if readerEnable is not editable // if (bCanReaderEnable) { if (typeof this.data.readerEnable == "undefined") this.data.readerEnable = true; } else { if (typeof this.data.readerEnable == "undefined") this.data.readerEnable = false; } dialog.load({"cbx2" : this.data.readerEnable}); dialog.enable({"cbx2" : bCanReaderEnable, "adrb" : app.addressBookAvailable}); }, idle: function(dialog) { // XXX this stinks if(this.data.doc && this.data.doc.certified && !this.data.certWarningPopped) { this.data.certWarningPopped = true; app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED}); app.endPriv(); } var o = dialog.store(); dialog.enable({ next: ((o["1adr"].length > 0) && !this.data.doc.certified) ? true : false, prev: this.disallowPrev ? false : true }); }, adrb: function(dialog) { app.beginPriv(); var addrs = app.mailGetAddrs({ cTo: dialog.store()["1adr"], bCc: false, bBcc: false }); app.endPriv(); if(addrs && addrs[0]) dialog.load({"1adr" : addrs[0]}); }, cbx1: function(dialog) { var o = dialog.store(); if (o["cbx1"]) this.data.initiatorEmail = true; else this.data.initiatorEmail = false; }, // this code was moved into commit event. //cbx2: function(dialog) //{ // var o = dialog.store(); // // if (o["cbx2"]) // this.data.readerEnable = true; // else // this.data.readerEnable = false; //}, commit: function(dialog) { var o = dialog.store(); this.data.addrs = o["1adr"]; if(bShowReaderEnable && o["cbx2"] != this.data.readerEnable) { this.data.readerEnable = o["cbx2"]; this.data.msgChanged = true; if(this.data.readerEnable) this.data.cannedMsg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB; else this.data.cannedMsg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB; } }, description: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_INVITE_ADDRESS_BOOK, width: addrBookAndAddWidth, item_id: "adrb" }, { type: "edit_text", item_id: "1adr", alignment: "align_fill" } ] } ].concat( bShowInitiatorEmail ? [ { type: "view", align_children: "align_left", elements: [ { type: "check_box", item_id: "cbx1", wrap_name: true, width: Collab.wizardWidth, name: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_CC_INITIATOR } ] } ] : [] ).concat( bShowReaderEnable ? [ { type: "view", align_children: "align_left", elements: [ { type: "check_box", item_id: "cbx2", wrap_name: true, width: Collab.wizardWidth, name: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_GRANT_UB_RIGHTS } ] } ] : [] ) }); app.endPriv(); return description; } CBCreateSendInvitationStepDescription = function(subjHeading, isBBR) { var description = { isBBR: isBBR, initialize: function(dialog) { this.cannedSubj = this.data.cannedSubj; this.cannedMsg = this.data.cannedMsg; var docName = (this.data.doc && this.data.doc.documentFileName) ? this.data.doc.documentFileName : this.data.docPath.match(/[^\/]*$/); if (app.platform == "WIN") { docName = docName.substring(docName.lastIndexOf('\\') + 1); //Bug #1046690. Remove the path info if any, from the filename } else if (app.platform == "MAC") { // we have the same problem on the mac as windows. I suspect that what happened here is that // we are mixed up throughout the code about whether we are passing di paths or platform // paths, so sometimes we end up in this case with document name trimmed, and sometimes // we end up with document name in a fully qualified path. I'd much rather assume that // the path is one or the other, do the conversion and trim it (or assume that it was // passed to us already trimmed), but there are many entry points to this code and // it's lower risk late in the game for Atlas to simply do the same hack we're already // doing on windows. At some point, the use of paths in this file should be // unified. docName = docName.substring(docName.lastIndexOf(':') + 1); } var bNameHasPercentEncoding = false; var decodedDocName = ""; if (docName.indexOf('%') != -1 && this.data.decodedURL && (typeof this.data.decodedURL == "string")) { bNameHasPercentEncoding = true; decodedDocName = this.data.decodedURL.substring(this.data.decodedURL.lastIndexOf('/') + 1); } if(!this.data.msg || this.data.msgChanged) { if (bNameHasPercentEncoding) this.data.msg = this.cannedMsg.replace(/%docname%/, decodedDocName + " (" + docName + ")"); else this.data.msg = this.cannedMsg.replace(/%docname%/, docName); } if(!this.data.subj || this.data.msgChanged) { if (bNameHasPercentEncoding) this.data.subj = this.cannedSubj.replace(/%docname%/, decodedDocName); else this.data.subj = this.cannedSubj.replace(/%docname%/, docName); } this.data.msgChanged = false; dialog.load({mesg: this.data.msg, subj: this.data.subj}); dialog.focus("next"); var o = dialog.store(); this.data.msgOriginal = o["mesg"]; }, commit: function(dialog, next) { var o = dialog.store(); this.data.msg = o["mesg"]; if (this.data.msg != this.data.msgOriginal) this.data.msgChanged = true; if(this.data.msgChanged && !next) { app.beginPriv(); if(app.alert(AnnotsString.IDS_INVITE_CUSTOM_MSG_WILL_BE_LOST, 2, 2) != 4) DebugThrow ("Don't lose custom message"); app.endPriv(); } this.data.subj = o["subj"]; if(next && this.isBBR && !this.data.doc.path.match(/^http[s]?\:/)) { app.beginPriv(); if(app.alert(AnnotsString.IDS_INVITE_FROM_FILE, 2, 2) != 4) DebugThrow ("BBR loc invite location bad"); app.endPriv(); } }, description: [ { type: "edit_text", item_id: "subj", width: Collab.wizardWidth }, { type: "static_text", name: subjHeading }, { type: "edit_text", alignment: "align_fill", height: { prod: [ { edit_text_height: [] }, 10 ] }, multiline: true, item_id: "mesg" } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } IWBrowseDocStepCommitWork = function(data) { data.isApproval = (data.reviewType == "APP"); // no doc or different doc DebugAlert(" In IWBrowseDocStepCommitWork "); if(typeof data.doc == "undefined" || !data.doc || (data.doc && data.doc.path != data.docPath)) { // open the new one app.beginPriv(); if(data.reviewType == "SharedReview") Collab.addDocToDocsOpenedByWizard(data.docPath); if(data.delayOpenDoc == true) data.doc = app.openDoc({ cFS: data.docFS, cPath: data.docPath, bUseConv: true}); else data.doc = app.openDoc({ cFS: data.docFS, cPath: data.docPath, bHidden: true, bUseConv: true }); app.endPriv(); if(data.doc) { if(data.delayOpenDoc != true) { Collab.bringToFront(data.doc); //Show the document first Collab.bringToFront(); //Bring wizard in focus again } data.docsOpenedByWizard[data.docsOpenedByWizard.length] = data.doc; } // we've changed the file name, so re-burn the message data.msgChanged = true; } if((data.doc)&& (data.reviewType == "SharedReview")) { app.beginPriv(); var maxPDFCommentsSize = Collab.maxPDFCommentsSize; app.endPriv(); if(data.checkSize && data.doc.filesize > (1024 * 1024 * maxPDFCommentsSize)) { // confirm that the large file is ok app.beginPriv(); var result = app.alert(AnnotsString.IDS_SEND_FOR_REVIEW_DOC_IS_LARGE.replace(/%mb%/, maxPDFCommentsSize), 2, 2); app.endPriv(); if(result != 4) DebugThrow ("Big doc"); } // is this doc related to an email review? (but not THE email review, i.e. subreview) if(Collab.isEmailReview(data.doc, true) && !data.doc.Collab.isEmailReview(data.doc, false)) { app.beginPriv(); app.alert(data.isApproval ? AnnotsString.IDS_CANT_APPROVE_LAX_EMAIL_MATCH : AnnotsString.IDS_CANT_REVIEW_LAX_EMAIL_MATCH); app.endPriv(); DebugThrow ("Lax review match"); } // part of an on-line review? if(Collab.isOnlineReview(data.doc, false) || (data.reviewType == "BBR" && Collab.isOfflineReview(data.doc))) { app.beginPriv(); app.alert(data.isApproval ? AnnotsString.IDS_CANT_APPROVE_ALREADY_BBR : AnnotsString.IDS_CANT_REVIEW_ALREADY_BBR); app.endPriv(); DebugThrow ("On-line review match"); } // Review of a dynamic document is not allowed. // Tell the user they can save a flat copy and send the dynamic doc out as an attachment // 1303733 - Moved this check before checking permission.canExport (returns false for dyn docs) if ( !data.isApproval && data.doc != null && data.doc.dynamicXFAForm ) { app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; app.alert({cTitle:msgboxtitle, cMsg: AnnotsString.IDS_DYNAMIC_DOC_COMMENTS_MSG1, nIcon: 3}); app.endPriv(); DebugThrow ("Dynamic document"); } // commenting not allowed? if(data.doc.requestPermission(permission.annot, permission.canExport) != permission.granted || data.doc.requestPermission(permission.annot, permission.create) != permission.granted) { app.beginPriv(); app.alert(data.isApproval ? AnnotsString.IDS_CANT_APPROVE_WITH_NO_PERMS : AnnotsString.IDS_CANT_REVIEW_WITH_NO_PERMS); app.endPriv(); DebugThrow ("No perms"); } // Verify the perms we're gonna need at the end // Note that we really only want to do this if we are ubiquitizing but we don't know // that until step 3 and making the user choose a new file then is awkward. Assume // the user is going to want to ubiquitize. if (data.doc.requestPermission(permission.document, permission.fullSave) != permission.granted) { app.beginPriv(); app.alert(AnnotsString.IDS_CANT_WORKFLOW_WITH_NO_SAVE); app.endPriv(); DebugThrow ("Cannot full save"); } // Can't review a document that is in a collection if (data.doc.isInCollection) { app.beginPriv(); app.alert(AnnotsString.IDS_PDF_PACKAGE_SEND_FOR_REVIEW); app.endPriv(); DebugThrow ("Cannot full save"); } //Check if the document is modifiable, if not then don't send for shared review. data.docModifiable = data.doc.requestPermission(permission.document, permission.modify) == permission.granted; //Check if the document is certified, if yes then don't send for shared review. if(data.doc.certified) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED_ALTERNATE}); app.endPriv(); DebugThrow ("Document is certified"); } else if(!data.docModifiable) { if(Collab.isSharedReview(data.doc)) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_SHARED_REVIEW}); app.endPriv(); DebugThrow ("This is already a shared review file"); } else { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_DOC_IS_NOT_MODIFIABLE}); app.endPriv(); DebugThrow ("Cannot full save") } } } else if((data.doc) && (data.reviewType == "FormDistribution")) { DebugAlert("doc path"+data.doc.path); app.beginPriv(); var props = Collab.AFPrepareFormForDistribution(data.doc.path); app.endPriv(); /* props.state corresponds to 0, if there is some issue with the form (dont close the wizard just let them pick a different file) 1, if the file is good to go 2, if the wizard should close (the wizard should return something like kIWFormEditMode in this case) 3, if the wizard should close (the wizard should return something like kIWQuickbook in this case) */ if(props == null) { DebugThrow ("form not distributable"); } else if(props.status == 1) { data.doc.path = props.outPath; data.docPath = props.outPath; } else { if(props.status == 2) // kIWFormEditMode data.IWStatus = 3; else if(props.status == 3) // kIWQuickbook data.IWStatus = 4; throw ("halt"); } } } //outputs //this.data.docPath //this.data.docFS (optional) //also updates the popup which shows the documents to share (i.e. updates this.dialog.fils) IWBrowseDoc = function(reviewType, checkSize) { var description = { initialize: function(dialog) { var toLoad = {}; var toShow = {}; var toEnable = {}; if(!this.data.docPath || (this.data.reviewType != "FormDistribution" && this.data.doc && this.data.doc.isInCollection)) //FormDistribution check here may be removed later if forms also want to disable porfolios) { this.data.docPath = ""; this.data.docFS = undefined; } this.updateDocs(dialog); //dialog.makeDefault("brws"); toShow.prev = false; toShow.help = false; toEnable.next = ((this.data.docFS != undefined) || (this.data.docPath != "")); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { this.data.canReaderEnable = (app.viewerType.match('Exchange-Pro') != null); //This checkbox is not there in the new mockups. // anyways *always* readerEnable toLoad.enbl = this.data.canReaderEnable; } this.data.checkSize = checkSize; toLoad.hdng = SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_SUBHEADING" + WT); toLoad.icn1 = "C_Info_Xl_N.png"; dialog.load(toLoad); dialog.visible(toShow); dialog.enable(toEnable); if(toEnable.next) { dialog.makeDefault("brws"); dialog.focus("next"); } else { dialog.makeDefault("brws"); dialog.focus("brws"); } }, updateDocs: function() { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); var fils = {}; var didSelect = false; for(var i in docs) { var doc = docs[i]; if(!doc.external && !doc.isInProtectedView) { var select = (doc.path == this.data.docPath); if(!doc.isInCollection) fils[doc.documentFileName] = (1 + (1*i)) * (select ? 1 : -1); if(select) didSelect = true; } } if(!didSelect && this.data.docPath) fils[this.data.docPath.match(/[^\/]*$/)[0]] = docs.length + 1; this.dialog.load({fils: fils}); }, brws: function(dialog) { app.beginPriv() var p = app.browseForDoc(); app.endPriv(); if(p) { if(p.cFS == "CSP") { app.beginPriv(); app.alert(AnnotsString.IDS_WORKFLOW_ERROR_DUETO_BROWSE_SHAREPOINT_FILE); app.endPriv(); } else { this.data.docPath = p.cPath; this.data.docFS = p.cFS; this.updateDocs(); var bResult = ((this.data.docFS != undefined) || (this.data.docPath != "")) this.dialog.enable({next: bResult}); dialog.focus("next"); } } }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return o[i] - 1; } return -1; }, fils: function(dialog) { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); var i = this.findSelectedIndex("fils"); if(i >= 0 && i < docs.length) this.data.docPath = docs[i].path; var bResult = ((this.data.docFS != undefined) || (this.data.docPath != "")) this.dialog.enable({next: bResult}); if(bResult) dialog.focus("next"); }, /*idle: function(dialog) { var bResult = ((this.data.docFS != undefined) || (this.data.docPath != "")) this.dialog.enable({next: bResult}); },*/ commit: function(dialog, next) { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); var i = this.findSelectedIndex("fils"); if(i >= 0 && i < docs.length) this.data.docPath = docs[i].path; if(next) { if(this.data.delayOpenDoc != true) { try { IWBrowseDocStepCommitWork(this.data); } catch (e) { if (data.reviewType == "FormDistribution" && e == "halt") { dialog.end("cncl"); } } } else dialog.end("ddoc"); } }, description: [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: "", alignment: "align_fill", item_id: "hdng", font: "dialog", bold: true, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "popup", alignment: "align_fill", item_id: "fils" }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws" } ] }, { type: "view", alignment: "align_fill", elements: [ { type: "gap", height: 240, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_row", alignment: "align_center", elements: [ { type: "image", item_id:"icn1", width: 32, height: 32 }, { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TIP_DESC"+WT), width: 380, wrap_name: true, } ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } //outputs //this.data.docPath //this.data.docFS (optional) //also updates the popup which shows the documents to share (i.e. updates this.dialog.fils) IWBrowseAnyDoc = function(reviewType, checkSize) { var description = { initialize: function(dialog) { var toLoad = {}; if(this.data.docPath == undefined) { //this.data.docPath = ""; this.data.docList = []; } else { if (this.data.docList == undefined) { this.data.docList = []; app.beginPriv(); this.data.docList[this.data.docList.length] = Collab.convertDIPathToPlatformPath(this.data.docPath); app.endPriv(); } else ;//do nothing } toLoad.icn1 = "C_Info_Xl_N.png"; if (this.data.type == 1) toLoad.next = AnnotsString.IDS_UPLOAD; this.updateDocs(dialog); dialog.focus("sMor"); this.data.checkSize = checkSize; dialog.load(toLoad); dialog.visible({help:false}); }, updateDocs: function() { var toEnable = {}; var dcl = {}; var didSelect = false; var idx = 1; for (var i = 0; i < this.data.docList.length; i++) { var currIndex = idx++; currIndex = -currIndex; if ((i+1) == this.data.docList.length) currIndex = -currIndex dcl[this.data.docList[i]] = currIndex; } DebugPrintln("dumping dcl"); ANDumpObj(dcl); var ok = (this.data.docList.length != 0); toEnable.next = ok; toEnable.sDel = ok; if (ok) { app.beginPriv(); this.data.docPath = Collab.convertPlatformPathToDIPath(this.data.docList[0]); app.endPriv(); this.data.docName = this.data.docPath.substring(this.data.docPath.lastIndexOf('/') + 1, this.data.docPath.length); } this.dialog.enable(toEnable); this.dialog.load({fils: dcl}); }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) { return o[i] - 1; } } return -1; }, sMor: function(dialog) { app.beginPriv() var p = app.browseForMultipleDocs({cFileFilter:2, cWindowTitle:SharedString("IDS_SHARE_FILE_SELECT_FILE_DIALOG_TITLE"+WT), bAllowMultiple: true}); app.endPriv(); for (var i in p) { if(p[i]) { app.beginPriv(); this.data.docList[this.data.docList.length] = Collab.convertDIPathToPlatformPath(p[i].cPath);//this.data.docPath); app.endPriv(); } } this.updateDocs(); }, sDel: function(dialog) { var index = this.findSelectedIndex("fils"); var newDocList = [] for (var i = 0; i < index; i++) newDocList[i] = this.data.docList[i]; for (var i = index; i < (this.data.docList.length-1); i++) newDocList[i] = this.data.docList[i+1]; this.data.docList = newDocList; this.updateDocs(dialog); }, link: function(dialog) { var url = AnnotsString.IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES_URL; app.launchURL(url, true); }, idle: function(dialog) { var toLoad = {}; if (this.data.type == 1) toLoad.next = AnnotsString.IDS_UPLOAD; dialog.load(toLoad); }, commit: function(dialog, next) { if (next) { var tempDocList = []; var tempDocList_DIPath = []; //1. First check if there are any files with the same file name. for (var i = 0; i < this.data.docList.length ; i++ ) { app.beginPriv(); var filePath = Collab.convertPlatformPathToDIPath(this.data.docList[i]); app.endPriv(); tempDocList_DIPath[tempDocList_DIPath.length] = filePath; } for (var i = 0; i < tempDocList_DIPath.length ; i++ ) { var fileName_i = tempDocList_DIPath[i].substring(tempDocList_DIPath[i].lastIndexOf('/') + 1, tempDocList_DIPath[i].length); var bUnique = true; for (var j = i+1; j < tempDocList_DIPath.length; j++) { var fileName_j = tempDocList_DIPath[j].substring(tempDocList_DIPath[j].lastIndexOf('/') + 1, tempDocList_DIPath[j].length); if (fileName_i == fileName_j) { if (bUnique) { bUnique = false; tempDocList[tempDocList.length] = tempDocList_DIPath[i]; } tempDocList[tempDocList.length] = tempDocList_DIPath[j]; } } } if (tempDocList.length > 0) { ANDumpObj(tempDocList); var desc = IWUploadFileError_UniqueFilenameDialog(tempDocList); app.beginPriv(); app.execDialog(desc); app.endPriv(); DebugThrow ("Exit the wizard\n"); } //2. Check if the files being uploaded can be uploaded on the document center and resolve any file name conflicts. app.beginPriv(); var dcURL = Collab.docCenterURL; app.endPriv(); if (dcURL.charAt(dcURL.length - 1) != "/") dcURL += "/"; this.data.filesToUpload = []; // Convert the docList from platform to dipaths for (var i in this.data.docList) { app.beginPriv(); var localPath = Collab.convertPlatformPathToDIPath(this.data.docList[i]); app.endPriv(); var uploadName = localPath.substring(localPath.lastIndexOf('/') + 1, localPath.length); this.data.cDocumentName = uploadName; var uploadURL = dcURL + uploadName; this.data.distributionURL = uploadURL; if (this.data.swConn) { app.beginPriv(); var validLocation = !(this.data.swConn.fileExists(uploadURL)); app.endPriv(); //Don't go ahead till the validLocation is true while (!validLocation) { var fileErrorDesc = IWShowFileError(this.data, true); app.beginPriv(); var result = app.execDialog(fileErrorDesc); app.endPriv(); if (result == "ok") { if (this.data.doOverwrite) { validLocation = true; } else { app.beginPriv(); validLocation = !(this.data.swConn.fileExists(this.data.distributionURL)); app.endPriv(); } if (validLocation) uploadName = this.data.distributionURL.substring(this.data.distributionURL.lastIndexOf('/') + 1, this.data.distributionURL.length); } else { //TODO: dikumar Exit here? SURE? if (result == "cancel") { //TODO dikumar: why do this validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } var fileProps = { localPath : localPath, uploadName : uploadName, uploadResult : -1, } ANDumpObj(fileProps); this.data.filesToUpload[this.data.filesToUpload.length] = fileProps; } } } else { } // DebugPrintln("this.data.docPath"+this.data.docPath); // DebugPrintln("this.data.docFS"+this.data.docFS); // DebugPrintln("this.data.doc.path"+this.data.doc.path); }, description: [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING"+WT), item_id: "hdng", font: "dialog", bold: true, }, { type: "gap", alignment: "align_fill", }, { type: "button", name: SharedString("IDS_SHARE_FILE_MORE_FILES"+WT), item_id: "sMor", }, { type: "button", name: AnnotsString.IDS_DELETE, item_id: "sDel", }, ] }, { type: "view", alignment: "align_fill", elements: [ { type: "list_box", item_id: "fils", height: 200, alignment: "align_fill", }, { type: "gap", height: 30, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_row", alignment: "align_center", elements: [ { type: "image", item_id:"icn1", width: 32, height: 32 }, { type: "view", align_children: "align_left", //alignment: "align_fill", elements: [ { type: "static_text", name: SharedString("IDS_SHARE_FILE_TIP_DESC"+WT), }, { type: "link_text", item_id: "link", name: AnnotsString.IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES, } ] } ] } ] }, ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } function IWUploadFileError_UniqueFilenameDialog (filesWithSameFileName) { var description = { initialize: function(dialog) { var toLoad = {}; var sameFileNameList = {} for (var i in filesWithSameFileName) { app.beginPriv(); var docPlatformPath = Collab.convertDIPathToPlatformPath(filesWithSameFileName[i]); app.endPriv(); sameFileNameList[docPlatformPath] = -i; } DebugPrintln("sameFileNameList to be displayed") ANDumpObj(sameFileNameList); toLoad.list = sameFileNameList; dialog.load(toLoad); }, commit: function(dialog) { }, description: { name: SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE"+WT), align_children: "align_left", alignment: "align_fill", margin_width: 0, margin_height: 0, elements: [ { type:"group", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", item_id: "mgrp", back_color: "dialogBackground", gradient_direction: "topToBottom", gradient_type: "darkToLight", margin_width: Collab.wizardMarginWidth, margin_height: Collab.wizardMarginWidth, elements: [ { type: "static_text", width: 450, wrap_name: true, name: AnnotsString.IDS_SHARE_FILE_ERROR_UNIQUE_FILE_NAME, item_id: "txt0", }, { type: "list_box", item_id: "list", alignment: "align_fill", height: 170, width: 450, }, { type: "ok", } ] } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; function getFS (url) { if(url.match(/^\\\\/) || url.match(/^.+:\\/)) // really a windows path return fileSystem['default']; else if(url.match(/^file:\/\//) || url.match(/^smb:\/\//)) // SMB URL return fileSystem['default']; else return fileSystem.WebDAV; } function IWShowFileError (data, bIsRemote) { var filePathFromSaveAsDialog = ""; bIsRemote: bIsRemote; var dontShowOverWriteOption = false; //on mac: if the review type is shared review, and server type is SMB, and remote is true, then dontShowOverWriteOption = true (always) //on win: dontShowOverWriteOption = true (only if the file is read-only and this is valid for both local or remote) if (data.reviewType == "SharedReview") { if (app.platform == "WIN") { if ((data.server.URL != "urn://ns.adobe.com/Collaboration/SharedReview/SMB") && (bIsRemote)) dontShowOverWriteOption = false; else { app.beginPriv(); dontShowOverWriteOption = Collab.isDocReadOnly(bIsRemote ? ANSMBURLToPlatformPath(data.distributionURL) : data.cDocumentPath); app.endPriv(); } } else if (app.platform == "MAC") { if ((data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/SMB") && bIsRemote) dontShowOverWriteOption = true } } //if the file for which we are showing this dialog is alread opened in Acrobat then dont show the overwrite option if (!dontShowOverWriteOption && !bIsRemote && (data.reviewType == "SharedReview") ) { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); for(var i in docs) { if (dontShowOverWriteOption == true) break; var doc = docs[i]; if (data.cDocumentPath.toLowerCase() == doc.path.toLowerCase()) dontShowOverWriteOption = true; } } var radioButton = ""; radioButton = (dontShowOverWriteOption) ? [ { type: "static_text", item_id: "aNam", name: (bIsRemote) ? AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_NAME : AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_LOCATION_NAME, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", alignment: "align_fill", item_id: "fnam", readonly: app.isProtectedModeEnabled, }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws", }, ] }, { type: "radio", item_id: "ovwt", group_id: "optn", name: (data.UseDocumentCenter && bIsRemote) ? AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_DUPLICATE_EXISTING : AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_OVERWRITE_EXISTING, }, ] : [ { type: "radio", item_id: "aNam", group_id: "optn", name: (bIsRemote) ? AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_NAME : AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_LOCATION_NAME, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "gap", width: 7, }, { type: "edit_text", alignment: "align_fill", item_id: "fnam", readonly: app.isProtectedModeEnabled, }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws", }, ] }, { type: "radio", item_id: "ovwt", group_id: "optn", name: (data.UseDocumentCenter && bIsRemote) ? AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_DUPLICATE_EXISTING : AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_OVERWRITE_EXISTING, }, ] var description = { initialize: function(dialog) { var toShow = {}; var toLoad = {}; var loc; var msg0; data.overwriteIsImplicit = false; if (dontShowOverWriteOption) { toShow.ovwt = false } if (!bIsRemote) { app.beginPriv(); loc = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); msg0 = SharedString("IDS_SHARED_REVIEW_FILE_ERROR"+WT); msg0 = msg0.replace(/%proposed_filename%/, data.cDocumentName); msg0 = msg0.replace(/%location%/, AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_MSG_LOCAL); toLoad.txt0 = msg0; toLoad.fnam = loc; } else { loc = ANSMBURLToPlatformPath(data.distributionURL); toShow.brws = false; msg0 = (data.reviewType == "ShareFile") ? AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_SR: SharedString("IDS_SHARED_REVIEW_FILE_ERROR"+WT) ; msg0 = msg0.replace(/%proposed_filename%/, data.cDocumentName); if (data.UseDocumentCenter) { msg0 = msg0.replace(/%location%/, AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_MSG_DC); } else { switch (data.serverType) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { msg0 = msg0.replace(/%location%/, AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_MSG_SMB); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { msg0 = msg0.replace(/%location%/, AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_MSG_SPF); break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { msg0 = msg0.replace(/%location%/, AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_MSG_WD); break; } } } toLoad.txt0 = msg0; //toLoad.aNam = AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_NAME; toLoad.fnam = data.distributionURL.substring(data.distributionURL.lastIndexOf('/') + 1, data.distributionURL.length); } if (!dontShowOverWriteOption) toLoad.aNam = true; dialog.load(toLoad); dialog.visible(toShow); }, idle: function(dialog) { if ((dialog.store()['fnam'] == "") && (dialog.store()['aNam'])) dialog.enable({ok: false}); else dialog.enable({ok: true}); }, checkExtension: function(url) { if (data.reviewType == "ShareFile")//We dont neccessarily have a PDF in share/upload file return url; // no .pdf ending? add it if(!url.match(/\.pdf$/i)) { if(url.match(/\.$/)) url += "pdf"; else url += ".pdf"; } return url; }, commit: function(dialog) { if (dialog.store()['ovwt']) { data.doOverwrite = true; } else { data.doOverwrite = false; if (!bIsRemote) { var aPath = dialog.store()['fnam']; var newDocumentPath = this.checkExtension(aPath); //incasae the user specified a filename, prefix it with the original directory name if (( (app.platform == "WIN") && (newDocumentPath.indexOf("/") == -1) && (newDocumentPath.indexOf("\\") == -1)) || ((app.platform == "MAC") && (newDocumentPath.indexOf(":") == -1))) { newDocumentPath = data.cDocumentPath.substring(0,data.cDocumentPath.lastIndexOf('/')+1) + newDocumentPath; } else { app.beginPriv(); newDocumentPath = Collab.convertPlatformPathToDIPath(newDocumentPath); app.endPriv(); } data.cDocumentPath = newDocumentPath; data.cDocumentName = data.cDocumentPath.substring(data.cDocumentPath.lastIndexOf('/') + 1, data.cDocumentPath.length); if (data.cDocumentPath == filePathFromSaveAsDialog) { data.overwriteIsImplicit = true; data.doOverwrite = true; } } else { app.beginPriv(); var newRemoteDocumentName = (dialog.store()['fnam']); app.endPriv(); var newDistributionURL = data.distributionURL.substr(0, data.distributionURL.lastIndexOf('/')+1) + newRemoteDocumentName; data.cDocumentName = newRemoteDocumentName; data.distributionURL = this.checkExtension(newDistributionURL); } } }, aNam: function(dialog) { var toEnable = {}; toEnable.fnam = true; toEnable.brws = true; dialog.enable(toEnable); }, ovwt: function(dialog) { var toEnable = {}; toEnable.fnam = false; toEnable.brws = false; dialog.enable(toEnable); }, brws: function(dialog) { if (!bIsRemote) { var browseProps = { bSave: true, cFilenameInit: data.cDocumentName, bUnicode: true, } app.beginPriv(); var p = app.browseForDoc(browseProps); app.endPriv(); if (p) { app.beginPriv(); dialog.load({"fnam": Collab.convertDIPathToPlatformPath(p.cPath)}); app.endPriv(); filePathFromSaveAsDialog = p.cPath } } }, description: { name: (data.reviewType == "ShareFile") ? SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE"+WT) : SharedString("IDS_SHARED_REVIEW_WIZARD_TITLE"+WT), align_children: "align_left", alignment: "align_fill", margin_width: 0, margin_height: 0, elements: [ { type:"group", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", item_id: "mgrp", back_color: "dialogBackground", gradient_direction: "topToBottom", gradient_type: "darkToLight", margin_width: Collab.wizardMarginWidth, margin_height: Collab.wizardMarginWidth, elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", width: 500, elements: [ { type: "static_text", alignment: "align_fill", width: 600, wrap_name: true, name: AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_SR, item_id: "txt0", }, ] }, { type: "view", align_children: "align_left", alignment: "align_fill", width: 500, elements: radioButton, }, { type: "ok_cancel", ok_name: AnnotsString.IDS_CONTINUE, cancel_name: AnnotsString.IDS_CANCEL, } ] } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; function IWShowLocalFolderError (data ) { var description = { initialize: function(dialog) { var toShow = {}; var toLoad = {}; var loc; data.overwriteIsImplicit = false; var msg0; { app.beginPriv(); loc = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); toLoad.fnam = loc; } dialog.load(toLoad); dialog.visible(toShow); }, idle: function(dialog) { if (dialog.store()['fnam'] == "") dialog.enable({ok: false}); else dialog.enable({ok: true}); }, checkExtension_DocumentName: function(aPath) { // no .pdf ending? Implies this is a folder path. if(!aPath.match(/\.pdf$/i)) { //add a / at the end if (aPath.charAt(aPath.length - 1) != "/") aPath += "/"; //add the document name aPath += data.cDocumentName; } return aPath; }, commit: function(dialog) { app.beginPriv(); var aPath = Collab.convertPlatformPathToDIPath(dialog.store()['fnam']); app.endPriv(); if ((aPath != "") && (aPath != undefined)) { data.cDocumentPath = this.checkExtension_DocumentName(aPath); data.cDocumentName = data.cDocumentPath.substring(data.cDocumentPath.lastIndexOf('/') + 1, data.cDocumentPath.length); if (data.cDocumentPath == filePathFromSaveAsDialog) { data.overwriteIsImplicit = true; data.doOverwrite = true; } } }, brws: function(dialog) { var browseProps = { bSave: true, cFilenameInit: data.cDocumentName, bUnicode: true, } app.beginPriv(); var p = app.browseForDoc(browseProps); app.endPriv(); if (p) { app.beginPriv(); dialog.load({"fnam": Collab.convertDIPathToPlatformPath(p.cPath)}); app.endPriv(); filePathFromSaveAsDialog = p.cPath } }, description: { name: SharedString("IDS_SHARED_REVIEW_WIZARD_TITLE"+WT), align_children: "align_left", alignment: "align_fill", margin_width: 0, margin_height: 0, elements: [ { type:"group", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", item_id: "mgrp", back_color: "dialogBackground", gradient_direction: "topToBottom", gradient_type: "darkToLight", margin_width: Collab.wizardMarginWidth, margin_height: Collab.wizardMarginWidth, elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", width: 500, elements: [ { type: "static_text", width: 420, wrap_name: true, name: AnnotsString.IDS_SHARED_REVIEW_LOCAL_FOLDER_ERROR, }, ] }, { type: "view", align_children: "align_left", alignment: "align_fill", width: 500, elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_LOCAL_FOLDER_ERROR_ENTER_VALID_LOCATION, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", alignment: "align_fill", item_id: "fnam", readonly: app.isProtectedModeEnabled, }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws", }, ] }, ] }, { type: "ok_cancel", ok_name: AnnotsString.IDS_CONTINUE, cancel_name: AnnotsString.IDS_CANCEL, } ] } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; function IWShowFolderError (data, bIsRemote) { bIsRemote: bIsRemote; var description = { initialize: function(dialog) { var toShow = {}; var toLoad = {}; var loc; var msg0; if (!bIsRemote) { loc = data.cDocumentPath.substr(0, data.cDocumentPath.lastIndexOf('/') + 1); app.beginPriv(); loc = Collab.convertDIPathToPlatformPath(loc); app.endPriv(); //loc = loc.substring(0, loc.lastIndexOf('\\') + 1); toShow.orig = false; toShow.aNte = false; msg0 = SharedString("IDS_SHARED_REVIEW_FILE_ERROR_LOCAL"+WT); msg0 = msg0.replace(/%proposed_filename%/, data.cDocumentName); toLoad.txt0 = msg0; } toLoad.fnam = loc; dialog.load(toLoad); dialog.visible(toShow); }, idle: function(dialog) { return; }, commit: function(dialog) { if (!bIsRemote) { app.beginPriv(); var folderURI = Collab.convertPlatformPathToDIPath(dialog.store()['fnam']); app.endPriv(); if ((folderURI != "") && (folderURI != undefined)) { if (folderURI.charAt(folderURI.length - 1) != "/") folderURI += "/"; data.cDocumentPath = folderURI; data.cDocumentPath = data.cDocumentPath + data.cDocumentName; //data.cDocumentName = data.cDocumentPath.substring(data.cDocumentPath.lastIndexOf('/') + 1, data.cDocumentPath.length); } } else { data.distributionURL = dialog.store()['fnam']; } }, brws: function(dialog) { if (!bIsRemote) { var browseProps = { cFilenameInit: data.cDocumentName, bUnicode: true, } try { DebugAlert("trying browse"); app.beginPriv(); var folderURI = Collab.browseForFolder(); app.endPriv(); DebugAlert("1" + folderURI); if (folderURI && folderURI.length > 0) { if (folderURI.charAt(folderURI.length - 1) != "/") folderURI += "/"; } DebugAlert("2" + folderURI); app.beginPriv(); dialog.load({"fnam":Collab.convertDIPathToPlatformPath(folderURI)}); app.endPriv(); } catch (e) { if (e.message == "Volume Mount Exception") { var errMsg; switch (Number(e.errorCode)) { case 1: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR; break; case 3: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_MOUNT_ERROR; break; default: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_ERROR; break; } app.beginPriv(); app.alert(errMsg); app.endPriv(); DebugThrow ("VolMountError"); } } } }, description: { name: SharedString("IDS_SHARED_REVIEW_WIZARD_TITLE"+WT), align_children: "align_left", alignment: "align_fill", elements: [ { type:"group", elements: [ { type: "view", align_children: "align_left", elements: [ { type: "static_text", alignment: "align_fill", width: Collab.wizardWidth, wrap_name: true, name: SharedString("IDS_SHARED_REVIEW_FILE_ERROR_LOCAL"+WT), item_id: "txt0", }, { type: "static_text", alignment: "align_fill", name: SharedString("IDS_SHARED_REVIEW_FILE_ERROR_LOCAL_LOCATION"+WT), item_id: "txt1", }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", alignment: "align_fill", item_id: "fnam", }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws", }, ] }, { type: "static_text", alignment: "align_fill", name: AnnotsString.IDS_SHARED_REVIEW_FILE_ERROR_REMOTE_ORIGINAL_LOCATION, item_id: "orig", }, { type: "static_text", alignment: "align_fill", name: SharedString("IDS_SHARED_REVIEW_FILE_ERROR_REMOTE_NOTE"+WT), item_id: "aNte", }, ] }, { type: "ok_cancel", ok_name: AnnotsString.IDS_CONTINUE, cancel_name: AnnotsString.IDS_CANCEL, } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; function getnextnumber(currentNumber) { var nextNumber = currentNumber + 1; if(nextNumber < 10) nextNumber = "_000" + nextNumber; else if(nextNumber < 100) nextNumber = "_00" + nextNumber; else if(nextNumber < 1000) nextNumber = "_0" + nextNumber; else nextNumber = "_" + nextNumber; return nextNumber; } var filesAtDocCenter = null; function populateFilesAtDocCenter(data, filename) { var beginwith = ""; beginwith = filename.replace(/.pdf$/i, ""); DebugAlert("populateFilesAtDocCenter filename :" + filename); if(data.swConn) { app.beginPriv(); var reg = "^" + beginwith + ".*\\.pdf$"; filesAtDocCenter = data.swConn.getMatchingFiles(reg); DebugAlert(filesAtDocCenter); app.endPriv(); } } function isValidSaveLocationAtDocCtr(filename) { for(file in filesAtDocCenter) { DebugAlert("file :" + file + ", filename :" + filename) // fix for bug 1726757 ; case insensitive comparisons for the file present on Acrobat.com as Acrobat.com is case insensitive if(filesAtDocCenter[file].toLowerCase() == filename.toLowerCase()) return false; } return true; } // bShowProgressMonitor: boolean // true: if a progress monitor should be shown while authentication is being done // false: if the progress monitor should not be shown function SilentDocCenterLogin (data, connectParams) { var isFirstLaunch = false; app.beginPriv() isFirstLaunch = Collab.isFirstLaunch(data.WT); app.endPriv(); app.beginPriv(); data.user = Collab.getUserIDFromStore(); app.endPriv(); if(isFirstLaunch) { data.isFirstLaunch = true; return false; } if(data.reviewType == "SharedReview" || data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "Authentication_Successful"; } try { app.beginPriv(); swConn = Collab.swConnect(connectParams/*{bShowProgressMonitor: bShowProgressMonitor}*/); app.endPriv(); if (swConn) { data.swConn = swConn; app.beginPriv(); shareIdentity.Email = data.user; shareIdentity.FullName = data.swConn.getFullName(); shareIdentity.Authenticated = true; app.endPriv(); if(data.reviewType == "SharedReview" || data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } return true; } else { if(data.reviewType == "SharedReview" || data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } return false; } } catch(e) { if(data.reviewType == "SharedReview" || data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } ANDumpObj(e); if (e.errorCode == 403 || e.errorCode == 401) { data.authStatus = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD; } else if (e.errorCode == 402) // terms of usage not accepted { // TODO: need a different string for this data.authStatus = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD; } else if (e.errorCode == 405) // account not verified (grace period expired) { data.authStatus = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED; } else if (e.errorCode == 0 || e.errorCode >= 400) // interpret all other errors as a server connection problem { data.authStatus = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT; } return false; } } longFileName = app.trustPropagatorFunction(function(data) { /* Creating a dummy foldername on server + reviewId + attachment to check if these can be created or not*/ var cDefaultLink = data.server.Settings.cSetting; if (cDefaultLink.charAt(cDefaultLink.length - 1) != "/") cDefaultLink += "/"; var cURL = cDefaultLink + getAsciiSafeDocName(data.cDocumentName); cURL += "__" +data.reviewID + "_attachments"+"_0-05ac777c-f1ef-4ab3-80c8-9114025d1c89_bin"; //260 is hard-coded here because of windows limitation of not being able to create folder name with path length greater than 260 //we should update this if this limitation is changed. if(cURL.length >= 260) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_LONG_FILENAME); app.endPriv(); DebugThrow ("BadLocation"); } }); function getAsciiSafeDocName(docName) { var result = docName; var escaped = escape(docName); if (escaped != docName) { result = escaped.replace(/\%u/g, ''); result = result.replace(/\%([0-9A-F][0-9A-F])/g, "00$1"); } return result; } function DistributionServerStepCommitWork (data) { if((data.reviewType == "FormDistribution" || data.reviewType == "FormDistributionEmail") && data.server != undefined && data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email" || data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/InternalServer") { ; //do nothing; // as in the case of email based distribution the registery would have "EMAIL" as the distribution method // so in the case of manual distribution this will incorrectly set the distribution method as EMAIL } else { data.distributionFS = getFS(data.server.Settings.cSetting); data.distributionMethod = data.server.DistMethod; } //data.serverType if (data.serverType == undefined) { for (var i in data.drivers) { if (i == data.server.URL) { data.serverType = data.drivers[i].initiatorName; } } } data.cDocumentName = data.cDocumentName; //Fix for bug4166550 if (data.distributionMethod == "UPLOAD" || (data.reviewType == "SharedReview" && data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint")) { var cDefaultLink = data.server.Settings.cSetting; if (cDefaultLink.charAt(cDefaultLink.length - 1) != "/") cDefaultLink += "/"; cDefaultLink += data.cDocumentName; data.distributionURL = cDefaultLink; } //Check whether the location where the file will be uploaded remotely is valid or not if(data.reviewType == "SharedReview") { if((data.distributionMethod == "EMAIL" || data.distributionMethod == "MANUAL" ) && !data.UseDocumentCenter) { if((data.reviewType == "SharedReview") && (data.serverType == AnnotsString.IDS_SHARED_REVIEW_SMB_NAME)) { app.beginPriv(); longFileName(data); app.endPriv(); } } if (data.distributionMethod == "UPLOAD" || data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") { if (!data.UseDocumentCenter) { var locationProps = {}; var validLocation = false; // if the distribution FS is CHTTP then just use the destination path as is; // otherwise convert the path to a DI path. if (data.distributionFS == "CHTTP") { if (data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") //Fix for bug4130524 (In case of sharepoint, we should use CSPFileSys as CHTTPFileSys does not support Form based authentication) locationProps.cFS = "CSP"; else if (data.server.Settings.bUseWindowsIntegratedAuthentication) locationProps.cFS = "CSSO"; else locationProps.cFS = "CHTTP"; locationProps.cFilePath = data.distributionURL; } else { app.beginPriv(); locationProps.cFilePath = Collab.uriToDIPath(encodeURIComponent(data.distributionURL)); app.endPriv(); locationProps.cFS = data.distributionFS; } locationProps.cDisplay = ANSMBURLToPlatformPath(data.distributionURL); locationProps.cPath = locationProps.cFilePath; var errorSameLocation = false; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); /*Fix for the bug - 2737699; When the new internal server is configured then IWNewInternalServer step verify the given URL. In its verification it checks that at given location sharefolder can be created,accessed and deleted, it also checks that the given location and the doc path should not be same. But when user select the alredy configured server setting then the above mentioned verifaction is not done. Above conditions check for the writable and valid save location, it doesn't chek for the same location. Hence here i am adding one check for the same location*/ if( validLocation && data.UseDocumentCenter == false && data.serverType == AnnotsString.IDS_SHARED_REVIEW_SMB_NAME && data.distributionMethod == "UPLOAD" ) { globalCheckForSameSMBLocation(data.server.Settings.cSetting,data); if (data.Error_DocumentLocationAndRepositoryLocationSame == true) { errorSameLocation = true; DebugThrow ("Cannot choose same folder"); } } } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else if (e.errorCode == 2) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; else if (e.name == "RangeError") msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_LONG_FILENAME; else if(errorSameLocation) msg = AnnotsString.IDS_SHARED_REVIEW_ERROR_SAME_LOCATION_FOR_FILE_REPOSITORY; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } if(validLocation && (data.reviewType == "SharedReview") && (data.serverType == AnnotsString.IDS_SHARED_REVIEW_SMB_NAME)) { app.beginPriv(); longFileName(data); app.endPriv(); } while (!validLocation) { var fileErrorDesc = IWShowFileError(data, true); app.beginPriv(); var result = app.execDialog(fileErrorDesc); app.endPriv(); if (result == "ok") { if (data.doOverwrite) { validLocation = true; } else { // if the distribution FS is CHTTP then just use the destination path as is; // otherwise convert the path to a DI path. if (data.distributionFS == "CHTTP") { if (data.server.Settings.bUseWindowsIntegratedAuthentication) locationProps.cFS = "CSSO"; else locationProps.cFS = "CHTTP"; locationProps.cFilePath = data.distributionURL; } else { app.beginPriv(); locationProps.cFilePath = Collab.uriToDIPath(encodeURIComponent(data.distributionURL)); app.endPriv(); locationProps.cFS = data.distributionFS; } locationProps.cDisplay = ANSMBURLToPlatformPath(data.distributionURL); locationProps.cPath = locationProps.cFilePath; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else if (e.errorCode == 2) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; else if (e.name == "RangeError") msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_LONG_FILENAME; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } if(validLocation && (data.reviewType == "SharedReview") && data.serverType == AnnotsString.IDS_SHARED_REVIEW_SMB_NAME) { app.beginPriv(); longFileName(data); app.endPriv(); } } } else { //TODO: dikumar Exit here? SURE? if (result == "cancel") { validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } } else { //0. make the doc center url and check if the remote file exists on Acrobat.com //1. launch dialog if it exists //2. get the new file name and update the params (done below after else) //3. TODO dikumar: might also need to call delete workflow, what happens to stuff locally and in the tracker. //0. make the doc center url and check if the remote file exists on Acrobat.com app.beginPriv(); var dcURL = Collab.docCenterURL; app.endPriv(); if (dcURL.charAt(dcURL.length - 1) != "/") dcURL += "/"; dcURL = dcURL + data.cDocumentName; data.distributionURL = dcURL; if (data.swConn) { app.beginPriv(); var validLocation = !(data.swConn.fileExists(data.distributionURL)); app.endPriv(); //1. launch dialog if it exists while (!validLocation) { var fileErrorDesc = IWShowFileError(data, true); app.beginPriv(); var result = app.execDialog(fileErrorDesc); app.endPriv(); if (result == "ok") { if (data.doOverwrite) { validLocation = true; } else { app.beginPriv(); validLocation = !(data.swConn.fileExists(data.distributionURL)); app.endPriv(); } } else { //TODO: dikumar Exit here? SURE? if (result == "cancel") { validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } } } //if the user provided an alternate name for the remote file, then use the same name locally as well. data.cDocumentName = data.distributionURL.substring(data.distributionURL.lastIndexOf('/') + 1, data.distributionURL.length); var newDocumentPath = data.cDocumentPath.substr(0, data.cDocumentPath.lastIndexOf('/') + 1) + data.cDocumentName; data.cDocumentPath = newDocumentPath; } }//End of (Check whether the location where the file will be uploaded remotely is valid or not) //Check whether the location where the file will be stored locally is valid or not if(data.reviewType == "SharedReview" ) { var locationProps = {}; DebugAlert("data.cDocumentPath" + data.cDocumentPath); locationProps.cFilePath = data.cDocumentPath; app.beginPriv(); locationProps.cDisplay = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); locationProps.cFS = null; locationProps.cPath = locationProps.cFilePath; var validLocation = false; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 2) { //Don't show this alert but show the folder not writable error dialog //msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; //app.alert(msg); var validFolderLocation = false; //BUG#2687052: mbansal - Keep a copy of the original documentPath and documentName //because in the next "catch" block if errorcode != 2 we prompt with an error and exit. //data.cDocumentPath and data.cDocumentName get overridden inside IWShowLocalFolderError and its value is used next time in this function. DebugAlert("creating copy of orig Document Path and name."); var origDocPath = data.cDocumentPath; var origDocName = data.cDocumentName; while (!validFolderLocation) { var folderErrorDesc = IWShowLocalFolderError(data); app.beginPriv(); var folderErrorResult = app.execDialog(folderErrorDesc); app.endPriv(); if (folderErrorResult == "ok") { locationProps.cFilePath = data.cDocumentPath; app.beginPriv(); locationProps.cDisplay = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); locationProps.cFS = null; locationProps.cPath = locationProps.cFilePath; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); //if we are here it means that there was no throw with errorCode = 2. That means the user changed the folder which is writeble now. //so folder is valid now. validFolderLocation = true; } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character var msg; if (e.errorCode == 2) { validFolderLocation = false } else { validFolderLocation = true; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); //BUG#2687052: mbansal - restore the original documentPath and documentName DebugAlert("restore the original documentPath and documentName"); data.cDocumentPath = origDocPath; data.cDocumentName = origDocName; DebugThrow ("BadLocation"); } } } else { //TODO: dikumar Exit here? SURE? if (folderErrorResult == "cancel") { validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } } else { if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } } if (data.overwriteIsImplicit) validLocation = true; while (!validLocation) { var fileErrorDesc = IWShowFileError(data, false); app.beginPriv(); var result = app.execDialog(fileErrorDesc); app.endPriv(); if (result == "ok") { if (data.doOverwrite) { validLocation = true; } else { locationProps.cFilePath = data.cDocumentPath; app.beginPriv(); locationProps.cDisplay = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); locationProps.cFS = null; locationProps.cPath = locationProps.cFilePath; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else if (e.errorCode == 2) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } } } else { //TODO: dikumar Exit here? SURE? if (result == "cancel") { validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } if (!data.overwriteIsImplicit) { data.cDocumentPath = locationProps.cFilePath; data.cDocumentName = data.cDocumentPath.substring(data.cDocumentPath.lastIndexOf('/') + 1, data.cDocumentPath.length); } }//End of (Check whether the location where the file will be stored locally is valid or not) // // In case of FD the logic is // // Check for the write permission on folder // if false ask for the writable folder // repeat above till get a writable folder // /// some useful comments for the Form Distribution case // We dont need to test the WebDav and SharePoint cases, because: // - Dataset files are stored in local disk. // - The local copies of the distributed files are also stored in local disk. // - In shared folder case, the distributed file for a workflow will be uploaded to an individual folder created for that workflow. Therefore, there is no file name collision problem. if(data.reviewType == "FormDistribution") { var locationProps = {}; //BUG#2687052: mbansal - Keep a copy of the original documentPath because in the 2nd "catch" block if errorcode != 2 we prompt with an error and exit. //data.cDocumentPath get overridden inside IWShowFolderError and its value is used next time in this function. //documentName is not changed in IWShowFolderError so I haven't created a backup for it. DebugAlert("creating copy of orig Document Path."); var origDocPath = data.cDocumentPath; var validLocation = false; while (!validLocation) { locationProps.cFilePath = data.cDocumentPath; app.beginPriv(); locationProps.cDisplay = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); locationProps.cFS = null; locationProps.cPath = locationProps.cFilePath; DebugAlert("data.cDocumentPath " + data.cDocumentPath); try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps); //&& // app.isValidSaveLocation(locationProps); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 2) { //Don't show this alert but show the folder not writable error dialog //msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; //app.alert(msg); var validFolderLocation = false; while (!validFolderLocation) { var folderErrorDesc = IWShowFolderError(data, false); app.beginPriv(); var folderErrorResult = app.execDialog(folderErrorDesc); app.endPriv(); if (folderErrorResult == "ok") { locationProps.cFilePath = data.cDocumentPath; app.beginPriv(); locationProps.cDisplay = Collab.convertDIPathToPlatformPath(data.cDocumentPath); app.endPriv(); locationProps.cFS = null; locationProps.cPath = locationProps.cFilePath; try { app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) app.endPriv(); //if we are here it means that there was no throw with errorCode = 2. That means the user changed the folder which is writeble now. //so folder is valid now. validFolderLocation = true; } catch(e) { // possible error codes that isPathWritable throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character var msg; if (e.errorCode == 2) { validFolderLocation = false } else { validFolderLocation = true; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); //BUG#2687052: mbansal - restore the original documentPath DebugAlert("restore the original documentPath"); data.cDocumentPath = origDocPath; DebugThrow ("BadLocation"); } } } else { //TODO: dikumar Exit here? SURE? if (folderErrorResult == "cancel") { validLocation = true; DebugThrow ("Exit the wizard\n"); } return; } } } else { if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } } } //At this point we have a valid path //now get the valid name validLocation = false; var locationPropsSavePath = {}; var locationPropsDatasetPath = {}; var saveDocName; var datasetDocName; var oldName = data.doc.documentFileName; var oldPath = data.cDocumentPath; //data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); saveDocName = oldName.replace(/.pdf$/i, "") + AnnotsString.IDS_SHARED_REVIEW_FILE_EXT_FD + ".pdf"; datasetDocName = oldName.replace(/.pdf$/i, "") + AnnotsString.IDS_SHARED_REVIEW_DATA_SET_FILE_EXT_FD + ".pdf"; var sequence = 0; if(data.UseDocumentCenter) { populateFilesAtDocCenter(data, oldName); } while (!validLocation) { locationPropsSavePath.cFilePath = newPath + saveDocName ; locationPropsSavePath.cFS = null; locationPropsSavePath.cPath = locationPropsSavePath.cFilePath; app.beginPriv(); locationPropsSavePath.cDisplay = Collab.convertDIPathToPlatformPath(locationPropsSavePath.cPath); app.endPriv(); DebugAlert("Isvalidsave location: data.cDocumentPath " + locationPropsSavePath.cPath); locationPropsDatasetPath.cFilePath = newPath + datasetDocName ; locationPropsDatasetPath.cFS = null; locationPropsDatasetPath.cPath = locationPropsDatasetPath.cFilePath app.beginPriv(); locationPropsDatasetPath.cDisplay = Collab.convertDIPathToPlatformPath(locationPropsDatasetPath.cPath); app.endPriv(); DebugAlert("2. data.cDocumentPath " + locationPropsDatasetPath.cPath); try { app.beginPriv(); validLocation = app.isValidSaveLocation(locationPropsSavePath) && app.isValidSaveLocation(locationPropsDatasetPath); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character DebugAlert("error code:"+ e.errorCode); var msg; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else if (e.errorCode == 2) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); //BUG#2687052: mbansal - restore the original documentPath DebugAlert("restore the original documentPath"); data.cDocumentPath = origDocPath; DebugThrow ("BadLocation"); } //check for the files at the doc center if(validLocation && data.UseDocumentCenter) { validLocation = isValidSaveLocationAtDocCtr(saveDocName) && isValidSaveLocationAtDocCtr(datasetDocName); } if(!validLocation) { nextNumber = getnextnumber(sequence); DebugAlert("nextNumber " + nextNumber); saveDocName = oldName.replace(/.pdf$/i, "") + AnnotsString.IDS_SHARED_REVIEW_FILE_EXT_FD + nextNumber + ".pdf"; datasetDocName = oldName.replace(/.pdf$/i, "") + AnnotsString.IDS_SHARED_REVIEW_DATA_SET_FILE_EXT_FD + nextNumber + ".pdf"; ++sequence; } } data.cDocumentPath = locationPropsSavePath.cFilePath; data.cDocumentName = data.cDocumentPath.substring(data.cDocumentPath.lastIndexOf('/') + 1, data.cDocumentPath.length); data.cDataSetPath = locationPropsDatasetPath.cFilePath; } DebugAlert("data.cdocumentname" + data.cDocumentName); } function RemoveWebdav(element, index, array) { return (element.URL != "urn://ns.adobe.com/Collaboration/SharedReview/WebDAV"); } // This step selects which server as well as server type we chose to use // 1. Doc center (i.e this.data.doc_center = true) // 2. An existing config of an internal server and this.data.server is set // 3. Configure an internal server (i.e this.data.new_config = true) IWDistributionServer = function(reviewType, checkSize) { try { var oA_EmailDistribute_110x64_N = Collab.getIcon("A_EmailDistribute_110x64_N.png"); var oA_EmailRespond_110x64_N = Collab.getIcon("A_EmailRespond_110x64_N.png"); var oA_EmailCollect_110x64_N = Collab.getIcon("A_EmailCollect_110x64_N.png"); var oA_SharedReviewServerDistribute_110x64_N = Collab.getIcon("A_SharedReviewServerDistribute_110x64_N.png"); var oA_SharedReviewServerComment_110x64_N = Collab.getIcon("A_SharedReviewServerComment_110x64_N.png"); var oA_SharedReviewServerCollect_110x64_N = Collab.getIcon("A_SharedReviewServerCollect_110x64_N.png"); var oA_ServerDistribute_110x64_N = Collab.getIcon("A_ServerDistribute_110x64_N.png"); var oA_ServerRespond_110x64_N = Collab.getIcon("A_ServerRespond_110x64_N.png"); var oA_ServerCollect_110x64_N = Collab.getIcon("A_ServerCollect_110x64_N.png"); var oA_SharedReviewAcrobatDistribute_110x64_N = Collab.getIcon("A_SharedReviewAcrobatDistribute_110x64_N.png"); var oA_SharedReviewAcrobatComment_110x64_N = Collab.getIcon("A_SharedReviewAcrobatComment_110x64_N.png"); var oA_SharedReviewAcrobatCollect_110x64_N = Collab.getIcon("A_SharedReviewAcrobatCollect_110x64_N.png"); var oA_AcrobatDistribute_110x64_N = Collab.getIcon("A_AcrobatDistribute_110x64_N.png"); var oA_AcrobatRespond_110x64_N = Collab.getIcon("A_AcrobatRespond_110x64_N.png"); var oA_AcrobatCollect_110x64_N = Collab.getIcon("A_AcrobatCollect_110x64_N.png"); var maxStringWidth = {max: [{zstring_width: SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL" + WT)}, {zstring_width: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)}, {zstring_width: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL}, ]}; var desiredPopupWidth = {min: [ maxStringWidth, 500]}; var description = { //reviewType: reviewType, initialize: function(dialog) { var toLoad = {}; var toShow = {}; this.updateServers(dialog); var alwaysUseServer = getAlwaysUseServerValue(this.data.reviewType); if (alwaysUseServer == undefined) toLoad.rmbr = false; else toLoad.rmbr = true; this.srvr(dialog); //The cDocumentName and cDocumentPath are used later, but can be updated at this step, so do it. var oldName = this.data.doc.documentFileName; var oldPath = this.data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); this.data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT);; if(this.data.reviewType == "FormDistribution") this.data.cDocumentName = this.data.cDocumentName + ".pdf"; this.data.cDocumentPath = newPath + this.data.cDocumentName; if(this.data.reviewType == "FormDistribution") { this.data.cDataSetName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_DATA_SET_FILE_EXT" + WT); this.data.cDataSetPath = newPath + this.data.cDataSetName; } toLoad.hdng = SharedString("IDS_SHARED_REVIEW_DISTRIBUTION_SERVER_STEP_HEADING" + WT); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { //1. Remove the previous button if (this.data.docAlreadyOpened) toShow.prev = false; } dialog.focus("next"); dialog.visible(toShow); dialog.load(toLoad); }, idle: function(dialog) { var toLoad = {}; var i = this.findSelectedIndex("srvr"); if (i<0) { this.data.addInternalServer = false; dialog.enable({next: false}); } else { if (this.getSelectedItemText("srvr") == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { this.data.addInternalServer = true; if(this.data.reviewType == "FormDistribution") { dialog.enable({rmbr: true}); } else { dialog.enable({rmbr: false}); } } else { this.data.addInternalServer = false; dialog.enable({rmbr: true}); } dialog.load(toLoad); dialog.enable({next: true}); } return; }, srvr: function(dialog) { var toLoad = {}; var toShow = {}; var toEnable = {}; //1. Get the selected entry var item = this.getSelectedItemText("srvr"); var proAllowsYou = AnnotsString.IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO; proAllowsYou = proAllowsYou.replace(/\{cProfileName\}/, item); toLoad.payt = proAllowsYou; toShow.lmdc = false; toShow.cl00 = true; if (this.data.reviewType == "FormDistribution" && item == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_EMAIL" + WT); toLoad.yurl = ""; toShow.yurl = false; toShow.surl = false; toLoad.payt = AnnotsString.IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_EMAIL; toLoad.rsp1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1_EMAIL" + WT); toLoad.rsp2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2_EMAIL" + WT); toLoad.clt1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1_EMAIL" + WT); toLoad.clt2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2_EMAIL" + WT); toShow.cl00 = false; oA_EmailDistribute_110x64_N = Collab.getIcon("A_EmailDistribute_110x64_N.png"); oA_EmailRespond_110x64_N = Collab.getIcon("A_EmailRespond_110x64_N.png"); oA_EmailCollect_110x64_N = Collab.getIcon("A_EmailCollect_110x64_N.png"); toLoad.icn1 = oA_EmailDistribute_110x64_N; toLoad.icn2 = oA_EmailRespond_110x64_N; toLoad.icn3 = oA_EmailCollect_110x64_N; } else if (item == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { this.data.addInternalServer = true; if(this.data.reviewType == "FormDistribution") { toEnable.rmbr = true; toLoad.rmbr = true; } else { toEnable.rmbr = false; // graying out the check_box of 'remember my choice' toLoad.rmbr = false; // unchecking the check_box of 'remember my choice' } //if (app.platform == "MAC") //toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER_MAC" + WT); //else toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER" + WT); toLoad.yurl = ""; toShow.yurl = false; toShow.surl = false; toLoad.rsp1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1" + this.data.UB + WT); toLoad.rsp2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2" + WT); toLoad.clt1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1" + this.data.UB + WT); //if (app.platform == "MAC") // toLoad.clt2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2_MAC" + WT); //else toLoad.clt2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2" + WT); toLoad.payt = AnnotsString.IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_YOUR_OWN_SERVER; if(this.data.reviewType == "SharedReview") { oA_SharedReviewServerDistribute_110x64_N = Collab.getIcon("A_SharedReviewServerDistribute_110x64_N.png"); oA_SharedReviewServerComment_110x64_N = Collab.getIcon("A_SharedReviewServerComment_110x64_N.png"); oA_SharedReviewServerCollect_110x64_N = Collab.getIcon("A_SharedReviewServerCollect_110x64_N.png"); toLoad.icn1 = oA_SharedReviewServerDistribute_110x64_N; toLoad.icn2 = oA_SharedReviewServerComment_110x64_N; toLoad.icn3 = oA_SharedReviewServerCollect_110x64_N; } else if(this.data.reviewType == "FormDistribution") { oA_ServerDistribute_110x64_N = Collab.getIcon("A_ServerDistribute_110x64_N.png"); oA_ServerRespond_110x64_N = Collab.getIcon("A_ServerRespond_110x64_N.png"); oA_ServerCollect_110x64_N = Collab.getIcon("A_ServerCollect_110x64_N.png"); toLoad.icn1 = oA_ServerDistribute_110x64_N; toLoad.icn2 = oA_ServerRespond_110x64_N; toLoad.icn3 = oA_ServerCollect_110x64_N; } } else { this.data.addInternalServer = false; toEnable.rmbr = true; if (item == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) { toShow.lmdc = true; toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_DC" + WT); toLoad.yurl = ""; toShow.yurl = false; toShow.surl = false; toLoad.rsp1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1_DC" + this.data.UB + WT); toLoad.rsp2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2_DC" + WT); toLoad.payt = AnnotsString.IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_ACROBAT; if(this.data.reviewType == "SharedReview") { oA_SharedReviewAcrobatDistribute_110x64_N = Collab.getIcon("A_SharedReviewAcrobatDistribute_110x64_N.png"); oA_SharedReviewAcrobatComment_110x64_N = Collab.getIcon("A_SharedReviewAcrobatComment_110x64_N.png"); oA_SharedReviewAcrobatCollect_110x64_N = Collab.getIcon("A_SharedReviewAcrobatCollect_110x64_N.png"); toLoad.icn1 = oA_SharedReviewAcrobatDistribute_110x64_N; toLoad.icn2 = oA_SharedReviewAcrobatComment_110x64_N; toLoad.icn3 = oA_SharedReviewAcrobatCollect_110x64_N; } else if(this.data.reviewType == "FormDistribution") { oA_AcrobatDistribute_110x64_N = Collab.getIcon("A_AcrobatDistribute_110x64_N.png"); oA_AcrobatRespond_110x64_N = Collab.getIcon("A_AcrobatRespond_110x64_N.png"); oA_AcrobatCollect_110x64_N = Collab.getIcon("A_AcrobatCollect_110x64_N.png"); toLoad.icn1 = oA_AcrobatDistribute_110x64_N; toLoad.icn2 = oA_AcrobatRespond_110x64_N; toLoad.icn3 = oA_AcrobatCollect_110x64_N; } } else { //if (app.platform == "MAC") //toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER_MAC" + WT); //else toLoad.dst1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER" + WT); dialog.load({yurl: ""}); dialog.visible({yurl: false}); var str = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER_URL" + WT); var i = this.findSelectedIndex("srvr"); app.beginPriv(); var allServers = Collab.allReviewServers(this.data.reviewType); app.endPriv(); var syncCommAvailable = true; if(this.data.reviewType == "FormDistribution") syncCommAvailable = Collab.hasSynchonizer; //remove the webdav servers from the list of servers for FormDistribution if(this.data.reviewType == "FormDistribution" && syncCommAvailable) allServers = allServers.filter(RemoveWebdav); var selServer = allServers[i]; var url = selServer.Settings.cSetting; str = str.replace(/\{cURL\}/, url); this.data.yurl = str; toLoad.yurl = ANSMBURLToPlatformPath(str); toShow.yurl = true; toShow.surl = true; toLoad.rsp1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1" + this.data.UB + WT); toLoad.rsp2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2" + WT); if(this.data.reviewType == "SharedReview") { oA_SharedReviewServerDistribute_110x64_N = Collab.getIcon("A_SharedReviewServerDistribute_110x64_N.png"); oA_SharedReviewServerComment_110x64_N = Collab.getIcon("A_SharedReviewServerComment_110x64_N.png"); oA_SharedReviewServerCollect_110x64_N = Collab.getIcon("A_SharedReviewServerCollect_110x64_N.png"); toLoad.icn1 = oA_SharedReviewServerDistribute_110x64_N; toLoad.icn2 = oA_SharedReviewServerComment_110x64_N; toLoad.icn3 = oA_SharedReviewServerCollect_110x64_N; } else if(this.data.reviewType == "FormDistribution") { oA_ServerDistribute_110x64_N = Collab.getIcon("A_ServerDistribute_110x64_N.png"); o_ServerRespond_110x64_N = Collab.getIcon("A_ServerRespond_110x64_N.png"); oA_ServerCollect_110x64_N = Collab.getIcon("A_ServerCollect_110x64_N.png"); toLoad.icn1 = oA_ServerDistribute_110x64_N; toLoad.icn2 = oA_ServerRespond_110x64_N; toLoad.icn3 = oA_ServerCollect_110x64_N; } } toLoad.clt1 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1" + this.data.UB + WT); //if (app.platform == "MAC") // toLoad.clt2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2_MAC" + WT); //else toLoad.clt2 = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2" + WT); } dialog.load(toLoad); dialog.enable(toEnable); dialog.visible(toShow); }, /* yurl: function(dialog) { var url = this.data.yurl; app.launchURL(url, true); }, */ lmdc: function(dialog) { var url = SharedString("IDS_SHARED_REVIEW_LEARN_MORE_ABOUT_DC_URL" + WT); app.launchURL(url, true); }, help: function(dialog) { app.beginPriv(); Collab.launchHelpViewer("Forms_Reviews_Distribution"); app.endPriv(); }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) { return o[i] - 1; } } return -1; }, getSelectedItemText: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return i; } return ""; }, updateServers: function(dialog) { //NOTE: This function should be called only once, which is from initialize() //update the sevrer profile list //TODO_COLLAB anmol dikumar before adding doc center pls check if its allowed //by calling IsDocCtrAvailable() var syncCommAvailable = true; if(this.data.reviewType == "FormDistribution") syncCommAvailable = Collab.hasSynchonizer; app.beginPriv(); var servers = Collab.allReviewServers(this.data.reviewType); app.endPriv(); //remove the webdav servers from the list of servers for FormDistribution if(this.data.reviewType == "FormDistribution" && syncCommAvailable) servers = servers.filter(RemoveWebdav); //ANDumpObj(servers); var srvr = {}; var idx = 1; if (syncCommAvailable) { var didSelect = false; var bServerDefault = false; for(var i in servers) { var server = servers[i]; var currIndex = (idx++); if(this.data.reviewType == "SharedReview") { if(!server.Default) currIndex = -currIndex; else bServerDefault = true; } else { if(!server.DefaultFD) currIndex = -currIndex; else bServerDefault = true; } srvr[server.UI] = currIndex; } if(!bServerDefault && servers.length > 0) { var server = servers[0]; srvr[server.UI] = -srvr[server.UI]; } if(this.data.reviewType != "FormDistribution") { if (servers.length >0) srvr[SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT)] = -(idx++); else srvr[SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT)] = (idx++); } } else { for(var i in servers) { var server = servers[i]; var currIndex = (idx++); currIndex = -currIndex; srvr[server.UI] = currIndex; } } //This inserts the item in the popup in alphabetical order. However we want it in a specific order as //defined by the XD. So use the insertEntryInList call //this.dialog.load({srvr: srvr}); { //0. First remove all the entries //1. Acrobat.com entry //2. For Forms, the email entry //3. "Your own server" entry //4. The "---" entry, add this only if there is an entry other DCServer in the servers //5. All other servers //0. First remove all the entries dialog.removeAllEntriesFromList("srvr"); //1. Acrobat.com entry if (syncCommAvailable && Collab.isDocCtrInitAvailable) { var acrobat_dot_com = {}; acrobat_dot_com[SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)] = srvr[SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)]; dialog.insertEntryInList({"srvr": acrobat_dot_com }); } //2. For Forms, the email entry if(this.data.reviewType == "FormDistribution") { var email_attachment = {}; if (!syncCommAvailable) srvr[AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL] = 2; email_attachment[AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL] = srvr[AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL]; dialog.insertEntryInList({"srvr": email_attachment}); } //3. "Your own server" entry if (syncCommAvailable) { var your_own_server = {}; your_own_server[SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT)] = srvr[SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT)]; dialog.insertEntryInList({"srvr": your_own_server}); } //4. The "---" entry, add this only if there is an entry other DCServer in the servers if (syncCommAvailable) { for (var i in servers) { //app.alert("entry: " + servers[i].UI + ":" + srvr[servers[i].UI]); if (servers[i].UI != SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT) && servers[i].UI != AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL && (servers[i].UI != SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT))) { dialog.insertSeparatorEntryInList("srvr"); break; } } } //5. All other servers if (syncCommAvailable) { for (var i in servers) { if (servers[i].UI != SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT) && servers[i].UI != AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL && (servers[i].UI != SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT))) { var entry = {}; entry[servers[i].UI] = srvr[servers[i].UI]; dialog.insertEntryInList({"srvr": entry }); } } } } }, commit: function(dialog, next) { if (next) { this.data.addInternalServer = false; app.beginPriv(); var servers = Collab.allReviewServers(this.data.reviewType); app.endPriv(); if(this.data.reviewType == "FormDistribution") syncCommAvailable = Collab.hasSynchonizer; //remove the webdav servers from the list of servers for FormDistribution if(this.data.reviewType == "FormDistribution" && syncCommAvailable) servers = servers.filter(RemoveWebdav); var i = this.findSelectedIndex("srvr"); if((i >= 0) && (i < servers.length)) { // An existing server profile was selected // need to fill the following // 1. data.server var srvr = servers[i]; this.data.server = srvr; //ANDumpObj(this.data.server); // 2. data.serverType this.data.serverType = ""; for (var j in this.data.drivers) { if (servers[i].URL == j ) this.data.serverType = this.data.drivers[j].initiatorName; } if (this.data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) this.data.UseDocumentCenter = true; else this.data.UseDocumentCenter = false; ANDumpObj(this.data.server); if(this.data.reviewType == "SharedReview") { if(!this.data.server.Default) { app.beginPriv(); Collab.setDefaultReviewServer(this.data.server.URL, this.data.server.UI, this.data.reviewType); app.endPriv(); } } else { if(!this.data.server.DefaultFD) { app.beginPriv(); Collab.setDefaultReviewServer(this.data.server.URL, this.data.server.UI, this.data.reviewType); app.endPriv(); } } if (!(this.dialog.store()["rmbr"])) { app.beginPriv(); Collab.unsetAlwaysUseServer(this.data.reviewType); app.endPriv(); } else if(((this.data.reviewType == "SharedReview" && !this.data.server.AlwaysUseServer) || (this.data.reviewType == "FormDistribution" && !this.data.server.AlwaysUseServerFD))&& (this.dialog.store()["rmbr"])) { app.beginPriv(); Collab.setAlwaysUseServer(this.data.server.URL, this.data.server.UI, this.data.reviewType); app.endPriv(); } else ;//do nothing } else { //this is add new internal server thing if (this.getSelectedItemText("srvr") == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT)) { this.data.addInternalServer = true; this.data.UseDocumentCenter = false; this.data.serverType = SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER"+WT); } } } }, description: [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, //margin_height: Collab.marginHeight, //margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", width: Collab.wizardWidth-(2*Collab.wizardMarginWidth), align_children: "align_left", alignment: "align_fill", margin_height: 16, margin_width: Collab.wizardMarginWidth, item_id: "mgr1", back_color: "white", //gradient_direction: "topToBottom", //gradient_type: "lightToDark", elements: [ { type: "static_text", name: "", alignment: "align_fill", item_id: "hdng", font: "dialog", bold: true, }, { type:"view", width: Collab.wizardWidth-(2*Collab.wizardMarginWidth), align_children: "align_row", alignment: "align_fill", elements: [ { type: "popup", width: 480,//desiredPopupWidth, The desiredPopupWidth is 5 pixels less than the desired value. Putting a hard value of 480 here. item_id: "srvr" }, ] }, ] }, { type:"view", width: Collab.wizardWidth-(2*Collab.wizardMarginWidth), margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "gap", height: 2, }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "gap", width: 110, }, { type: "gap", width: 7, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO, item_id: "payt", bold: true, font: "dialog", width: 370, truncate: "truncate_end", }, ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "image", item_id: "icn1", width: 110, height: 64, }, { type: "gap", width: 7, }, { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST" + WT), bold: true, font: "dialog" }, { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLET, }, { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", item_id: "dst1", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_DC" + WT), wrap_name: true, width: 370, }, { type: "view", align_children: "align_row", elements: [ { type: "static_text", item_id: "surl", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_SERVER_LOC, }, { type: "static_text", item_id: "yurl", name: "", alignment: "align_fill", truncate: "truncate_end", width: 270, }, ] }, ] } ] }, ] } ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "image", item_id: "icn2", width: 110, height: 64, }, { type: "gap", width: 7, }, { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP" + WT), bold: true, font: "dialog" }, { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLET, }, { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1" + UB + WT), item_id: "rsp1", wrap_name: true, width: 370, }, ] }, { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLET, }, { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2" + WT), item_id: "rsp2", wrap_name: true, width: 370, }, ] }, { type: "gap", height: 5, }, ] } ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "image", item_id: "icn3", width: 110, height: 64, }, { type: "gap", width: 7, }, { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL" + WT), bold: true, font: "dialog" }, { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLET, }, { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1" + UB +WT), item_id: "clt1", wrap_name: true, width: 370, }, ] }, { type: "view", align_children: "align_top", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLET, item_id: "cl00", }, { type: "static_text", name: ((app.platform == "MAC") ? SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2" + WT) : SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2" + WT)), item_id: "clt2", wrap_name: true, width: 370, } //removed _MAC from first ] }, { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_LEARN_MORE_ABOUT_DC, alignment: "align_fill", item_id: "lmdc", }, ] } ] } ] }, ] }, { type:"check_box", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ALWAYS_USE_THIS, alignment: "align_fill", item_id:"rmbr" } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } catch(e) { //console.println(e); //console.println(e.stack); } } IWShowSharepointWorkspace = function(data, mainDialog) { var description = { initialize: function(dialog) { // 1. load the sites in the first list this.loadWorkspaces(dialog); }, idle: function(dialog) { // doing nothing here return; }, commit: function(dialog) { //get the selected workspace and the document library }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return o[i] - 1; } return -1; }, scan: function(dialog) { }, // load a list of SharePoint workspaces into a list box loadWorkspaces: function(dialog) { if (data.sharepoint.sites) { data.sharepoint.workspaces = {} for (var i = 0; i < data.sharepoint.sites.length; i++) { // need to make the property value 1-based since the // list box negates it (i.e. makes it positive) when // its corresponding item is selected data.sharepoint.workspaces[data.sharepoint.sites[i].soapAttributes["Title"]] = -(i + 1); } //fix for bug 1920057. When there is only one entry in the workspace list, then when the dialog is initialized, no entry is selected by Javascript. //However UIT by default selects the first entry. But even though the first entry appears selected in the workspace list, its document libraries are not shown. //Because quering the document libraries for this workspace may throw up an Auth Dialog it may be irritating to the user. So the desired beahviour is: //when there is just one workspace, query the document libraries for it. //when there are more than one workspaces, don't query for any document libraries. The user will have to specifcially select the desired workspace to get its document libraries. if (data.sharepoint.sites.length == 1) data.sharepoint.workspaces[data.sharepoint.sites[0].soapAttributes["Title"]] = (1); dialog.load({"wksp": data.sharepoint.workspaces}); if (data.sharepoint.sites.length == 1) this.wksp(dialog); else dialog.load({"docl": {}}); } }, loadDocumentLibraries: function(dialog, docLibs) { dialog.load({"docl": docLibs}); }, docl: function(dialog) { var listBox = dialog.store()["docl"] for(var i in listBox) { if (listBox[i] > 0) { //var sep = (this.workspaceURL.length > 0 && this.workspaceURL.substr(-1) != "/" ? "/" : ""); this.setLocation(data.sharepoint.workspaceURLS[i]); break; } } }, wksp: function(dialog) { data.sharepoint.workspaceURL = null var listBox = dialog.store()["wksp"] for(var i in listBox) { if (listBox[i] > 0) { //dialog.load({ "locn": AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_LOADING_DOCLIBS }); var ns = "http://schemas.microsoft.com/sharepoint/soap/"; data.sharepoint.workspaceURL = data.sharepoint.sites[listBox[i] - 1].soapAttributes["Url"]; var url = CBEncodeURL(data.sharepoint.workspaceURL, true); var request = { cURL: url + "_vti_bin/Lists.asmx", oRequest: { GetListCollection : {} }, cAction: ns + "GetListCollection", bEncoded: false, cNamespace: ns, oAuthenticate: { UsePlatformAuth: true }, cResponseStyle: "Message" }; // send the request and process the response try { var response = SOAP.request(request); //var docLibs = {} data.sharepoint.workspaceURLS = {}; var result = this.getSoapValue(response[0].soapValue, "GetListCollectionResult"); if (result) { var vlists = this.getSoapValue(result, "Lists"); var docLibs = {}; var libNum = 1; var defaultLib = ""; for (var j = 0 ; j < vlists.length ; j++) { var listProps = vlists[j].soapAttributes; if (listProps.BaseType == "1" && listProps.Hidden == "False") // Document Library and not hidden { docLibs[listProps.Title] = -1; // (libNum == 1 ? libNum : -libNum); if (libNum == 1) defaultLib = listProps.Title; // Determine the URL var oURL = util.crackURL(url); var portStr = ""; if(oURL.cScheme == "http" && oURL.nPort != 80) portStr = ":" + oURL.nPort; if(oURL.cScheme == "https" && oURL.nPort != 443) portStr = ":" + oURL.nPort; var cBaseURL = ""; if( oURL.nURLType == IPV6Type) { cBaseURL = oURL.cScheme + "://" + "[" + oURL.cHost + "]" + portStr; } else { cBaseURL = oURL.cScheme + "://" + oURL.cHost + portStr; } var cPath = listProps.DefaultViewUrl; if(cPath.match(/\/Forms\//)) cPath = cPath.substr(0, cPath.lastIndexOf("/Forms/")); else cPath = cPath.substr(0, cPath.lastIndexOf("/")); data.sharepoint.workspaceURLS[listProps.Title] = encodeURI(cBaseURL + cPath); libNum++; } } this.loadDocumentLibraries(dialog, docLibs); if (defaultLib.length > 0) this.setLocation(data.sharepoint.workspaceURLS[defaultLib]); else this.setLocation(url); } else { //dialog.load({ "locn": this.location }); } } catch (e) { if (e.statusCode) { var msg = undefined; switch (e.statusCode) { case 401: case 403: msg = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICT; break; case 404: msg = AnnotsString.IDS_SERVICE_MISSING; break; } if (msg) { app.beginPriv(); app.alert({cMsg: msg, nIcon: 0}); app.endPriv(); } } // Bugfix #1348282 -- clear the list dialog.load({"docl": []}); } break; } } }, setLocation: function(loc) { data.sharepoint.location = loc; //TODO: show it in main dialog. //this.dialog.load({ "locn": this.location }); }, // Searches an array of soapValues, each with the following object format: {soapName, soapQName, soapValue}, // looking for the first one whose soapName property ends with the given name parameter. If a matching // soapValue is found, the value of its soapValue property is returned. If no matching soapValue is found // then undefined is returned. getSoapValue: function(soapValues, name) { for (var i = 0 ; i < soapValues.length ; i++) { var value = soapValues[i]; if (value["soapName"] && value["soapValue"]) { // poor man's endsWith() var index = value["soapName"].lastIndexOf(name); if (index >= 0 && name.length == value["soapName"].length - index) return value["soapValue"]; } } return undefined; }, description: { name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES_DUP, align_children: "align_left", elements: [ { type:"group", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_SHAREPOINT_MESSAGE" + WT), wrap_name: true, width: 370, // alignment: "align_fill", }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "view", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_WORKSPACES, font: "dialog", bold: true, }, { type: "list_box", item_id: "wksp", height: 100, width: 185, } ] }, { type: "view", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DOCLIBS, font: "dialog", bold: true, }, { type: "list_box", item_id: "docl", height: 100, width: 185, }, ] } ] }, { type: "ok_cancel", } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; // We must not make anything sticky here // Outputs: // this.data.serverType IWNewInternalServer = function(data, reviewType, checkSize) { var config = {}; var serverDesc = []; var serverControls = {}; for(var i in data.servers) { // Max of 10 Servers if(serverDesc.length >= 10) break; var server = data.servers[i]; DebugAlert("server.initiatorName :" + server.initiatorName + "\n server.URL " + server.URL); if(server.initiatorName != "") { var id = "svr" + i; serverControls[id] = server; serverDesc[serverDesc.length] = { type: "radio", item_id: id, group_id: "srvr", name: server.initiatorName, }; } } data.serverControls = serverControls; var description = { webdav : { oConfig: { cSetting: "", bUseWindowsIntegratedAuthentication: false, }, cVerifyURL: null, // URL to be verified cVerifiedURL: null, // URL that was verified oAuth: {}, aStates: ["writeable", "enumerable", "removeable"], nState: 0, cFileURL: null, oFileURL: null, bFoundFile: false, bDoCommit: false, bCommitCanBeDone: false, bUseWindowsIntegratedAuthentication:false, }, smb : { oConfig: { cSetting: "" }, cVerifiedURL: null, }, sharepoint : { oConfig: { cSetting: "", bUseWindowsIntegratedAuthentication: true, }, sites: null, workspaces: null, workspaceURL: null, location: null, cVerifyURL: null, // URL to be verified cVerifiedURL: null, // URL that was verified bDoCommit: false, bDoDefaultCommit: false, bDoDefaultCommitCanBeDone: false, defaultDocumentLibrary: true, aStates: ["writeable", "enumerable", "removeable"], nState: 0, cFileURL: null, bFoundFile: false, workspaceURLS: {}, }, reviewType: reviewType, initialize: function(dialog) { this.data.webdav = this.webdav; this.data.smb = this.smb; this.data.sharepoint = this.sharepoint; if (this.data.oSavedSMBState == undefined) this.data.oSavedSMBState = {}; if (this.data.oSavedSharePointState == undefined) this.data.oSavedSharePointState = {}; if (this.data.oSavedWebDavState == undefined) this.data.oSavedWebDavState = {} var toLoad = {}; var toShow = {}; var toEnable = {}; //load the icon toLoad.img1 = "C_Info_Xl_N.png"; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; toShow.chs4 = false; toLoad.hdng = SharedString("IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADING" + WT); //Initialize the status message this.setStatus(AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIALIZE); app.beginPriv(); var latestReview = Collab.getCustomServerLink('Latest'); app.endPriv(); if (this.data.previousSelectedID != undefined) { var r_id = this.data.previousSelectedID; if(r_id == "svr0") { toLoad.svr0 = true; dialog.focus("svr0"); } else if(r_id == "svr1") { toLoad.svr1 = true; dialog.focus("svr1"); } else if(r_id == "svr2") { toLoad.svr2 = true; dialog.focus("svr2"); } else { toLoad.r_id = true; dialog.focus(r_id); } var item = this.data.serverControls[r_id].initiatorName; switch (item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { if (this.data.oSavedSMBState != undefined && this.data.oSavedSMBState.cURL != undefined) toLoad.loct = this.data.oSavedSMBState.cURL; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { if (this.data.oSavedSharePointState != undefined && this.data.oSavedSharePointState.cURL != undefined) toLoad.loct = this.data.oSavedSharePointState.cURL; break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { if (this.data.oSavedWebDavState != undefined && this.data.oSavedWebDavState.cURL) toLoad.loct = this.data.oSavedWebDavState.cURL; break; } } } else if (latestReview != undefined) { if (latestReview == 'urn://ns.adobe.com/Collaboration/SharedReview/SMB') { var r_id = "svr0"; toLoad.svr0 = true; dialog.focus("svr0"); app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/SMB'); app.endPriv(); if (customURL == undefined) { if (app.platform == "WIN") customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN; else customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_MAC; } toLoad.loct = customURL; } else if (latestReview == 'urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint') { var r_id = "svr1"; toLoad.svr1 = true; dialog.focus("svr1"); app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint'); app.endPriv(); if (customURL == undefined) { customURL = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_SUGGESTION; } toLoad.loct = customURL; } else { var r_id = "svr2"; toLoad.svr2 = true; dialog.focus("svr2"); app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/WebDAV'); app.endPriv(); if (customURL == undefined) { customURL = AnnotsString.IDS_SHARED_REVIEW_WEBDAV_SUGGESTION; } toLoad.loct = customURL; } } else { var r_id = "svr0"; toLoad.svr0 = true; dialog.focus("svr0"); app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/SMB'); app.endPriv(); if (customURL == undefined) { if (app.platform == "WIN") customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN; else customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_MAC; } toLoad.loct = customURL; } var radioItem = this.data.serverControls[r_id].initiatorName; switch (radioItem) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { // 1. Hide controls for other server types toShow.butt = true; toShow.wks1 = false; toShow.wks2 = false; toShow.dcl1 = false; toShow.dcl2 = false; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; // 2. Load strings corresponding to SNF toLoad.txt1 = AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMB; toLoad.butt = AnnotsString.IDS_BROWSE; toLoad.des1 = SharedString("IDS_SHARED_REVIEW_SMB_DESCRIPTION" + WT); if (WT == "_FD") toLoad.des2 = SharedString("IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_STR2_FD"); toEnable.butt = true; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { // 1. Hide controls for other server types toShow.butt = false; //For SharePoint, we will not show the 'Get Subsites button' toShow.chs1 = true; toShow.chs2 = true; toShow.chs3 = true; // 2. Load strings corresponding to SNF toLoad.txt1 = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTION; toLoad.butt = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES; toLoad.wks2 = (this.data.sharepoint.location && this.data.sharepoint.location != "") ? this.data.sharepoint.location : ""; toLoad.dcl2 = (this.data.sharepoint.location && this.data.sharepoint.location != "") ? this.data.sharepoint.location : ""; toLoad.des1 = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION; break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { // 1. Hide controls for other server types toShow.butt = false; toShow.wks1 = false; toShow.wks2 = false; toShow.dcl1 = false; toShow.dcl2 = false; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; // 2. Load strings corresponding to WebDAV toLoad.txt1 = AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_URL; toLoad.butt = AnnotsString.IDS_SHARED_REVIEW_SMB_BROWSE_BUTTON; toLoad.des1 = AnnotsString.IDS_SHARED_REVIEW_WEBDAV_DESCRIPTION; toEnable.butt = false; break; } } //hide the server selection radio button if there's only one option (as in Form Distribution on MAC) if(serverDesc.length == 1) { toShow.hdng = false; toShow.svr0 = false; } dialog.focus("loct"); dialog.load(toLoad); dialog.visible(toShow); dialog.enable(toEnable); }, idle: function(dialog) { var toUpdate = {}; var toEnable = {}; var toShow = {}; //add all those that should be hidden as false if(this.data.reviewType == "FormDistribution") { toEnable.prev = false; } var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; if (item == AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME) { if (this.data.sharepoint.defaultDocumentLibrary) { toShow.wks1 = false; toShow.wks2 = false; toShow.dcl1 = false; toShow.dcl2 = false; } else { toShow.wks1 = true; toShow.wks2 = true; toShow.dcl1 = true; toShow.dcl2 = true; } } if (item == AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME) { if(this.data.webdav.bDoCommit) { if (this.data.webdav.bCommitCanBeDone) { this.data.webdav.bDoCommit = false; this.data.webdav.bCommitCanBeDone = false; dialog.next(); return; } } } if (item == AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME) { if (this.data.sharepoint.bDoDefaultCommit) { if (this.data.sharepoint.bDoDefaultCommitCanBeDone) { this.data.sharepoint.bDoDefaultCommit = false; this.data.sharepoint.bDoDefaultCommitCanBeDone = false; dialog.next(); return; } } } if (this.data.previousItemName != item) { toUpdate.r_id = true; toShow.chs4 = false; this.data.previousItemName = item; switch (item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: //Shared Network Folder case // 1. Hide controls for other server types toShow.butt = true; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; // 2. Load strings corresponding to SNF toUpdate.txt1 = AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMB; toUpdate.butt = AnnotsString.IDS_BROWSE; toUpdate.des1 = SharedString("IDS_SHARED_REVIEW_SMB_DESCRIPTION" + WT); toEnable.butt = true; // 3. Load in the edit field if (this.data.oSavedSMBState.cURL == undefined) { app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/SMB'); app.endPriv(); if (customURL == undefined) { if (app.platform == "WIN") customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN; else customURL = AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_MAC; } toUpdate.loct = customURL; } else toUpdate.loct = this.data.oSavedSMBState.cURL; break; case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: //SharePoint Workspace case // 1. Hide controls for other server types toShow.butt = false; //For SharePoint, we will not show the 'Get Subsites button' toShow.chs1 = true; toShow.chs2 = true; toShow.chs3 = true; // 2. Load strings corresponding to SNF toUpdate.txt1 = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTION; toUpdate.butt = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES; toUpdate.wks2 = (this.data.sharepoint.location && this.data.sharepoint.location != "") ? this.data.sharepoint.location : ""; toUpdate.dcl2 = (this.data.sharepoint.location && this.data.sharepoint.location != "") ? this.data.sharepoint.location : ""; toUpdate.des1 = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint'); app.endPriv(); if (customURL == undefined) { customURL = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_SUGGESTION; } // 3. Load in the edit field toUpdate.loct = (this.data.oSavedSharePointState.cURL == undefined) ? customURL : this.data.oSavedSharePointState.cURL; break; case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { // 1. Hide controls for other server types toShow.butt = false; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; // 2. Load strings corresponding to WebDAV toUpdate.txt1 = AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_URL; toUpdate.butt = AnnotsString.IDS_SHARED_REVIEW_SMB_BROWSE_BUTTON; toUpdate.des1 = AnnotsString.IDS_SHARED_REVIEW_WEBDAV_DESCRIPTION; toEnable.butt = false; app.beginPriv(); var customURL = Collab.getCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/WebDAV'); app.endPriv(); if (customURL == undefined) { customURL = AnnotsString.IDS_SHARED_REVIEW_WEBDAV_SUGGESTION; } // 3. Load in the edit field toUpdate.loct = (this.data.oSavedWebDavState.cURL == undefined) ? customURL : this.data.oSavedWebDavState.cURL; break; } default: { //TODO: dikumar: see what all to do here toUpdate.txt1 = ""; toUpdate.butt = AnnotsString.IDS_BROWSE; toUpdate.des1 = ""; toShow.butt = true; toShow.chs1 = false; toShow.chs2 = false; toShow.chs3 = false; toEnable.next = false; break; } } } switch (item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { // 3. Enable next if url is valid and if there is a url (obvious) var url = this.getServerURL(); var ok = false; // verify smb://{host}/{share} where {host} and {share} are not empty if (url.length > 6 && url.substr(0,6) == "smb://") { var pos = 6; // start beyond the scheme var searchPos; // scan past the host for (searchPos = pos ; searchPos < url.length ; searchPos++) if (url.charAt(searchPos) == '/') break; // verify we have an non-empty host (and still more to parse) if (searchPos > pos && searchPos < url.length) { searchPos++; // skip over the '/' for (pos = searchPos ; searchPos < url.length ; searchPos++) if (url.charAt(searchPos) == '/') break; // if we've gotten this far then we're OK if the share name is non-empty ok = (searchPos != pos); } } if (!ok && app.platform == "WIN") ok = (url.length >= 3 && url.substr(0,2) == "\\\\" && url.charAt(2) != '\\'); if (ok) { if (app.platform == "WIN") ok = (url != ANPlatformPathToURL(AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN)); else ok = (url != ANPlatformPathToURL(AnnotsString.IDS_SHARED_REVIEW_SMB_SUGGESTION_MAC)); } toEnable.next = ok; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { if (!this.data.sharepoint.defaultDocumentLibrary) { // 3. Enable workspaces button var url = dialog.store()["loct"]; var ok_ws = (url.match(/^http[s]?\:\/\/.+/) != null) toEnable.butt = ok_ws; // 4. Enable the verify, next buttons var ok_next = (this.data.sharepoint.location && this.data.sharepoint.location != ""); toEnable.next = ok_next && ok_ws; } else { var url = dialog.store()["loct"]; var ok = (url.match(/^http[s]?\:\/\/.+\//) != null) && (url != AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_SUGGESTION); dialog.enable({ next: (ok && !this.data.sharepoint.bDoDefaultCommit) }); } break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { // 3. Enable/disable the next and verify buttons depending on the URL var url = dialog.store()["loct"]; var ok = (url.match(/^http[s]?\:\/\/.+\//) != null) && (url != AnnotsString.IDS_SHARED_REVIEW_WEBDAV_SUGGESTION); dialog.enable({next: (ok && !this.data.webdav.bDoCommit)}); break; } default: { break; } } dialog.load(toUpdate); dialog.enable(toEnable); dialog.visible(toShow); return; }, commit: function(dialog, next) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; this.data.previousSelectedID = r_id; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: //Shared Network Folder case { this.data.serverType = AnnotsString.IDS_SHARED_REVIEW_SMB_NAME; if (next) { var verified = true; var url = this.getServerURL(); if (url != this.data.smb.cVerifiedURL) { verified = this.verifyURLSNF(url); if (this.data.smb.cVerifiedURL != null) this.setURLSNF(dialog, this.data.smb.cVerifiedURL); } if (verified) this.data.smb.oConfig.cSetting = this.data.smb.cVerifiedURL; // dialog.store()["loct"]; else DebugThrow (AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); } this.data.oSavedSMBState.cURL = dialog.store()["loct"]; this.data.oSavedSMBState.cVerifiedURL = this.data.smb.cVerifiedURL; this.data.oSavedSMBState.cStatus = dialog.store()["stat"]; app.beginPriv(); Collab.setCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/SMB', this.data.oSavedSMBState.cURL); app.endPriv(); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.data.serverType = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME; if (next && !this.data.sharepoint.defaultDocumentLibrary) { var url = this.getSharePointServerURL(); if (url != this.data.sharepoint.cVerifiedURL) { this.data.sharepoint.bDoCommit = true; this.verifySPF(dialog); DebugThrow("URL requires verification"); } this.data.sharepoint.oConfig.cSetting = this.data.sharepoint.cVerifiedURL; this.data.sharepoint.oConfig.bUseWindowsIntegratedAuthentication = true; } else if (next && this.data.sharepoint.defaultDocumentLibrary) { var url = CBEncodeURL(dialog.store()["loct"], true); if (url.length > 0 && url.charAt(url.length - 1) != "/") url += "/"; if (url != this.data.sharepoint.cVerifiedURL) { this.data.sharepoint.bDoDefaultCommit = true; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DEFAULTDOCLIB_CREATION); var documentLibrary; if (this.data.reviewType == "SharedReview") documentLibrary = 'AcrobatSharedReviews'; else if (this.data.reviewType == "FormDistribution") documentLibrary = 'AcrobatFormsDistribution'; createDocumentLibrary(url, documentLibrary, true, this, dialog); DebugThrow("Document Library could not be created"); } } this.data.oSavedSharePointState.cURL = dialog.store()["loct"]; this.data.oSavedSharePointState.cVerifiedURL = this.data.sharepoint.cVerifiedURL; this.data.oSavedSharePointState.cStatus = dialog.store()["stat"]; app.beginPriv(); Collab.setCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint', this.data.oSavedSharePointState.cURL); app.endPriv(); break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.data.serverType = AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME; var props = dialog.store(); if(next) { var url = props["loct"]; if (url != this.data.webdav.cVerifiedURL) { dialog.enable({"next": false}); this.data.webdav.bDoCommit = true; this.data.webdav.cVerifyURL = url; this.verifyWD(dialog); DebugThrow ("URL requires verification"); } this.data.oSavedWebDavState.cURL = dialog.store()["loct"]; this.data.webdav.oConfig.cSetting = this.data.webdav.cVerifiedURL; this.data.webdav.oConfig.bUseWindowsIntegratedAuthentication = this.data.webdav.bUseWindowsIntegratedAuthentication; } this.data.oSavedWebDavState = { cURL : props["loct"], cVerifiedURL: this.data.webdav.cVerifiedURL, cStatus: props["stat"], bUseWindowsIntegratedAuthentication: this.data.webdav.bUseWindowsIntegratedAuthentication, }; app.beginPriv(); Collab.setCustomServerLink('urn://ns.adobe.com/Collaboration/SharedReview/WebDAV', this.data.oSavedWebDavState.cURL); app.endPriv(); break; } } }, help: function(dialog) { app.beginPriv(); Collab.launchHelpViewer("Internal_Server"); app.endPriv(); }, getSelectedID: function() { var props = this.dialog.store(); for (var i in this.data.serverControls) { if (props[i]) return i; } return "svr0"; }, updateServerTypes: function() { var didSelect = false; }, getServerURL: function() { var url; var dlgData = this.dialog.store(); url = ANPlatformPathToURL(dlgData["loct"]); // ensure the URL ends with a '/' if (url.length > 0 && url.substr(-1) != "/") url = url + "/"; return url; }, setURL: function(dialog, url) { dialog.load({ "loct": url }); }, setStatus: function(status) { var statusStr = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE; this.dialog.load({ "stat": statusStr.replace(/{cStatus}/, status) }); this.dialog.resize("stat"); if (status == AnnotsString.IDS_SHARED_REVIEW_SMB_FOLDER_CREATE_ERR && app.isProtectedModeEnabled) { this.dialog.visible({"chs4":true}); this.dialog.focus("chs4"); } }, /***********************************************************************************************************************************/ //The following is for Shared Network Folder stuff // takes an SMB URL and verifies whether it is valid for a shared review by // verifying the following: // * a review folder can be created relative to the URL // * a file can be put to the newly created folder // * files can be enumerated in the folder // * the review folder (and its contents) can be deleted verifyURLSNF: function(smbURL) { var verifyResult; var errorString; var folderURI; app.beginPriv(); folderURI = encodeSMBurl(smbURL); DebugAlert("smbURL" + smbURL); if (folderURI && folderURI.length > 0) { globalCheckForSameSMBLocation (smbURL , this.data); // create a review folder this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE); folderURI += "com.adobe.acrobat"; verifyResult = Collab.uriCreateFolder(folderURI); if (!verifyResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_FOLDER_CREATE_ERR; } // put a file to the review folder if (verifyResult) { var data = SOAP.streamFromString("Testing Writeablility"); var fileURI = folderURI + "/testfile.txt"; var deleteResult; verifyResult = Collab.uriPutData(fileURI, data); if (!verifyResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_FILE_WRITE_ERR.replace(/%url%/, fileURI); } } // enumerate files in the review folder if (verifyResult) { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE); var enumerator = Collab.uriEnumerateFiles(folderURI); do { fileURI = enumerator.uriNextFile(); if (fileURI) { deleteResult = Collab.uriDeleteFile(encodeSMBurl(fileURI)); if (!deleteResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_ENUM_FILE_ERR.replace(/%url%/, fileURI); verifyResult = false; break; } } } while (fileURI); } // delete the review folder if (verifyResult) { deleteResult = Collab.uriDeleteFolder(folderURI); if (!deleteResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_DELETE_FOLDER_ERR.replace(/%url%/, folderURI); verifyResult = false; } } } else { // empty URL - report appropriate error verifyResult = false; errorString = AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID; } DebugAlert("smbURL" + smbURL); if (verifyResult) { // Fix for the bug 2650003: uriNormalize already unescaped the string and calling decode URI on the same is not correct. // Hence removing decodeURI. this.data.smb.cVerifiedURL = Collab.uriNormalize(encodeSMBurl(smbURL)); DebugAlert("this.data.smb.cVerifiedURL" + this.data.smb.cVerifiedURL) } app.endPriv(); this.setStatus(verifyResult ? AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED : errorString); return verifyResult; }, setURLSNF: function(dialog, url) { dialog.load({ "loct": (ANSMBURLToPlatformPath(url)) }); }, brwsSNF: function(dialog) { try { app.beginPriv(); var folderURI = Collab.browseForNetworkFolder(); app.endPriv(); DebugAlert("folderURI" + folderURI); if (folderURI && folderURI.length > 0) { if (folderURI.charAt(folderURI.length - 1) != "/") folderURI += "/"; if (this.verifyURLSNF(folderURI)) { this.setURLSNF(dialog, this.data.smb.cVerifiedURL); return; } } } catch (e) { if (e.message == "Volume Mount Exception") { var errMsg; switch (Number(e.errorCode)) { case 1: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR; break; case 3: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_MOUNT_ERROR; break; default: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_ERROR; break; } app.beginPriv(); app.alert(errMsg); app.endPriv(); DebugThrow ("VolMountError"); } } }, verifySNF: function(dialog) { var url = this.getServerURL(); if (this.verifyURLSNF(url)) { this.setURLSNF(dialog, this.data.smb.cVerifiedURL); // set the URL since we may have normalized it } }, //The above is for Shared Network Folder stuff /***********************************************************************************************************************************/ /***********************************************************************************************************************************/ //The following is for Webdav related stuff verifyNextStateWD: function() { var state = this.data.webdav.aStates[this.data.webdav.nState]; var task = ""; switch(state) { case "writeable": var data = SOAP.streamFromString("Testing Writeablility"); Net.HTTP.WebDAV.PutFile(this.data.webdav.cFileURL, data, this, this.data.webdav.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE; break; case "enumerable": Net.HTTP.WebDAV.EnumerateCollection(this.data.webdav.cFileURL, this, this.data.webdav.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_READ; break; case "removeable": Net.HTTP.WebDAV.DeleteFile(this.data.webdav.cFileURL, this, this.data.webdav.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE; break; } this.setStatus(task); }, onErrorWD: function(e) { if (e.text && e.text == AnnotsString.IDS_UNAUTHORIZED && this.data.webdav.bUseWindowsIntegratedAuthentication == false) { //try using the platform auth now //set the bUseWindowsIntegratedAuthentication to true. this.data.webdav.bUseWindowsIntegratedAuthentication = true; this.verifyWD(this.dialog); } else { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.onVerifyFailureWD(e.text ? e.text : AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); } }, onVerifySuccessWD: function() { this.data.webdav.nState++; if(this.data.webdav.nState >= this.data.webdav.aStates.length) { this.data.webdav.cVerifiedURL = this.data.webdav.cVerifyURL; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.dialog.enable({"next": true}); if(this.data.webdav.bDoCommit) { this.data.webdav.bCommitCanBeDone = true; //this.commit(this.dialog, true); } } else this.verifyNextStateWD(); }, onVerifyFailureWD: function(msg) { this.setStatus(msg); this.dialog.enable({"next": true}); this.data.webdav.bDoCommit = false; }, onEnumerateFileWD: function(resource) { var state = this.data.webdav.aStates[this.data.webdav.nState]; if(state == "enumerable" && !this.data.webdav.bFoundFile) { try { var oURL = util.crackURL(resource.url); this.data.webdav.bFoundFile = oURL.cHost == this.data.webdav.oFileURL.cHost && oURL.cPath == this.data.webdav.oFileURL.cPath; } catch(e) { //console.println(e); //console.println(e.stack); } } }, onEnumerateEndWD: function(resource) { if(this.data.webdav.bFoundFile) this.onVerifySuccessWD(); else this.onVerifyFailureWD(); }, onPutFileWD: function(status) { this.onVerifySuccessWD(); }, onDeleteFileWD: function(status) { this.onVerifySuccessWD(); }, verifyWD: function(dialog) { var props = dialog.store(); var url = dialog.store()["loct"]; if (url.length > 0) { this.data.webdav.nState = 0; // ensure the server URL ends with a '/' if (url.substr(-1) != "/") this.setURL(dialog, url + "/"); this.data.webdav.cVerifyURL = dialog.store()["loct"]; this.data.webdav.oAuth = (this.data.webdav.bUseWindowsIntegratedAuthentication) ? { UsePlatformAuth: true } : {}; app.beginPriv(); this.data.webdav.cFileURL = Collab.uriEncode(this.data.webdav.cVerifyURL + "com.adobe.acrobat.webdav.writeability.txt"); app.endPriv(); this.data.webdav.oFileURL = util.crackURL(this.data.webdav.cFileURL); this.data.webdav.bFoundFile = false; this.dialog.enable({"next": false}); this.verifyNextStateWD(); } else this.onVerifyFailureWD(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); }, //The above is for Webdav related stuff /***********************************************************************************************************************************/ /***********************************************************************************************************************************/ //The following is for Sharepoint related stuff // query a SharePoint server for the workspaces it is hosting sharePointwiz: function(dialog) { this.data.sharepoint.defaultDocumentLibrary = true; this.data.sharepoint.bDoDefaultCommit = false; var result = []; var ns = "http://schemas.microsoft.com/sharepoint/soap/"; try { var url = CBEncodeURL(dialog.store()["loct"], true); if(url.length > 0 && url.charAt(url.length - 1) != "/") url += "/"; // build the request object var response = {}; var request = { cURL: url + "_vti_bin/Webs.asmx", oRequest: { GetWebCollection : {} }, cAction: ns + "GetWebCollection", bEncoded: false, cNamespace: ns, oAuthenticate: { UsePlatformAuth: true }, cResponseStyle: "Message" }; // send the request and process the response try { response = SOAP.request(request); } catch(e) { if(e.toString().indexOf('E_ACCESSDENIED') != -1) { var params = { cVerb: "CONNECT", cURL: url } app.beginPriv(); Net.HTTP.request(params); app.endPriv(); response = SOAP.request(request); } else { throw (e); } } this.data.sharepoint.sites = response[0].soapValue[0].soapValue[0].soapValue; var desc = IWShowSharepointWorkspace(this.data, dialog); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); { if (result == "ok") { var toLoad = {}; var url = this.data.sharepoint.location; if(url != null) { if (url.substr(-1) != "/") url += "/"; var temp = new Array(); temp = url.split('/'); var workspaceName = temp[temp.length-3]; toLoad.wks2 = decodeURI(workspaceName); //Fix for bug4129988 var documentLibrary = temp[temp.length-2]; toLoad.dcl2 = decodeURI(documentLibrary); //Fix for bug4129988 temp = null; dialog.load(toLoad); this.verifySPF(dialog); } else { toLoad.wks2 = ""; toLoad.dcl2 = ""; dialog.load(toLoad); this.verifySPF(dialog); } } else { var toUpdate = {}; this.data.sharepoint.location = ""; toUpdate.wks2 = ""; toUpdate.dcl2 = ""; dialog.load(toUpdate); } } } catch(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); //console.println(e); //console.println(e.stack); } }, getSharePointServerURL: function() { var url; if (this.data.sharepoint.location && this.data.sharepoint.location.length > 0) url = this.data.sharepoint.location; else { if(this.oDialog != undefined ) { var dlgData = this.oDialog.store(); url = dlgData["loct"]; } } // ensure the URL ends with a '/' if (url != null && url.length > 0 && url.substr(-1) != "/") url = url + "/"; return url; }, verifyNextStateSPF: function() { var state = this.data.sharepoint.aStates[this.data.sharepoint.nState]; var task = ""; switch(state) { case "writeable": var data = SOAP.streamFromString("Testing Writeablility"); Net.HTTP.WebDAV.PutFile(this.data.sharepoint.cFileURL, data, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE; break; case "enumerable": Net.HTTP.WebDAV.EnumerateCollection(this.data.sharepoint.cVerifyURL, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_READ; break; case "removeable": Net.HTTP.WebDAV.DeleteFile(this.data.sharepoint.cFileURL, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE; break; } this.setStatus(task); }, onErrorSPF: function(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICT); app.endPriv(); this.onVerifyFailureSPF(e.text); }, onSuccessfulCreation: function(url) { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.data.sharepoint.cVerifiedURL = url; var documentLibrary; if (this.data.reviewType == "SharedReview") documentLibrary = 'AcrobatSharedReviews'; else if (this.data.reviewType == "FormDistribution") documentLibrary = 'AcrobatFormsDistribution'; this.data.sharepoint.location = this.data.sharepoint.cVerifiedURL + documentLibrary + "/"; this.data.sharepoint.oConfig.cSetting = this.data.sharepoint.location; this.data.sharepoint.oConfig.bUseWindowsIntegratedAuthentication = true; var temp = new Array(); temp = url.split('/'); var toLoad = {}; var workspaceName = temp[temp.length - 3]; toLoad.wks2 = decodeURI(workspaceName); var documentLibrary = temp[temp.length - 2]; toLoad.dcl2 = decodeURI(documentLibrary); //Fix for bug4129988 temp = null; this.data.sharepoint.bDoDefaultCommitCanBeDone = true; }, onErrorCreation: function() { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); this.data.sharepoint.bDoDefaultCommit = false; app.alert(AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DEFAULTDOCLIB_ERROR); }, onVerifySuccessSPF: function() { this.data.sharepoint.nState++; if(this.data.sharepoint.nState >= this.data.sharepoint.aStates.length) { this.data.sharepoint.cVerifiedURL = this.data.sharepoint.cVerifyURL; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.dialog.enable({"next": true}); if(this.data.sharepoint.bDoCommit) { this.commit(this.dialog, true); //this.dialog.end("fnsh"); } } else this.verifyNextStateSPF(); }, onVerifyFailureSPF: function(msg) { this.setStatus(msg); this.dialog.enable({"next": true}); }, onEnumerateFileSPF: function(resource) { var state = this.data.sharepoint.aStates[this.data.sharepoint.nState]; if(state == "enumerable" && !this.data.sharepoint.bFoundFile) { var oCheckURL = util.crackURL(unescape(resource.url)); var oMatchURL = util.crackURL(unescape(this.data.sharepoint.cFileURL)); this.data.sharepoint.bFoundFile = (oCheckURL.cPath == oMatchURL.cPath); } }, onEnumerateEndSPF: function(resource) { if(this.data.sharepoint.bFoundFile) this.onVerifySuccessSPF(); else this.onVerifyFailureSPF(); }, onPutFileSPF: function(status) { this.onVerifySuccessSPF(); }, onDeleteFileSPF: function(status) { this.onVerifySuccessSPF(); }, // verify that the server URL is a valid shared review location verifySPF: function(dialog) { this.data.sharepoint.defaultDocumentLibrary = false; this.data.sharepoint.nState = 0; var serverURL = this.getSharePointServerURL(); if (serverURL != null && serverURL.length > 0) { this.data.sharepoint.cVerifyURL = serverURL; this.data.sharepoint.cFileURL = this.data.sharepoint.cVerifyURL + "com.adobe.acrobat.sharepoint.writeability"; this.data.sharepoint.bFoundFile = false; this.dialog.enable({"next": false}); this.verifyNextStateSPF(); } else this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); }, //The above is for Sharepoint related stuff /***********************************************************************************************************************************/ /***********************************************************************************************************************************/ //The below is for making stuff common onError: function(e) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { //network folder this.brwsSNF(dialog); break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onErrorWD(e); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onErrorSPF(e); break; } } }, onVerifySuccess: function() { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onVerifySuccessWD(); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onVerifySuccessSPF(); break; } } }, onVerifyFailure: function(msg) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onVerifyFailureWD(msg); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onVerifyFailureSPF(msg); break; } } }, onEnumerateFile: function(resource) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onEnumerateFileWD(resource); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onEnumerateFileSPF(resource); break; } } }, onEnumerateEnd: function(resource) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onEnumerateEndWD(resource); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onEnumerateEndSPF(resource); break; } } }, onPutFile: function(status) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onVerifySuccessWD(); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onVerifySuccessSPF(); break; } } }, onDeleteFile: function(status) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { this.onVerifySuccessWD(); break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { this.onVerifySuccessSPF(); break; } } }, //The above is for making stuff common /***********************************************************************************************************************************/ butt: function(dialog) { var r_id = this.getSelectedID(); var item = this.data.serverControls[r_id].initiatorName; switch(item) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: //network folder this.brwsSNF(dialog); case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: //web-server folder //this is not there for webdav folder break; case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: //query the sharepoint server //DebugPrintln("-------------doing stuff for SP------------, loct = [" + loct + "]"); //this is not there for SharePoint(similar to WebDav) break; } }, chs3: function (dialog) { this.sharePointwiz(dialog); }, chs4: function (dialog) { var url = AnnotsString.IDS_SHARED_REVIEW_NETWORK_FOLDER_SET_CONFIG_GUIDE; app.launchURL(url, true); }, vrfy: function(dialog) { DebugAlert("This function should not have been called. Find the place and fix it"); DebugThrow("This function should not have been called. Find the place and fix it"); }, description: [ { type: "view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: "", alignment: "align_fill", item_id: "hdng", font: "dialog", bold: true, }, { type: "view", align: "align_top", elements: serverDesc }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMB, alignment: "align_fill", //height: { prod: [ 2, { edit_text_height: [] } ] }, item_id: "txt1", font: "dialog", bold: true, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", item_id: "loct", alignment: "align_fill" }, { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES, item_id: "butt", }, ] }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "static_text", name: "Status:", alignment: "align_fill", item_id: "stat", }, { type: "link_text", name: AnnotsString.IDS_MSG_REDACTION_ALERT_LEARNMORE, alignment: "align_left", item_id: "chs4", }, ] }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_SHAREPOINT_AUTOMATIC" + DT), alignment: "align_fill", item_id: "chs1", }, ] }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_SHAREPOINT" + ST), alignment: "align_left", item_id: "chs2", }, { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_CHOOSE_SUBSITE, item_id: "butt", alignment: "align_left", item_id: "chs3", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_WORKSPACE_TITLE, item_id:"wks1" }, { type: "static_text", width: 140, truncate: "truncate_middle", item_id: "wks2", }, { type: "gap", width: 10, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DOCUMENT_LIBRARY_TITLE, item_id: "dcl1", }, { type: "static_text", width: 140, truncate: "truncate_middle", item_id: "dcl2", }, ] }, { type: "gap", height: 10, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_top", elements: [ { type: "gap", width: 20, }, { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "view", align_children: "align_left", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SMB_DESCRIPTION, item_id: "des1", alignment: "align_fill", wrap_name: true, width: 420, height: { prod: [ 7, { edit_text_height: [] } ] }, //Fix for bug4132535 }, { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_STR2" + UB), item_id: "des2", wrap_name: true, width: 420, alignment: "align_fill", height: { prod: [3, { edit_text_height: [] }] }, }, ] } ] } ] }, ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; // submit button dialog has been dropped in A9 but its still in the step logic so the defn is present here IWSubmitButton = function(reviewType, checkSize) { var description = { initialize: function(dialog) { var toLoad = {}; dialog.enable({next: false}); dialog.focus("vrfy"); dialog.load(toLoad); }, vrfy: function(dialog) { //complete the wizard by sending the information to the form //this.updateAddrs(dialog, false); DebugAlert("in function place submit button"); //var addrs; try { //dialog.visible(false); //this.commitCurStep(false); // this.data.placeSubmitButton = true; dialog.end("very"); } catch(e) { DebugAlert("Something Wrong happend here"); } }, description: [ { type: "view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: "The system cannot detect a submit button in the form you created/modified. The Submit button is needed for people to return forms data back to you automatically. Click Place Submit Button to place the Submit button.", item_id: "txt0", font: "dialog", //width: Collab.wizardWidth, width: 420, wrap_name: true, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "button", name: "Place Submit Button", item_id: "vrfy", }, ] }, { type: "gap", height: 150, }, { type: "cluster", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "view", align_children: "align_left", elements: [ { type: "static_text", name: "Use your mouse to place the Submit button where you want it to appear. Once the button is placed, you will be asked where you would like the data returned. You will then be returned to this Form Distribution Form wizard.", item_id: "des1", width: Collab.wizardWidth, wrap_name: true, }, ] } ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } //Step outputs // data.distributionMethod {"MANUAL", "EMAIL", "UPLOAD"} // data.distributionURL // data.distributionFS IWDistributeStepDescription = function(reviewType, checksize) { var description = { initialize: function(dialog) { this.data.docWarningPopped = false; this.data.serverConfigToAdd = this.getServerConfigToAdd(); app.beginPriv(); Collab.updateMountInfo(); app.endPriv(); if(typeof this.data.distributionMethod == "undefined") this.data.distributionMethod = "EMAIL"; var toLoad = {}; var toHide = {}; //Put those to be hidden here as false toHide.help = false; if(this.data.reviewType == "FormDistribution" && this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") { toHide.tmsg = false; toHide.attc = false; toHide.send = false; if(this.data.distributionMethod == "UPLOAD") this.data.distributionMethod = "EMAIL"; } switch(this.data.distributionMethod) { default: case "EMAIL": toLoad.invi = true; toLoad.attc = true; toLoad.save = false; break; case "UPLOAD": toLoad.invi = true; toLoad.send = true; toLoad.save = false; break; case "MANUAL": toLoad.save = true; toLoad.invi = false; toLoad.attc = false; break; } switch(this.data.distributionMethod) { case "MANUAL": this.save(dialog); break; case "EMAIL": app.beginPriv(); var path = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.dest = (this.data.doc.requiresFullSave) ? "" : path; toHide.fsav = false; toHide.dest = false; toHide.brws = false; toHide.tmsg = true; toHide.attc = true; toHide.send = true; break; case "UPLOAD": toHide.fsav = false; toHide.dest = false; toHide.brws = false; toHide.tmsg = true; toHide.attc = true; toHide.send = true; break; } //load the icon toLoad.img1 = "C_Info_Xl_N.png"; if(typeof this.data.previousDestination != "undefined") toLoad.dest = this.data.previousDestination; dialog.focus("next"); dialog.visible(toHide); dialog.load(toLoad); }, invi: function(dialog) { var props = dialog.store(); if(this.data.reviewType == "FormDistribution" && this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") props.attc = true; if(props.attc) this.attc(dialog); else if(props.send) this.send(dialog); var toHide = { "fsav": false, "dest": false, "brws": false, "tmsg": true, "attc": true, "send": true, }; dialog.visible(toHide); }, attc: function(dialog) { var toLoad = {}; var props = dialog.store(); if(props.invi && !props.attc && !props.send) toLoad.attc = true; dialog.load(toLoad); }, getServerConfigToAdd: function() { switch (this.data.serverType) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { return this.data.smb.oConfig; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { return this.data.sharepoint.oConfig; break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { return this.data.webdav.oConfig; break; } } }, send: function(dialog) { // Bugfix #1391364 - preload the control with the default save location for links //var cDefaultLink = this.data.server.Settings.cSetting; // TODO: Fix in 9.0 var cDefaultLink = this.data.serverConfigToAdd.cSetting; cDefaultLink += this.data.cDocumentName; this.data.distributionURL = cDefaultLink; }, save: function(dialog) { var toLoad = {}; // Bugfix #1391364 - preload the control with the default save location for links app.beginPriv(); var path = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.dest = (this.data.doc.requiresFullSave) ? "" : path; // Publish file to a server - switch the text dialog.load(toLoad); var toHide = { "fsav": true, "dest": true, "brws": true, "tmsg": false, "attc": false, "send": false, }; dialog.visible(toHide); }, "brws": function(dialog) { var browseProps = { bSave: true, cFilenameInit: this.data.cDocumentName, bUnicode: true, } var props = dialog.store(); this.data.distributionMethod = "MANUAL"; app.beginPriv() var path = app.browseForDoc(browseProps); app.endPriv(); if(path) { try { var saveURL; this.data.distributionFS = path.cFS; switch(this.data.distributionMethod) { case "MANUAL": this.data.cDocumentPath = path.cPath; this.data.cDocumentName = this.data.cDocumentPath.substring(this.data.cDocumentPath.lastIndexOf('/') + 1, this.data.cDocumentPath.length); break; } app.beginPriv(); saveURL = Collab.convertDIPathToPlatformPath(path.cPath); app.endPriv(); dialog.load({dest: saveURL}); } catch (e) { if (e.message == "Volume Mount Exception") { var errMsg; switch (Number(e.errorCode)) { case 1: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR; break; case 3: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_MOUNT_ERROR; break; default: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_ERROR; break; } app.beginPriv(); app.alert(errMsg); app.endPriv(); DebugThrow ("VolMountError"); } } } }, normalizeURL: function(url) { // The Collab.uriNormalize function may need to access the file system // to perform its function. For this reason we need to pass it a valid // path. Since the file that is selected in browseForDoc may not exist // the path stored in url may not be fully resolvable. So, we need to strip // off the file portion of the url before passing it to Collab.uriNormalize. // After normalizing the url we need to append the file portion back on // to the url. /* This function is not used anymore in the new Shared Review Wizard. If you start using it please ensure that URL is proparly escaped in uriNormalize method as it will eventually unescape */ var lastSepIndex = url.lastIndexOf('/'); if (lastSepIndex >= 0) { var dirURL = url.substr(0, lastSepIndex + 1); var suburl = url.substr(lastSepIndex + 1); app.beginPriv(); url = Collab.uriNormalize(dirURL) + suburl; app.endPriv(); } return url; }, fixURL: function(url) { if(url.match(/^\\\\/)) // really a windows network path { // trailing slash? add a file name url = url.replace(/\\\.?$/, "\\" + this.data.cDocumentName); } else // trailing slash? add a file name url = url.replace(/\/\.?$/, "/" + this.data.cDocumentName); // no .pdf ending? add it if(!url.match(/\.pdf$/i)) { if(url.match(/\.$/)) url += "pdf"; else url += ".pdf"; } return url; }, getFS: function(url) { if(url.match(/^\\\\/) || url.match(/^.+:\\/)) // really a windows path return fileSystem['default']; else if(url.match(/^file:\/\//) || url.match(/^smb:\/\//)) // SMB URL return fileSystem['default']; else return fileSystem.WebDAV; }, getSeparator: function(url) { var pathSep = "/"; if(url.match(/^\\\\/) || url.match(/^.+:\\/)) // really a windows path { pathSep = "\\"; } else if(url.match(/^(http[s]|file):\/\//)) // URL Scheme { pathSep = "/"; } return pathSep; }, getFilename: function(url) { var pathIndex = url.lastIndexOf(this.getSeparator(url)); if (pathIndex >= 0) url = url.substr(pathIndex + 1); return url; }, getDirectory: function(url) { var pathIndex = url.lastIndexOf(this.getSeparator(url)); if (pathIndex >= 0) url = url.substr(0, pathIndex + 1); return url; }, URLToDiPath: function(url) { if(url.match(/^\\\\/)) // really a windows network path url = url.replace(/\\/g, "/").replace(/^\/\//, "/"); else { url = url.replace(/^file:\/\/localhost\//, "/"); url = url.replace(/^file:\/\/\//, "/"); url = url.replace(/^file:\/\//, "/"); url = url.replace(/^\/([^\/]+)\|\//, "/$1/"); } return unescape(url); }, URLPartialOk: function(dest) { switch(app.platform) { case "MAC": return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/)|(?:smb:\/\/).+\/.*$/); case "WIN": return dest.match(/^(?:http[s]?:\/\/.+\/.*$)|(?:file:\/\/.+\/.*$)|(?:\\\\[^\\]+\\.*$)/); default: return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/\/).+\/.*$/); } }, idle: function(dialog) { // XXX this stinks if(this.data.reviewType != "FormDistribution" && this.data.doc && !this.data.docWarningPopped) { this.data.docWarningPopped = true; if (this.data.docModifiable == undefined) { this.data.docModifiable = this.data.doc.requestPermission(permission.document, permission.modify) == permission.granted; } app.beginPriv(); if(this.data.doc.certified) app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED}); else if(!this.data.docModifiable) { var str = AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_NOT_MODIFIABLE; if(Collab.isSharedReview(this.data.doc)) str = AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_SHARED_REVIEW; app.alert({cMsg: str}); } app.endPriv(); } var props = dialog.store(); var toEnable = { next: true }; if(this.data.reviewType == "FormDistribution" && this.data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { toEnable.prev = false; } // Update the next button if(this.data.reviewType != "FormDistribution") { if(props.send && props.invi) { // dikumar: The login to enable the next button is different in the case of send a link. As there is no place to specify the url // partialOKURL is always null. Hence next was always disabled. /* var partialOKURL = this.URLPartialOk(props.dest); if(this.data.doc != null) { var dispVal = partialOKURL ? AnnotsString.IDS_SHARED_REVIEW_UPLOAD_TEMPLATE.replace(/%url%/, this.fixURL(props.dest)) : AnnotsString.IDS_SHARED_REVIEW_UPLOAD_TEMPLATE.replace(/%url%/, "--"); if(props.disp != dispVal) dialog.load({disp: dispVal }); toEnable.next = this.data.docModifiable && !this.data.doc.certified && partialOKURL != null; }*/ toEnable.next = this.data.docModifiable && !this.data.doc.certified; } else if (props.save) { toEnable.next = this.data.docModifiable && !this.data.doc.certified && props.dest != null && props.dest.match(/\.pdf$/i) != null; } else { toEnable.next = this.data.docModifiable && !this.data.doc.certified ; } } var toHide = {}; if(this.data.reviewType == "FormDistribution" && this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/Email") { toHide.tmsg = false; toHide.attc = false; toHide.send = false; } toHide.disp = props.send && props.invi; dialog.enable(toEnable); dialog.visible(toHide); }, commit: function(dialog, next) { if(next) { var props = dialog.store(); var locationProps = {}; // The radios look like: // *invi // *save // *attc // *send // This gives 3 possible states since we ignore attc and send if save is selected if(props.save) { // Don't send, save a copy locally this.data.distributionMethod = "MANUAL"; this.data.distributionFS = this.getFS(props.dest); this.data.previousDestination = props.dest; app.beginPriv(); this.data.cDocumentPath = Collab.convertPlatformPathToDIPath(props.dest); app.endPriv(); this.data.cDocumentName = this.data.cDocumentPath.substring(this.data.cDocumentPath.lastIndexOf('/') + 1, this.data.cDocumentPath.length); } else if(props.attc) { DebugAlert("Coming here" + this.data.cDocumentPath); // Send an attachment and save a copy locally this.data.distributionMethod = "EMAIL"; this.data.distributionFS = this.getFS( this.data.cDocumentPath); } else { // Save remotely and send a link this.data.distributionMethod = "UPLOAD"; this.data.distributionURL = this.fixURL(this.data.distributionURL); this.data.distributionFS = this.getFS(this.data.distributionURL); if(this.data.Error_DocumentLocationAndRepositoryLocationSame == true) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_ERROR_SAME_LOCATION_FOR_FILE_REPOSITORY); app.endPriv(); DebugThrow ("Cannot choose same folder") } } } DebugAlert("data.distributionFS"+this.data.distributionFS); DebugAlert("distributionURL"+this.data.distributionURL); DebugAlert("cDocumentPath"+this.data.cDocumentPath); DebugAlert("cDocumentName"+this.data.cDocumentName); }, description: [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", alignment: "align_fill", font: "dialog", bold: true, item_id: "hdng", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING" + WT), }, { type: "radio", item_id: "invi", group_id: "dist", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SEND_INVITE }, { type: "radio", item_id: "save", group_id: "dist", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SAVE_LOCAL, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "gap", width: 5, }, { type: "view", alignment: "align_fill", elements: [ { type: "static_text", alignment: "align_fill", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SAVE_LOCAL_LOCATION, item_id: "fsav", }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", item_id: "dest", alignment: "align_fill", readonly: app.isProtectedModeEnabled, }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws" }, ] }, ] }, ] }, { type: "static_text", alignment: "align_fill", font: "dialog", bold: true, item_id: "tmsg", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTION_STEP_RADIO_SUBHEADING" + WT), }, { type: "radio", item_id: "send", group_id: "type", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SEND_URL }, { type: "radio", item_id: "attc", group_id: "type", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_ATTACH_TO_EMAIL }, { type: "gap", height: 40, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_top", elements: [ { type: "gap", width: 20, }, { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "view", align_children: "align_left", elements: [ { type: "static_text", name: SharedString("IDS_SHARED_REVIEW_DISTRIBUTION_SEND1" + WT), item_id: "des1", alignment: "align_fill", wrap_name: true, width: 420, height: { prod: [ 3, { edit_text_height: [] } ] }, }, ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } IWSaveProfileStepDescription = function(reviewType, checksize) { var description = { initialize: function(dialog) { var toLoad = {}; var toShow = {}; toShow.help = false; //Initialize the edit box. var profileNameInitial = "" app.beginPriv(); var servers = Collab.allReviewServers(this.data.reviewType); app.endPriv(); for (var j in this.data.drivers) { if (this.data.serverType == this.data.drivers[j].initiatorName) { profileNameInitial = this.data.drivers[j].initiatorDefaultName; break; } } // Initialize aSer switch (this.data.distributionMethod) { case "EMAIL": profileNameInitial += AnnotsString.IDS_SHARED_REVIEW_NAME_SUGGEST_EMAIL; toLoad.aHow = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_EMAIL; toShow.aSer = false; toShow.aLnk = false; break case "UPLOAD": { profileNameInitial += AnnotsString.IDS_SHARED_REVIEW_NAME_SUGGEST_UPLOAD; toLoad.aHow = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_UPLOAD; switch (this.data.serverType) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: toLoad.aSer = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SMB_UPLOAD; break; case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: toLoad.aSer = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SHAREPOINT_UPLOAD; break; case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: toLoad.aSer = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_WEBDAV_UPLOAD; break; } break; } case "MANUAL": profileNameInitial += AnnotsString.IDS_SHARED_REVIEW_NAME_SUGGEST_MANUAL; toLoad.aHow = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_MANUAL; toShow.aSer = false; toShow.aLnk = false; break } toLoad.pNam = profileNameInitial; toLoad.icn1 = "C_Info_Xl_N.png"; toLoad.img1 = "C_Info_Xl_N.png"; // Initialize aLnk var srvr = this.getServerToAdd(); var config = this.getServerConfigToAdd(); var aLink = AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_URL; aLink = aLink.replace(/{cServerUrl}/, config.cSetting); var iLink = aLink; toLoad.aLnk = ANSMBURLToPlatformPath(aLink); this.data.aLnk = aLink; if ((this.data.serverType != AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME) || (this.data.distributionMethod != "UPLOAD")) { toShow.aMs1 = false; toShow.aMs2 = false; toShow.aMs3 = false; toShow.aMs4 = false; } else { var temp = new Array(); temp = iLink.split('/'); var workspaceName = temp[temp.length-3]; toLoad.aMs2 = workspaceName; var documentLibrary = temp[temp.length-2]; toLoad.aMs4 = documentLibrary; temp = null; } dialog.focus("next"); dialog.load(toLoad); dialog.visible(toShow); }, aLnk: function(dialog) { app.launchURL(this.data.aLnk, true); }, idle: function(dialog) { // check if the profile name is not null, enable the next button only if a name is given. var props = dialog.store(); var bResult = props["pNam"].length > 0 var toEnable = { next: bResult }; dialog.enable(toEnable); }, commit: function(dialog, next) { if(next) { // 1. Only input from this wizard step is the name of the profile. var props = dialog.store(); var profileName = props["pNam"]; this.data.profileName = profileName; // 2. check if the profile name already exists or not app.beginPriv(); var servers = Collab.allReviewServers(this.data.reviewType); app.endPriv(); for(var i in servers) { var srvr = servers[i]; if(profileName == srvr.UI) { var msg = AnnotsString.IDS_SHARED_REVIEW_SERVER_PROFILE_NAME_NOT_UNIQUE.replace(/\{cServerProfileName\}/, profileName) app.beginPriv(); app.alert({cMsg: msg}); app.endPriv(); DebugThrow ("Server Name not Unique") } } // 3. All the profile related details have already been entered by the user in the previous two wizard steps // Add the new server to the list of profiles if (this.data.addInternalServer || ((this.data.server != undefined && this.data.server.URL == "urn://ns.adobe.com/Collaboration/Forms/InternalServer"))) { var srvr = this.getServerToAdd(); // IMP NOTE: // This does not work // this.data.server.Settings = this.getServerConfigToAdd(); // So copy one by one var config = this.getServerConfigToAdd(); var server = { Settings: config, UI: this.data.profileName, URL: srvr.driverURL, Default: false, DefaultFD: false, DistMethod: this.data.distributionMethod, } if(this.data.reviewType == "SharedReview") server.Default = true; else server.DefaultFD = true; this.data.server = server; //before adding the profile check the remote file/local file //This shd be done if identity is present. If identity is not present, then we should first get the identity and then do this. if(ANValidateIdentity()) DistributionServerStepCommitWork(this.data); app.beginPriv(); Collab.addReviewServer(server.URL, server.UI, config, this.data.distributionMethod ); app.endPriv(); app.beginPriv(); Collab.setDefaultReviewServer(server.URL, server.UI, this.data.reviewType); app.endPriv(); } } }, getServerToAdd: function() { for (var i in this.data.servers) { if (this.data.servers[i].initiatorName == this.data.serverType) return this.data.servers[i]; } DebugThrow ("ServerType is not set"); }, getServerConfigToAdd: function() { switch (this.data.serverType) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { return this.data.smb.oConfig; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { return this.data.sharepoint.oConfig; break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { return this.data.webdav.oConfig; break; } } }, description: [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", elements: [ { type: "gap", height: 10, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_PROFILE, alignment: "align_fill", bold: true, font: "dialog" }, { type: "edit_text", item_id: "pNam", alignment: "align_fill", }, { type: "gap", height: 10, }, { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_CONF_SUMMARY, alignment: "align_fill", bold: true, font: "dialog" }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_UPLOAD, alignment: "align_fill", item_id: "aHow", }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SHAREPOINT_UPLOAD, alignment: "align_fill", item_id: "aSer", }, { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_URL, alignment: "align_fill", item_id: "aLnk", truncate: "truncate_end", }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_WORKSPACE_NAME, item_id: "aMs1", }, { type: "static_text", item_id: "aMs2", alignment: "align_fill", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_DOCUMENT_LIBRARY, item_id: "aMs3", }, { type: "static_text", item_id: "aMs4", alignment: "align_fill", }, ] }, ] }, { type: "gap", height: 20, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_top", elements: [ { type: "gap", width: 20, }, { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "view", align_children: "align_left", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_TIP_DESCRIPTION, item_id: "des1", alignment: "align_fill", wrap_name: true, width: 420, }, ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } // This utility function returns the updated newRequired and newOptional reviewers list. // Filtering is done to remove any address already present in old lists. // Also if address is present in both newRequired and newOptional , it will be removed from newOptional // To sum up, formulas for filtering are: // newReqR = (newReqR) - (oldReqR Union oldOptR) - initiatorEmail // newOptR = (newOptR) - (oldReqR Union oldOptR) - (newReqR) - initiatorEmail // function CBRunSimpleWizNew(wizard, startStepNum, endStepNum, data) function filterAddrs(oldReqR, oldOptR, initiatorEmail, newReqR, newOptR) { var resultVec1 = []; var resultVec2 = []; var i,j,k,l = 0; i=j=k=l=0; for(i in newReqR) { l = oldReqR.length > oldOptR.length ? oldReqR.length : oldOptR.length; for (k = 0; k < l; k++) { if(k < oldOptR.length && newReqR[i] == oldOptR[k]) break; if(k < oldReqR.length && newReqR[i] == oldReqR[k]) break; } if(k == l && newReqR[i] != initiatorEmail) { resultVec1[j++] = newReqR[i]; } } //newReqR = resultVec1; for(i in resultVec1) { newReqR[i] = resultVec1[i]; } newReqR.length = resultVec1.length; j = 0; for(i in newOptR) { l = oldReqR.length > oldOptR.length ? (oldReqR.length > newReqR.length ? oldReqR.length : newReqR.length) : (oldOptR.length > newReqR.length ? oldOptR.length : newReqR.length); for (k = 0; k < l; k++) { if(k < oldOptR.length && newOptR[i] == oldOptR[k]) break; if(k < oldReqR.length && newOptR[i] == oldReqR[k]) break; if(k < newReqR.length && newOptR[i] == newReqR[k]) break; } if(k == l && newOptR[i] != initiatorEmail) { resultVec2[j++] = newOptR[i]; } } //newOptR = resultVec2; for(i in resultVec2) { newOptR[i] = resultVec2[i]; } newOptR.length = resultVec2.length; DebugAlert("new req r " + newReqR); DebugAlert("new opt r " + newOptR); } var deadlineDate = AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE; var internalDeadlineDate = ""; var objectDeadlineDate = new Date(); function setDateAndTime (newExternalDate, newInternalDate) { internalDeadlineDate = newInternalDate; if(internalDeadlineDate == "") deadlineDate = AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE; else deadlineDate = newExternalDate; } IWEmailStepDescription = function(reviewType) { var accessLevels = {}; var description = { initialize: function(dialog) { var toLoad = {}; var toEnable = {}; var toShow = {}; if(!this.data.reqR) this.data.reqR = []; if(!this.data.optR) this.data.optR = []; // Initialize the "To" and "CC" fields if(this.data.reviewType == "FormDistributionEmail" || this.data.reviewType == "SharedReviewEmail") { toEnable.acl1 = false; toShow.prev = false; } // UI changes related to deadline if(this.data.reviewType == "ShareFile") { //disable the deadline button //DebugAlert("disabling deadline buttons"); toShow = {dlnk: false, dydt:false}; } //Delivery method { this.data.deliveryMethodLinkClicked = false; if(this.data.reviewType == "SharedReview"|| this.data.reviewType == "FormDistribution") { toShow.dlvS = true; toShow.dlvL = true; toLoad.dlvS = this.data.server.UI; //correct the delivery method in case of email attachment manually send case if(this.data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL && this.data.distributionMethod == "MANUAL") { toLoad.dlvS = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL + AnnotsString.IDS_SHARED_REVIEW_NAME_SUGGEST_MANUAL; } else if (this.data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) { toLoad.dlvS = AnnotsString.IDS_TRACKER_ACROBAT_DOT_COM; } } else { toShow.dlvS = false; toShow.dlvL = false; } } if (this.data.reviewType == "SharedReview") { if (this.data.deadlineIsSet == undefined) { app.beginPriv(); var defaultDate = Collab.getDefaultDateAndTime(); app.endPriv(); deadlineDate = defaultDate.externalDate; internalDeadlineDate = defaultDate.internalDate; var year = parseInt(internalDeadlineDate.substr(2, 4), 10); var month = parseInt(internalDeadlineDate.substr(6, 2), 10); var day = parseInt(internalDeadlineDate.substr(8, 2), 10); var hours = parseInt(internalDeadlineDate.substr(10, 2), 10); var minutes = parseInt(internalDeadlineDate.substr(12, 2), 10); var seconds = parseInt(internalDeadlineDate.substr(14, 2), 10); objectDeadlineDate.setUTCFullYear(year, month-1, day); objectDeadlineDate.setUTCHours(hours, minutes, seconds); this.data.deadlineIsSet = true; } toLoad.dydt = deadlineDate; } else if(this.data.reviewType == "SharedReviewEmail" ) { if(this.data.internalDeadline == "") this.data.deadline = AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE; toLoad.dydt = this.data.deadline; deadlineDate = this.data.deadline; internalDeadlineDate = this.data.internalDeadline; } if(this.data.reviewType == "SharedReviewEmail" && this.data.action == "AddReviewers") { toEnable.dlnk = false; toEnable.dydt = false; } if(this.data.reviewType == "SharedReviewEmail" && this.data.action == "ChangeDeadline") { toEnable.mesg = false; toEnable.subj = false; toEnable.pLnk = false; } //Allow Anonymous checkbox should only be visible in case of FD if(this.data.reviewType == "FormDistribution") { toShow.anny = true; toLoad.anny = true; } else { toShow.anny = false; } this.updateAddrs(dialog, true); toShow.ertc = false; //Do we need to display the ACL or not if (this.data.UseDocumentCenter == true) { toShow.sAcl = true; toShow.pAcl = true; if(this.data.action == "AddReviewers" || this.data.action == "ChangeDeadline") { toEnable.sAcl = false; toEnable.pAcl = false; if(this.data.accessLevel == "Restricted") { accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS" + WT)] = -1; accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS" + WT)] = 2; } else { accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS" + WT)] = 1; accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS" + WT)] = -2; } } else { accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS" + WT)] = 1; accessLevels[SharedString("IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS" + WT)] = -2; } toLoad.pAcl = accessLevels; } else { toShow.sAcl = false; toShow.pAcl = false; } // Initialize the "Subject" and the "Message Body" { //TODO: dikumar: The below code is to customize and initialize the email message. // This is different for different review types if ((this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution") || (this.data.reviewType == "SharedReviewEmail" && this.data.action == "AddReviewers") || (this.data.reviewType == "FormDistributionEmail")) { this.cannedSubj = this.data.cannedSubj; this.cannedMsg = this.data.cannedMsg; var temp = ""; if(this.data.docPath) temp = this.data.docPath.match(/[^\/]*$/); var docName = (this.data.doc && this.data.doc.documentFileName) ? this.data.doc.documentFileName : temp; if (app.platform == "WIN" && docName != "") { docName = docName.substring(docName.lastIndexOf('\\') + 1); //Bug #1046690. Remove the path info if any, from the filename } else if (app.platform == "MAC" && docName != "") { // we have the same problem on the mac as windows. I suspect that what happened here is that // we are mixed up throughout the code about whether we are passing di paths or platform // paths, so sometimes we end up in this case with document name trimmed, and sometimes // we end up with document name in a fully qualified path. I'd much rather assume that // the path is one or the other, do the conversion and trim it (or assume that it was // passed to us already trimmed), but there are many entry points to this code and // it's lower risk late in the game for Atlas to simply do the same hack we're already // doing on windows. At some point, the use of paths in this file should be // unified. docName = docName.substring(docName.lastIndexOf(':') + 1); } var bNameHasPercentEncoding = false; var decodedDocName = ""; if (docName.indexOf('%') != -1 && this.data.decodedURL && (typeof this.data.decodedURL == "string")) { bNameHasPercentEncoding = true; decodedDocName = this.data.decodedURL.substring(this.data.decodedURL.lastIndexOf('/') + 1); } if(!this.data.msg || this.data.msgChanged) { if (bNameHasPercentEncoding) this.data.msg = this.cannedMsg.replace(/%docname%/g, decodedDocName + " (" + docName + ")"); else this.data.msg = this.cannedMsg.replace(/%docname%/g, docName); } if(!this.data.subj || this.data.msgChanged) { if (bNameHasPercentEncoding) this.data.subj = this.cannedSubj.replace(/%docname%/, decodedDocName); else this.data.subj = this.cannedSubj.replace(/%docname%/, docName); } this.data.msgChanged = false; this.data.subj = this.data.cannedSubj.replace(/%docname%/, (this.data.cDocumentName)); // ------------------------------------------------------------------------------ } if ((this.data.reviewType == "SharedReview") || (this.data.reviewType == "FormDistribution") || (this.data.reviewType == "SharedReviewEmail" && this.data.action == "AddReviewers") || (this.data.reviewType == "FormDistributionEmail") || (this.data.reviewType == "ShareFile" )) { //Updating the message here //1. First check for the previous message (the user may edit and then press previous.) //2. Check for customMessage //3. If undefined, the use default message. //1. First check for the previous message (the user may edit and then click press previous.) // We are not storing the previous message in all the cases //2. Check for customMessage { app.beginPriv(); var customMessage = Collab.getCustomEmailMessage(this.data.distributionMethod, this.data.reviewType, this.data.UseDocumentCenter); app.endPriv(); this.data.msg = customMessage; } //3. If undefined, the use default message. if (this.data.msg == undefined) { this.data.msg = this.getDefaultEmailMessage(); } this.data.msg = this.replaceParamsByValues(this.data.msg); if (this.data.distributionMethod == "MANUAL") { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "SharedReviewEmail") { this.data.msg = ""; toShow.pLnk = false; toShow.icon = false; toShow.attm = false; toShow.aDoc = false; toEnable.sSub = false; toEnable.subj = false; toEnable.sMsg = false; toEnable.mesg = false; } else if(this.data.reviewType == "FormDistribution") { this.data.msg = ""; toShow.addr = false; toShow.reqR = false; toShow.pLnk = false; toShow.icon = false; toShow.attm = false; toShow.aDoc = false; toShow.sSub = false; toShow.subj = false; toShow.sMsg = false; toShow.mesg = false; } } if (this.data.reviewType == "ShareFile") { this.data.subj = this.getShareFileSubject(); app.beginPriv(); var username = this.data.swConn.getFullName() app.endPriv(); this.data.subj = this.data.subj.replace(/%username%/,username); } if ((this.data.distributionMethod == "UPLOAD") && (this.data.UseDocumentCenter == true)) { if (this.data.reviewType == "ShareFile") this.data.msg = this.data.msg + AnnotsString.IDS_SHARE_FILE_PREVIEW_EMAIL_ADDON; else this.data.msg = this.data.msg + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDON } this.data.msgChanged = false; // Do this so the Email preview doesn't whack our invite } if(this.data.reviewType == "SharedReviewEmail" && this.data.action == "ChangeDeadline") { this.data.msg = ""; this.data.subj = ""; } // ------------------------------------------------------------------------------ toLoad.mesg = this.data.msg; toLoad.subj = this.data.subj; }//End of {The following code snippet is to update the subject and the message body} // focus on the "Address Book" button dialog.focus("addr"); toEnable.addr = app.addressBookAvailable; // Following code to update/show the attachment icon and text { if ((this.data.distributionMethod == "UPLOAD") || (this.data.UseDocumentCenter == true ) || (this.data.reviewType == "SharedReviewEmail" && this.data.action == "ChangeDeadline" && this.data.sendAttachment != true)) { toShow.attm = false; toShow.aDoc = false; } else //EMAIL and MANUAL cases { app.beginPriv(); var aPath = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.aDoc = aPath; toLoad.icon = "A_Attachments_Sm_N.png";//file_search.png"; } } // raddr = return address book (fetch it) app.beginPriv(); if(!this.data.raddr) this.data.raddr = identity.email; app.endPriv(); if (this.data.distributionMethod != "MANUAL") toLoad.next = AnnotsString.IDS_SEND; // load the stuff dialog.load(toLoad); dialog.enable(toEnable); dialog.visible(toShow); }, getDefaultEmailMessage: function() { if (this.data.reviewType == "ShareFile") { return this.getShareFileMessage(); } else { DebugAlert("WT1" + WT + " * " + this.data.action); switch(this.data.distributionMethod) { case "UPLOAD": { var msg = (SharedString("IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAIL" + this.data.UB + WT)); if (this.data.UseDocumentCenter) { msg = (SharedString("IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL" + this.data.UB + WT)); } else { msg = msg.replace(/%reader_version%/, AnnotsString.IDS_SHARED_REVIEW_READER_VERSION_8); msg = msg.replace(/%acrobat_version%/, AnnotsString.IDS_SHARED_REVIEW_ACROBAT_VERSION_8); } return msg; } case "MANUAL": return ""; case "EMAIL": default: return (SharedString("IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL" + this.data.UB + WT)); } } }, getShareFileMessage: function() { var msg = AnnotsString.IDS_SHARE_FILE_PREVIEW_EMAIL; return msg; }, getShareFileSubject: function() { var subj = AnnotsString.IDS_SHARE_FILE_SUBJECT_EMAIL; return subj; }, getDeadlineMessage: function() { var msg; if(deadlineDate == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_REMOVE_DEADLINE_ATTACHED_EMAIL_SR; msg = msg.replace(/%docname%/, (this.data.cDocumentName)); } else if(this.data.deadline == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_ATTACHED_EMAIL_SR; msg = msg.replace(/%docname%/, (this.data.cDocumentName)); msg = msg.replace(/%newdeadline%/, deadlineDate); } else { msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SR; msg = msg.replace(/%docname%/, (this.data.cDocumentName)); msg = msg.replace(/%olddeadline%/, this.data.deadline); msg = msg.replace(/%newdeadline%/, deadlineDate); } var info; if (this.data.distributionMethod == "EMAIL") info = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SR; else if (this.data.distributionMethod == "UPLOAD") { info = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SR; info = info.replace(/%review_url%/, ANSMBURLToPlatformPath(this.data.distributionURL)); } return (msg + "\n\n" + info); }, getDeadlineSubject: function() { var subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR;; subj = subj.replace(/%docname%/, (this.data.cDocumentName)); return subj; }, replaceParamsByValues: function(str) { switch(this.data.distributionMethod) { case "UPLOAD": if ((this.data.reviewType == "SharedReview") || (this.data.reviewType == "SharedReviewEmail") || (this.data.reviewType == "FormDistribution") || (this.data.reviewType == "FormDistributionEmail") ) { var tempURL; //fix for bug 1512778 if (this.data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/SMB") tempURL = ANSMBURLToPlatformPath(this.data.distributionURL) else if (this.data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") // Fix for bug4166369 : As we already have an encoded URL in case of SharePoint, no need to encode it again. tempURL = this.data.distributionURL; else tempURL = encodeURI(this.data.distributionURL); while(str.indexOf("%review_url%") != -1) str = str.replace(/%review_url%/, tempURL); while(str.indexOf("%docname%") != -1) str = str.replace(/%docname%/, this.data.cDocumentName); } break; case "MANUAL": break; default: case "EMAIL": while(str.indexOf("%docname%") != -1) str = str.replace(/%docname%/, this.data.cDocumentName); break; } return str; }, getSelectedItemText: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return i; } return ""; }, // These are utility functions for manipulating/display of email addresses splitAddrs: function(addrs) { var resultVec = []; if(addrs == undefined) return resultVec; var addrVec = addrs.split(/\;|\n|\r\n|\r/); var j = 0; for(var i in addrVec) { var addr = addrVec[i].replace(/^\s*(\S(?:.*\S)?)\s*$/, "$1"); if(addr) resultVec[j++] = addr; } return resultVec; }, joinAddrs: function(addrs) { return addrs.join(";"); //return addrs.join("\n"); }, updateAddrs: function(dialog, dataIn) { // load from or to the dialog? if(dataIn) { // load the value into the dialog var tempoptR; if(this.data.reviewType != "FormDistribution" && this.data.reviewType != "FormDistributionEmail") tempoptR = this.joinAddrs(this.data.optR); else tempoptR = ""; var p = { reqR: this.joinAddrs(this.data.reqR), optR: tempoptR, }; dialog.load(p); } else { // split out the addresses to store var p = dialog.store(); this.data.reqR = this.splitAddrs(p.reqR); if(this.data.reviewType != "FormDistribution" && this.data.reviewType != "FormDistributionEmail") this.data.optR = this.splitAddrs(p.optR); } }, removeDuplicateEmailAddressesAcrossLists: function(firstList, secondList) { // firstList - read only list // secondList - list from which the addrs would be checked and removed if required var newList = ";"; firstList = ";" + firstList + ";"; var addrs = secondList.split(/;/g); for(var i in addrs) { var addr = addrs[i]; if(firstList.match(";" + addr + ";") == null) newList = newList + addr + ";"; } var len = newList.length; return newList.substr(1, len - 2); }, removeDuplicateEmailAddressesInList: function(addrList) { // Here newList would be created. Intially it would have // semicolons both at front and end to help in searching. // At the end of loop, we will remove them. var newList = ";"; var addrs = addrList.split(/;/g); for(var i in addrs) { var addr = addrs[i]; if(newList.match(";" + addr + ";") == null) newList = newList + addr + ";"; } var len = newList.length; return newList.substr(1, len - 2); }, removeDuplicateEmailAddresses: function(lists) { lists.toList = this.removeDuplicateEmailAddressesInList(lists.toList); lists.ccList = this.removeDuplicateEmailAddressesInList(lists.ccList); lists.bccList = this.removeDuplicateEmailAddressesInList(lists.bccList); lists.bccList = this.removeDuplicateEmailAddressesAcrossLists(lists.ccList, lists.bccList); lists.ccList = this.removeDuplicateEmailAddressesAcrossLists(lists.toList, lists.ccList); }, emailListsMatch: function (firstList, secondList) { var firstArray = this.splitAddrs(firstList); var secondArray = this.splitAddrs(secondList); var firstSortedList = firstArray.sort().join(";"); var secondSortedList = secondArray.sort().join(";"); return (firstSortedList == secondSortedList); }, allEmailAddrsValid: function (addrArray) { var invalidIDs = ""; for(var i in addrArray) { var addr = addrArray[i]; if(!CBIsValidEmail(addr)) { if(invalidIDs != "") invalidIDs = invalidIDs + ", "; invalidIDs = invalidIDs + addr; } } return invalidIDs; }, resolveAddrs: function(dialog) { /*var bResolveHappened = false;*/ var props = { bUI: false, cTo: this.data.reqR.join(";"), cCc: this.data.optR.join(";"), cSubject: this.data.subj, cMsg: this.data.msg, bNoError: true, }; if(this.data.reviewType == "FormDistribution") { dialog.enable({next: false}); props.bShowProgress = true; props.cProgressMessage = AnnotsString.IDS_GEN_STATUS_RESOLVING; } var distMethodIsShare = this.data.UseDocumentCenter; if ((this.data.distributionMethod == "MANUAL") || distMethodIsShare) props.bNoError = true; app.beginPriv(); try { var resolvedEmailList = app.getResolvedAddresses(props); } catch(e) { DebugThrow("Throw: Sendmail"); } app.endPriv(); var emailCategories = resolvedEmailList.split(/&/g); var finalLists = { toList: emailCategories[0].substr(3), ccList: emailCategories[1].substr(3), bccList: emailCategories[2].substr(4), }; this.removeDuplicateEmailAddresses(finalLists); /* if(!this.emailListsMatch(props.cTo, finalLists.toList) || !this.emailListsMatch(props.cCc, finalLists.ccList)) { bResolveHappened = true; } if(bResolveHappened) { this.data.reqR = this.splitAddrs(finalLists.toList); this.data.optR = this.splitAddrs(finalLists.ccList); this.updateAddrs(dialog, true); DebugThrow("The email addresses got resolved. So try again."); } else { */ var invalidIDsReq = ""; var invalidIDsOpt = ""; this.data.reqR = this.splitAddrs(finalLists.toList); this.data.optR = this.splitAddrs(finalLists.ccList); this.updateAddrs(dialog, true); invalidIDsReq = this.allEmailAddrsValid(this.data.reqR); invalidIDsOpt = this.allEmailAddrsValid(this.data.optR); if(invalidIDsReq != "" || invalidIDsOpt != "") { if(invalidIDsReq != "" && invalidIDsOpt != "") invalidIDsReq = invalidIDsReq + ", "; if(invalidIDsOpt != "") invalidIDsReq = invalidIDsReq + invalidIDsOpt; app.beginPriv(); var result = app.alert(AnnotsString.IDS_SHARED_REVIEW_UNRESOLVED_MAIL_IDS.replace(/%mailids%/, invalidIDsReq), 1, 1); app.endPriv(); if(result != 1) DebugThrow("The email addresses are not valid. So try again."); } }, idle: function(dialog) { // The "To" field should not be empty // The "subj" should not be empty // The Message Body should not be empty var props = dialog.store(); var toEnable = {}; var toLoad = {}; if(this.data.reviewType == "FormDistribution") { if(this.data.server.UI != SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT) && this.data.server.UI != AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL && this.data.server.UI != SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) toEnable.prev = false; toEnable.dlvL = false; } if (this.data.distributionMethod != "MANUAL") toLoad.next = AnnotsString.IDS_SEND; var s = this.splitAddrs(props.reqR); var t = this.splitAddrs(props.optR); if(this.data.reviewType == "SharedReviewEmail" && this.data.action == "ChangeDeadline") toEnable.next = false; else if (this.data.reviewType == "SharedReviewEmail" && this.data.action == "AddReviewers") toEnable.next = (s.length > 0) || (t.length > 0); else { if(this.data.distributionMethod == "MANUAL") toEnable.next = true; // Optional for manual else toEnable.next = (s.length > 0); } if(this.data.internalDeadline != internalDeadlineDate) { if(this.data.action == "ChangeDeadline") { /*this.data.msg = this.data.msg.replace(this.data.deadline, deadlineDate); this.data.subj = this.data.subj.replace(this.data.deadline, deadlineDate); toLoad.mesg = this.data.msg; toLoad.subj = this.data.subj;*/ toEnable.next = true; } if(internalDeadlineDate != "") { var year = parseInt(internalDeadlineDate.substr(2, 4), 10); var month = parseInt(internalDeadlineDate.substr(6, 2), 10); var day = parseInt(internalDeadlineDate.substr(8, 2), 10); var hours = parseInt(internalDeadlineDate.substr(10, 2), 10); var minutes = parseInt(internalDeadlineDate.substr(12, 2), 10); var seconds = parseInt(internalDeadlineDate.substr(14, 2), 10); objectDeadlineDate.setUTCFullYear(year, month-1, day); objectDeadlineDate.setUTCHours(hours, minutes, seconds); } } dialog.load(toLoad); dialog.enable(toEnable); }, addr: function(dialog) { this.updateAddrs(dialog, false); var addrs; try { var joinedReqR = this.data.reqR.join(";"); var joinedoptR = this.data.optR.join(";"); app.beginPriv(); addrs = app.mailGetAddrs({ cTo: joinedReqR, cCc: joinedoptR, bCc: true, bBcc: false }); app.endPriv(); } catch(e) { // XXX ugh... need to catch throws about invalid e-mail addresses sep. from cancellation throws } if(addrs) { this.data.reqR = this.splitAddrs(addrs[0]); if(this.data.reviewType != "FormDistribution" && this.data.reviewType != "FormDistributionEmail") this.data.optR = this.splitAddrs(addrs[1]); this.updateAddrs(dialog, true); } }, dlvL: function(dialog) { this.data.deliveryMethodLinkClicked = true; dialog.previous(); }, pLnk: function(dialog) { if (this.data.reviewType == "SharedReviewEmail" && this.data.action == "ChangeDeadline") this.data.msg = this.getDeadlineMessage(); else this.data.msg = this.replaceParamsByValues(this.getDefaultEmailMessage()); if ((this.data.distributionMethod == "UPLOAD") && (this.data.UseDocumentCenter == true)) { if (this.data.reviewType == "ShareFile") this.data.msg = this.data.msg + AnnotsString.IDS_SHARE_FILE_PREVIEW_EMAIL_ADDON; else this.data.msg = this.data.msg + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDON } dialog.load({mesg: this.data.msg}); }, dlnk: function(dialog) { app.beginPriv(); Collab.getDateAndTime(internalDeadlineDate); app.endPriv(); var toLoad = {}; var toEnable = {}; //deadlineDate variable is getting updated in setDateAndTime which is being called by C++ implementation fo getDateAndTime if(this.data.reviewType== "SharedReviewEmail" && this.data.action == "ChangeDeadline") { if(deadlineDate == this.data.deadline) { toEnable.mesg = false; toEnable.subj = false; toEnable.pLnk = false; toLoad.subj = ""; toLoad.mesg = ""; } else { toEnable.mesg = true; toEnable.subj = true; toEnable.pLnk = true; if (this.data.distributionMethod == "EMAIL") { if (deadlineDate == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_REMOVE_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); } else if (this.data.deadline == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%newdeadline%/, deadlineDate); } else { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%olddeadline%/, this.data.deadline); toLoad.mesg = toLoad.mesg.replace(/%newdeadline%/, deadlineDate); } } else if (this.data.distributionMethod == "UPLOAD") { if (deadlineDate == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_REMOVE_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%review_url%/, ANSMBURLToPlatformPath(this.data.distributionURL)); } else if (this.data.deadline == AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE) { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%newdeadline%/, deadlineDate); toLoad.mesg = toLoad.mesg.replace(/%review_url%/, ANSMBURLToPlatformPath(this.data.distributionURL)); } else { toLoad.subj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR; toLoad.mesg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SR + "\n\n" + AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SR; toLoad.subj = toLoad.subj.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%docname%/, (this.data.cDocumentName)); toLoad.mesg = toLoad.mesg.replace(/%olddeadline%/, this.data.deadline); toLoad.mesg = toLoad.mesg.replace(/%newdeadline%/, deadlineDate); toLoad.mesg = toLoad.mesg.replace(/%review_url%/, ANSMBURLToPlatformPath(this.data.distributionURL)); } } } } toLoad.dydt = deadlineDate; dialog.enable(toEnable); dialog.load(toLoad); }, adrb: function(dialog) { this.addr(dialog); }, help: function(dialog) { var helpID = ""; if ((this.data.reviewType == "SharedReview")|| (this.data.reviewType == "SharedReviewEmail")) helpID = "Review_Start"; else if ((this.data.reviewType == "FormDistribution")|| (this.data.reviewType == "FormDistributionEmail")) helpID = "Forms_Distribute"; else if (this.data.reviewType == "ShareFile") helpID = "RTC_Share"; app.beginPriv(); Collab.launchHelpViewer(helpID); app.endPriv(); }, commit: function(dialog, next) { if (this.data.UseDocumentCenter) { this.data.accessLevel = accessLevels[this.getSelectedItemText("pAcl")]; } else this.data.accessLevel = 0; //Invalid // Get the email addresses from to/cc this.updateAddrs(dialog, false); if(next) { // Fix for bug# 3222368, 3222202 - This functioanlity is also available on mac for webmail - installed mail client will still not resolve addresses //fix for bug 1684008 if(!(this.data.reviewType == "FormDistribution" && this.data.distributionMethod == "MANUAL")) { this.resolveAddrs(dialog); } // Get the Subject // Get the Message Body var o = dialog.store(); this.data.msg = o["mesg"]; var addon1 = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDON; var addon2 = AnnotsString.IDS_SHARE_FILE_PREVIEW_EMAIL_ADDON; //fix for bug 1744936 if(app.platform == "MAC") { addon1 = escape(addon1); addon1 = addon1.replace(/%0D%0A/g, "%0D"); addon1 = unescape(addon1); addon2 = escape(addon2); addon2 = addon2.replace(/%0D%0A/g, "%0D"); addon2 = unescape(addon2); } var bakupMessage = this.data.msg; bakupMessage = bakupMessage.replace(addon1, ""); bakupMessage = bakupMessage.replace(addon2, ""); if (this.data.reviewType != "SharedReviewEmail" && this.data.reviewType != "FormDistributionEmail") { if (this.data.reviewType != "ShareFile") { switch (this.data.distributionMethod) { case "EMAIL": { //a. replace all occurrences of the filename in the message with /%review_name%/ while(bakupMessage.indexOf((this.data.cDocumentName)) != -1) bakupMessage = bakupMessage.replace((this.data.cDocumentName), "%docname%"); break; } case "UPLOAD": { // a. replace all occurences of the review url with /%review_url%/ var tempURL; if (this.data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/SMB") tempURL = ANSMBURLToPlatformPath(this.data.distributionURL) else if (this.data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint") // Fix for bug4166369 : As we already have an encoded URL in case of SharePoint, no need to encode it again. tempURL = this.data.distributionURL; else tempURL = encodeURI(this.data.distributionURL); while(bakupMessage.indexOf(tempURL) != -1) bakupMessage = bakupMessage.replace(tempURL, "%review_url%"); // b. replace all occcurences of the filename with /%review_name%/ while(bakupMessage.indexOf((this.data.cDocumentName)) != -1) bakupMessage = bakupMessage.replace((this.data.cDocumentName), "%docname%"); break; } case "MANUAL": { break; } } } app.beginPriv(); Collab.setCustomEmailMessage(bakupMessage, this.data.distributionMethod, this.data.reviewType, this.data.UseDocumentCenter); app.endPriv(); } else { } this.data.subj = o["subj"]; if (this.data.reviewType == "SharedReview") { app.beginPriv(); Collab.setCustomServerLink('Latest', this.data.server.URL); app.endPriv(); } if (this.data.reviewType == "FormDistribution") { if(this.dialog.store()["anny"]) this.data.allowAnonymous = true; else this.data.allowAnonymous = false; } if(this.data.reviewType == "SharedReview" || this.data.reviewType == "SharedReviewEmail") { if(this.data.internalDeadline != internalDeadlineDate) { this.data.deadline = deadlineDate; this.data.internalDeadline = internalDeadlineDate; if(this.data.internalDeadline != "") this.data.oDeadline = objectDeadlineDate; } } } else { var currMessage = dialog.store()["mesg"]; // app.alert("this.data.msg:"+escape(this.data.msg)+"!!\n\nmesg:"+escape(currMessage)+"!!"); if(app.platform == "MAC") { this.data.msg = escape(this.data.msg); DebugAlert("this.data.msg" + this.data.msg); this.data.msg = this.data.msg.replace(/%0D%0A/g, "%0D"); DebugAlert("this.data.msg" + this.data.msg); this.data.msg = unescape(this.data.msg); DebugAlert("this.data.msg" + this.data.msg); } if (this.data.reviewType != "SharedReviewEmail" && this.data.reviewType != "FormDistributionEmail") { if (this.data.msg != currMessage) { app.beginPriv(); var ret_val = app.alert(AnnotsString.IDS_INVITE_CUSTOM_MSG_WILL_BE_LOST, 2, 2); app.endPriv(); if(ret_val != 4) DebugThrow ("Don't lose custom message"); } } } }, } DebugAlert("reviewType" + reviewType); var EmailDescription = [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, alignment: "align_fill", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_DELIVERY_METHOD, item_id: "dlvL", }, { type: "static_text", name: "", item_id: "dlvS", alignment: "align_fill", truncate: "truncate_end", }, ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_GEN_ADDRESSEE_HEADING, width: 20, item_id: "addr", }, { type: "edit_text", item_id: "reqR", multiline: true, height: { prod: [ 2, { edit_text_height: [] } ] }, alignment: "align_fill", } ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_GEN_CC_HEADING, width: 20, item_id: "adrb", }, { type: "edit_text", item_id: "optR", multiline: true, height: { prod: [ 2, { edit_text_height: [] } ] }, alignment: "align_fill", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_GEN_SUBJECT_HEADING, item_id: "sSub", width: 75, bold: true, font: "dialog" }, { type: "edit_text", item_id: "subj", alignment: "align_fill", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_GEN_MESSAGE_HEADING, item_id: "sMsg", width: 75, font: "dialog", bold: true, }, { type: "image", item_id: "icon", width: 16, height: 16, }, { type: "static_text", alignment: "align_fill", //width: 250, item_id: "aDoc", truncate: "truncate_end", }, /* { type: "static_text", name: "", alignment: "align_fill", }, */ { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_RESET_DEFAULT, alignment: "align_right", item_id: "pLnk", }, ] }, { type: "edit_text", item_id: "mesg", alignment: "align_fill", multiline: true, height: { prod: [ 5, { edit_text_height: [] } ] }, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_ACCESS_LEVEL, item_id: "sAcl", }, { type: "popup", item_id: "pAcl", alignment: "align_fill", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_DEADLINE_REVIEW, item_id: "dlnk", }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE, item_id: "dydt", alignment: "align_fill", }, ] } ] } ] } ]; var EmailDescriptionFormDistribution = [ { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_DELIVERY_METHOD, item_id: "dlvL", }, { type: "static_text", name: "", item_id: "dlvS", alignment: "align_fill", }, ] }, { type: "view", align_children: "align_top", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_GEN_ADDRESSEE_HEADING, width: 20, item_id: "addr", }, { type: "edit_text", item_id: "reqR", multiline: true, height: { prod: [ 2, { edit_text_height: [] } ] }, alignment: "align_fill", } ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_GEN_SUBJECT_HEADING, item_id: "sSub", width: 75, bold: true, font: "dialog" }, { type: "edit_text", item_id: "subj", alignment: "align_fill", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_GEN_MESSAGE_HEADING, item_id: "sMsg", width: 75, font: "dialog", bold: true, }, { type: "image", item_id: "icon", width: 16, height: 16, }, { type: "static_text", alignment: "align_fill", //width: 250, item_id: "aDoc", truncate: "truncate_end", }, /* { type: "static_text", name: "", alignment: "align_fill", }, */ { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_RESET_DEFAULT, alignment: "align_right", item_id: "pLnk", }, ] }, { type: "edit_text", item_id: "mesg", alignment: "align_fill", multiline: true, height: { prod: [ 8, { edit_text_height: [] } ] }, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_ACCESS_LEVEL, item_id: "sAcl", }, { type: "popup", item_id: "pAcl", alignment: "align_fill", }, ] }, { type:"check_box", name: AnnotsString.IDS_SHARED_REVIEW_EMAIL_STEP_ALLOW_ANONYMOUS, item_id:"anny", }, ] } ] } ]; if(reviewType == "FormDistribution" || reviewType == "FormDistributionEmail") { description.description = EmailDescriptionFormDistribution; } else description.description = EmailDescription; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } CBCreateGettingStartedStepDescription = function(reviewType, checkSize) { var description = { reviewType: reviewType, isApproval: (reviewType == "APP"), checkSize: checkSize, initialize: function(dialog) { if(!this.data.docPath) this.data.docPath = ""; this.updateDocs(dialog); dialog.focus("brws"); var toLoad = {}; if(this.reviewType == "SharedReview") { this.data.canReaderEnable = (app.viewerType.match('Exchange-Pro') != null); this.updateServers(dialog); if(this.data.canReaderEnable) toLoad.enbl = this.data.readerEnable; } dialog.load(toLoad); }, updateDocs: function() { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); var fils = {}; var didSelect = false; for(var i in docs) { var doc = docs[i]; if(!doc.external && !doc.isInProtectedView) { var select = (doc.path == this.data.docPath); //bugfix #2511162 we should check for doc.isInCollection in case of approval workflow also if((this.reviewType != "EBR" && this.reviewType != "APP")|| !doc.isInCollection) fils[doc.documentFileName] = (1 + (1*i)) * (select ? 1 : -1); if(select) didSelect = true; } } if(!didSelect && this.data.docPath) fils[this.data.docPath.match(/[^\/]*$/)[0]] = docs.length + 1; this.dialog.load({fils: fils}); }, updateServers: function() { app.beginPriv(); var servers = Collab.reviewServers; app.endPriv(); var srvr = {}; var didSelect = false; var idx = 1; var bServerDefault = false; for(var i in servers) { var server = servers[i]; var currIndex = idx++; if(!server.Default) currIndex = -currIndex; else bServerDefault = true; srvr[server.UI] = currIndex; } if(!bServerDefault && servers.length > 0) { var server = servers[0]; srvr[server.UI] = -srvr[server.UI]; } this.dialog.load({srvr: srvr}); }, adds: function(dialog) { var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_SHARED_REVIEW_ADD_SERVER_WIZ_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_ADD_SERVER_TITLE, steps: [ { // Step 1: Select Server Type creator: function(data) { return CBSharedReviewSelectServerTypeDescription(data); }, heading: AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_TITLE, noSteps: true, }, { // Step 2: Configure creator: function(data) { return CBSharedReviewConfigureServerStepDescription(data); }, heading: AnnotsString.IDS_SHARED_REVIEW_CONFIGURE_SERVER_STEP_HEADING, title: AnnotsString.IDS_SHARED_REVIEW_CONFIGURE_SERVER_STEP_TITLE, noSteps: true, }, ] }); CBRunSimpleWiz(wiz, 0, -1, this.data); if(this.data.result == "fnsh") { var server = this.data.toAdd.server; var config = this.data.toAdd.config; var name = this.data.toAdd.name; app.beginPriv(); Collab.addReviewServer(server.driverURL, name, config); Collab.setDefaultReviewServer(server.driverURL, name, this.data.reviewType); app.endPriv(); this.updateServers(); } }, brws: function(dialog) { app.beginPriv() var p = app.browseForDoc(); app.endPriv(); if(p) { if(p.cFS == "CSP") { app.beginPriv(); app.alert(AnnotsString.IDS_WORKFLOW_ERROR_DUETO_BROWSE_SHAREPOINT_FILE); app.endPriv(); return; } else { var fileChoosen = p.cPath; if(!fileChoosen.match(/\.pdf$/i)) { app.beginPriv(); app.alert(AnnotsString.IDS_NON_PDF_FILE_CHOOSEN_FOR_REVIEW); app.endPriv(); return; } this.data.docPath = p.cPath; this.data.docFS = p.cFS; this.updateDocs(); } } }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return o[i] - 1; } return -1; }, idle: function(dialog) { var bResult = this.findSelectedIndex('fils') >= 0; if(reviewType == "SharedReview") bResult = bResult && this.findSelectedIndex('srvr') >= 0; this.dialog.enable({next: bResult}); }, commit: function(dialog, next) { app.beginPriv(); var docs = app.activeDocs; app.endPriv(); var i = this.findSelectedIndex("fils"); if(i >= 0 && i < docs.length) this.data.docPath = docs[i].path; if(next) { // no doc or different doc if(typeof this.data.doc == "undefined" || !this.data.doc || (this.data.doc && this.data.doc.path != this.data.docPath)) { // close any doc that was selected if we opened it if(this.data.doc && this.data.doc.hidden) { this.data.doc.closeDoc(true); this.data.doc = null; } // open the new one app.beginPriv(); this.data.doc = app.openDoc({ cFS: this.data.docFS, cPath: this.data.docPath, bHidden: true, bUseConv: true }); app.endPriv(); // we've changed the file name, so re-burn the message this.data.msgChanged = true; } if(this.data.doc) { app.beginPriv(); var maxPDFCommentsSize = Collab.maxPDFCommentsSize; app.endPriv(); if(this.checkSize && this.data.doc.filesize > (1024 * 1024 * maxPDFCommentsSize)) { // confirm that the large file is ok app.beginPriv(); var result = app.alert(AnnotsString.IDS_SEND_FOR_REVIEW_DOC_IS_LARGE.replace(/%mb%/, maxPDFCommentsSize), 2, 2); app.endPriv(); if(result != 4) DebugThrow ("Big doc"); } // is this doc related to an email review? (but not THE email review, i.e. subreview) if(Collab.isEmailReview(this.data.doc, true) && !this.data.doc.Collab.isEmailReview(this.data.doc, false)) { app.beginPriv(); app.alert(this.isApproval ? AnnotsString.IDS_CANT_APPROVE_LAX_EMAIL_MATCH : AnnotsString.IDS_CANT_REVIEW_LAX_EMAIL_MATCH); app.endPriv(); DebugThrow ("Lax review match"); } // part of an on-line review? if(Collab.isOnlineReview(this.data.doc, false) || (this.reviewType == "BBR" && Collab.isOfflineReview(this.data.doc))) { app.beginPriv(); app.alert(this.isApproval ? AnnotsString.IDS_CANT_APPROVE_ALREADY_BBR : AnnotsString.IDS_CANT_REVIEW_ALREADY_BBR); app.endPriv(); DebugThrow ("On-line review match"); } // Review of a dynamic document is not allowed. // Tell the user they can save a flat copy and send the dynamic doc out as an attachment // 1303733 - Moved this check before checking permission.canExport (returns false for dyn docs) if ( !this.isApproval && this.data.doc != null && this.data.doc.dynamicXFAForm ) { app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; app.alert({cTitle:msgboxtitle, cMsg: AnnotsString.IDS_DYNAMIC_DOC_COMMENTS_MSG1, nIcon: 3}); app.endPriv(); DebugThrow ("Dynamic document"); } // commenting not allowed? if(this.data.doc.requestPermission(permission.annot, permission.canExport) != permission.granted || this.data.doc.requestPermission(permission.annot, permission.create) != permission.granted) { app.beginPriv(); app.alert(this.isApproval ? AnnotsString.IDS_CANT_APPROVE_WITH_NO_PERMS : AnnotsString.IDS_CANT_REVIEW_WITH_NO_PERMS); app.endPriv(); DebugThrow ("No perms"); } // Verify the perms we're gonna need at the end // Note that we really only want to do this if we are ubiquitizing but we don't know // that until step 3 and making the user choose a new file then is awkward. Assume // the user is going to want to ubiquitize. if (this.data.doc.requestPermission(permission.document, permission.fullSave) != permission.granted) { app.beginPriv(); app.alert(AnnotsString.IDS_CANT_WORKFLOW_WITH_NO_SAVE); app.endPriv(); DebugThrow ("Cannot full save"); } // Can't review a document that is in a collection if (this.data.doc.isInCollection) { app.beginPriv(); app.alert(AnnotsString.IDS_PDF_PACKAGE_SEND_FOR_REVIEW); app.endPriv(); DebugThrow ("Cannot full save"); } } // XXX alert + throw if form if(this.reviewType == "SharedReview") { var props = dialog.store(); this.data.readerEnable = props.enbl; } } // close any doc that was selected if we opened it else if(this.data.doc && this.data.doc.hidden) { this.data.doc.closeDoc(true); this.data.doc = null; } app.beginPriv(); var servers = Collab.reviewServers; app.endPriv(); var i = this.findSelectedIndex('srvr'); if(i >= 0 && i < servers.length) { var srvr = servers[i]; this.data.server = srvr; if(!srvr.Default) { app.beginPriv(); Collab.setDefaultReviewServer(srvr.URL, srvr.UI, this.data.reviewType); app.endPriv(); } } }, description: [ { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "popup", alignment: "align_fill", item_id: "fils" }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws" } ] } ] }; if(reviewType == "SharedReview") { // For shared review, add the server selector description.description = [ { alignment: "align_fill", type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SERVER_SELECT_STEP_TEXT, wrap_name: true, width: Collab.wizardWidth }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "popup", alignment: "align_fill", item_id: "srvr" }, { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_SERVER_SELECT_ADD_BUTTON, item_id: "adds" } ] }, { alignment: "align_fill", type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SERVER_SELECT_DOCUMENT_TEXT, wrap_name: true, width: Collab.wizardWidth }, ].concat(description.description); if(app.viewerType.match('Exchange-Pro') != null) { description.description = [ { type: "check_box", item_id: "enbl", name: AnnotsString.IDS_SHARED_REVIEW_OPTIONS_READER_ENABLE } ].concat(description.description); } } app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } CBSharedReviewInviteReviewers = function() { function getDateControlOrder() { return app.getString("Forms", "IDS_DEFAULT_DATE_FORMAT") .replace(/m+/gi, "m") .replace(/d+/gi, "d") .replace(/y+/gi, "y") .replace(/[^ymd]/g, "") .split("") .map(function(v) { return ({ y: "year", m: "dmoy", d: "ddom" })[v] }); }; var description = { initialize: function(dialog) { if(!this.data.reqR) { this.data.reqR = []; } else { this.data.reqR = this.splitAddrs(this.data.reqR); } if(!this.data.optR) { this.data.optR = []; } else { this.data.optR = this.splitAddrs(this.data.optR); } this.updateAddrs(dialog, true); app.beginPriv(); if(!this.data.raddr) this.data.raddr = identity.email; app.endPriv(); var toLoad = {}; dialog.focus("addr"); dialog.enable({ addr: app.addressBookAvailable }); if(this.data.distributionMethod == "MANUAL") toLoad.next = AnnotsString.IDS_FINISH; if(this.data.hasDeadline) { toLoad.dead = this.data.hasDeadline; toLoad.dmoy = "" + (this.data.oDeadline.getMonth() + 1); toLoad.ddom = "" + this.data.oDeadline.getDate(); toLoad.year = "" + this.data.oDeadline.getFullYear(); } dialog.load(toLoad); }, splitAddrs: function(addrs) { var addrVec = addrs.split(/\;|\n|\r\n|\r/); var resultVec = []; var j = 0; for(var i in addrVec) { var addr = addrVec[i].replace(/^\s*(\S(?:.*\S)?)\s*$/, "$1"); if(addr) resultVec[j++] = addr; } return resultVec; }, joinAddrs: function(addrs) { return addrs.join("\n"); }, updateAddrs: function(dialog, dataIn) { // load from or to the dialog? if(dataIn) { // load the value into the dialog var p = { reqR: this.joinAddrs(this.data.reqR), optR: this.joinAddrs(this.data.optR) }; dialog.load(p); } else { // split out the addresses to store var p = dialog.store(); this.data.reqR = this.splitAddrs(p.reqR); this.data.optR = this.splitAddrs(p.optR); } }, idle: function(dialog) { var props = dialog.store(); var toEnable = {}; var s = this.splitAddrs(props.reqR); // TODO: Some fancier address validation would be nice! if(this.data.distributionMethod == "MANUAL") toEnable.next = true; // Optional for manual else toEnable.next = s.length > 0; toEnable.ddom = props.dead; toEnable.dmoy = props.dead; toEnable.year = props.dead; if(props.dead) { var dom = parseInt(props.ddom, 10); var moy = parseInt(props.dmoy, 10); var year = parseInt(props.year, 10); var now = new Date(); var isValid = (1 <= moy) && (moy <= 12); if(isValid) isValid = (1 <= dom) && (dom <= 31); if(isValid) isValid = (year >= now.getFullYear() && (year <= 2199)); toEnable.next = toEnable.next && isValid; } dialog.enable(toEnable); }, addr: function(dialog) { this.updateAddrs(dialog, false); var addrs; try { var joinedReqR = this.data.reqR.join(";"); var joinedOptR = this.data.optR.join(";"); app.beginPriv(); addrs = app.mailGetAddrs({ cTo: joinedReqR, cCc: joinedOptR, bCc: true, bBcc: false }); app.endPriv(); } catch(e) { // XXX ugh... need to catch throws about invalid e-mail addresses sep. from cancellation throws } if(addrs) { this.data.reqR = this.splitAddrs(addrs[0]); this.data.optR = this.splitAddrs(addrs[1]); this.updateAddrs(dialog, true); } }, commit: function(dialog, next) { if(next) { var props = dialog.store(); this.updateAddrs(dialog, false); var props = dialog.store(); this.data.hasDeadline = props.dead; if(props.dead) { var dom = parseInt(props.ddom, 10); var moy = parseInt(props.dmoy, 10); var year = parseInt(props.year, 10); this.data.oDeadline = new Date(); this.data.oDeadline.setFullYear(year); this.data.oDeadline.setMonth(moy - 1); // JavaScript Month runs 0 - 11 this.data.oDeadline.setDate(dom); this.data.cDeadline = util.printd(0x8002, this.data.oDeadline); } else this.data.oDeadline = undefined; var driver = this.data.drivers[this.data.server.URL]; app.beginPriv(); var sourceURL = driver.getInitiatorSource("test", this.data.server.Settings); app.endPriv(); var oURL = util.crackURL(sourceURL); switch(this.data.distributionMethod) { case "UPLOAD": this.data.msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAIL; this.data.msg = this.data.msg.replace(/%review_url%/, this.data.distributionURL); break; case "MANUAL": break; default: case "EMAIL": this.data.msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL; this.data.msg = this.data.msg.replace(/%review_name%/, this.data.cDocumentName ); break; } this.data.msgChanged = false; // Do this so the Email preview doesn't whack our invite var s = this.data.msg; s = s.replace(/%server_name%/, oURL.cHost); // Deadline message if(typeof this.data.oDeadline != "undefined") { s = s.replace(/%deadline_msg%/, AnnotsString.IDS_SHARED_REVIEW_INVITE_DEADLINE); s = s.replace(/%cDeadline%/, this.data.cDeadline); } else s = s.replace(/%deadline_msg%/, ""); if(this.data.readerEnable) { s = s.replace(/%client_requirement_msg%/, AnnotsString.IDS_SHARED_REVIEW_INVITE_READER); s = s.replace(/%get_reader_text%/, AnnotsString.IDS_SHARED_REVIEW_GET_READER); } else { s = s.replace(/%client_requirement_msg%/, AnnotsString.IDS_SHARED_REVIEW_INVITE_NO_READER); s = s.replace(/%get_reader_text%/, ""); } this.data.msg = s; this.data.subj = this.data.cannedSubj.replace(/%docname%/, (this.data.cDocumentName)); } }, description: [ { type: "view", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_INVITE_ADDRESS_BOOK, item_id: "addr" }, { type: "static_text", name: AnnotsString.IDS_INVITE_REQUIRED, font: "dialog", bold: true, }, { type: "edit_text", multiline: true, height: { prod: [ 3, { edit_text_height: [] } ] }, item_id: "reqR", alignment: "align_fill" }, { type: "static_text", name: AnnotsString.IDS_INVITE_OPTIONAL, font: "dialog", bold: true, }, { type: "edit_text", multiline: true, height: { prod: [ 2, { edit_text_height: [] } ] }, item_id: "optR", alignment: "align_fill" }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "check_box", item_id: "dead", name: AnnotsString.IDS_SHARED_REVIEW_OPTIONS_DEADLINE }, { type: "edit_text", item_id: getDateControlOrder()[0], width: (getDateControlOrder()[0] == "year") ? 40 : 20 }, { type: "static_text", name: AnnotsString.IDS_DATE_SEP, }, { type: "edit_text", item_id: getDateControlOrder()[1], width: (getDateControlOrder()[1] == "year") ? 40 : 20 }, { type: "static_text", name: AnnotsString.IDS_DATE_SEP, }, { type: "edit_text", item_id: getDateControlOrder()[2], width: (getDateControlOrder()[2] == "year") ? 40 : 20 }, ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } IWSharedReviewDocCenterServicesDialog = function() { var description = { initialize: function(dialog) { }, idle: function(dialog) { // doing nothing here return; }, commit: function(dialog) { }, "agul": function(dialog) { var url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_ACROBAT; app.launchURL(url, true); }, description: { name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE_LINK, align_children: "align_left", width: 400, elements: [ { type:"group", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE, width: 390, wrap_name: true, }, { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE_LINK, item_id: "agul", }, { type: "ok_cancel", ok_name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_AGREE, cancel_name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_DECLINE, } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } IWSharedReviewDocCenterLogin = function(reviewType) { var description = { reviewType: reviewType, initialize: function(dialog, next) { this.data.signup = false; var toEnable = { "next": false } var toLoad = {}; var toShow = {}; toShow.prev = (this.data.reviewType != "DocCenterLogin"); if (typeof this.data.rememberPassword == "undefined") this.data.rememberPassword = true; if (typeof this.data.isFirstLaunch != "undefined") { if ((this.data.isFirstLaunch)&&(typeof this.data.user != "undefined")&&(this.data.user != "")) this.data.pswd = "******"; } if ((typeof this.data.user == "undefined")||(this.data.user == "")) { app.beginPriv(); var shareIdentityEmail = shareIdentity.Email; var identityEmail = identity.email; app.endPriv(); if(shareIdentityEmail != undefined && shareIdentityEmail != "") this.data.user = shareIdentityEmail; else if(identityEmail != undefined && identityEmail != "") this.data.user = identityEmail; else this.data.user = ""; } if (typeof this.data.pswd == "undefined") this.data.pswd = ""; if (typeof this.data.rememberPassword != "undefined") toLoad.rmbr = this.data.rememberPassword; toLoad.user = this.data.user; toLoad.pswd = this.data.pswd; toLoad.bann = Collab.getIcon("A_AcrobatcomBrandingBanner_592x73.png"); toLoad.prvw = Collab.getIcon("A_Acrobatcom_SignIn_230x230_N.png"); toLoad.next = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LOGIN; toShow.help = false; //update the status message, and resend email verification link { dialog.setForeColorRed("stat"); if (this.data.authStatus!= undefined) { toLoad.stat = this.data.authStatus; toShow.stat = true; if (this.data.authStatus == AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED) toShow.resd = true; else toShow.resd = false; } else { toShow.stat = false; toShow.resd = false; } } if (this.data.reviewType == "ShareFile") { toShow.prev = false; } dialog.focus("user"); dialog.load(toLoad); dialog.enable(toEnable); dialog.visible(toShow); }, idle: function(dialog) { var o = dialog.store(); var username = o["user"]; var password = o["pswd"]; var toEnable = {}; if(this.data.reviewType == "FormDistribution") { toEnable.prev = false; } //if the user credentials are non-null then enable the login button if ((username != undefined) && (username != "") && (username != null) && (password != undefined) && (password != "") && (password != null) ) toEnable.next = true; else toEnable.next = false; dialog.enable(toEnable); var toLoad = {}; toLoad.next = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LOGIN; dialog.load(toLoad) }, commit: function(dialog, next) { if (next && !(this.data.signup == true)) { var o = dialog.store(); this.data.user = o["user"]; this.data.pswd = o["pswd"]; this.data.rememberPassword = o["rmbr"]; dialog.enable({"next": false}); dialog.setForeColorRed("stat"); dialog.load({"stat": ""}); dialog.visible({stat: true}); dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_AUTHENTICATING}); dialog.visible({"resd": false}); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "Authentication_Successful"; } try { var connectCalled = false; var driver = getDriver(this.data.reviewType); DebugAlert("COMMIT: " + this.data.reviewType); var swConn = null; app.beginPriv(); if (typeof this.data.isFirstLaunch != undefined) { if ((this.data.isFirstLaunch)&&(this.data.pswd == "******")) { swConn = Collab.swConnect({bShowProgressMonitor:false, cDriver:driver}); connectCalled = true; } } if (!connectCalled) swConn = Collab.swConnect({cUsername: this.data.user, cPassword: this.data.pswd, bSaveCred: this.data.rememberPassword, cDriver:driver}); app.endPriv(); if (swConn) { this.data.swConn = swConn; app.beginPriv(); if (Collab.isFirstLaunch(this.data.WT)) { Collab.unsetFirstLaunch(this.data.WT); } shareIdentity.Email = this.data.user; shareIdentity.FullName = swConn.getFullName(); shareIdentity.Authenticated = true; app.endPriv(); dialog.load({"stat": ""}); dialog.visible({stat: true}); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugPrintln("Successfully connected to Acrobat.com"); DebugAlert("IWSharedReviewDocCenterLogin: Login successful"); } else { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugAlert("Login Failed. Please enter correct credentials"); DebugThrow("Login was unsuccessful, try again"); } dialog.enable({"next": true}); } catch(e) { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } dialog.enable({"next": true}); ANDumpObj(e); dialog.setForeColorRed("stat"); if (e.errorCode == 403 || e.errorCode == 401) { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was unsuccessful, try again"); } else if (e.errorCode == 402) // terms of usage not accepted { var desc = IWSharedReviewDocCenterServicesDialog(); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); if (result == "ok") { //user accepted the agreement, but you don't have the swConn object right now app.beginPriv(); var acceptResult = Collab.swAcceptTOU(this.data.user, this.data.pswd); app.endPriv(); if (acceptResult == 0) { try { var driver = getDriver(this.data.reviewType); app.beginPriv(); var swConn = Collab.swConnect({cUsername: this.data.user, cPassword: this.data.pswd, bSaveCred: this.data.rememberPassword, cDriver:driver}); app.endPriv(); if (swConn) { this.data.swConn = swConn; app.beginPriv(); if (Collab.isFirstLaunch(this.data.WT)) { Collab.unsetFirstLaunch(this.data.WT); } shareIdentity.Email = this.data.user; shareIdentity.FullName = swConn.getFullName(); shareIdentity.Authenticated = true; app.endPriv(); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugPrintln("Successfully connected to Acrobat.com"); DebugAlert("IWSharedReviewDocCenterLogin: Login successful"); } } catch(e) { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); //there was a throw from the C++ side. DebugThrow("Login was unsuccessful, try again"); } } else { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was successful, but attempt to accept services agreement failed"); } } else { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was successful, but user did not accept services agreement"); } } else if (e.errorCode == 405) // account not verified (grace period expired) { //This is the case when login is valid but error is that the user needs // confirm the adobe id request. So enable resd and update the status dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED}); dialog.visible({"resd" : true}); dialog.visible({stat: true}); DebugThrow("Login was successful, but need to verify email address"); } else if (e.errorCode == 0 || e.errorCode >= 400) // interpret all other errors as a server connection problem { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT}); dialog.visible({stat: true}); DebugThrow("Login was unsuccessful, try again"); } else { DebugThrow("Login was unsuccessful, try again"); } } } }, "crID": function(dialog) { this.data.signup = true; dialog.next(); }, "user": function(dialog) { //the value entered needs to be saved if the checkbox is true var o = dialog.store(); this.data.user = o["user"]; }, "pswd": function(dialog) { //the value entered needs to be saved if the checkbox is true var o = dialog.store(); this.data.pswd = o["pswd"]; DebugPrintln("password:"+this.data.pswd+"******"); }, "rmbr": function(dialog) { var o = dialog.store(); if (o["rmbr"]) this.data.rememberPassword = true; else this.data.rememberPassword = false; }, "frgt": function(dialog) { var frgt_url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD_URL_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD_URL_ACROBAT; app.launchURL(frgt_url, true); }, "resd": function(dialog) { app.beginPriv(); var verifyResult = Collab.swSendVerifyEmail(this.data.user, this.data.pswd); app.endPriv(); DebugPrinltn("Collab.swSendVerifyEmail: result:"+verifyResult); }, description: [ { type: "view", width: Collab.wizardWidth, height: Collab.wizardHeight, //margin_height: Collab.marginHeight, //margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type: "image", item_id: "bann", width: 592, height: 73, }, { type:"view", //margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_top", alignment: "align_fill", elements: [ { type: "gap", width: 3, }, { type:"view", align_children:"align_left", elements: [ { type: "gap", height: 10, }, { type:"static_text", name:AnnotsString.IDS_ACROBAT_DOT_COM_MARKETING_MESSAGE, wrap_name:true, width: 230, bold: "true", font: "dialog", }, { type: "gap", height: 2, }, { type: "image", item_id: "prvw", width: 230, height: 230, }, ] }, { type: "gap", width: 18, }, { type:"view", align_children:"align_left", elements: [ { type:"view", elements: [ { type:"view", align_children:"align_left", elements: [ { type: "gap", height: 10, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_SIGNUP, bold:true, font: "dialog" }, { type:"link_text", item_id:"crID", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATE_ADOBEID } ] } ] }, { type: "gap", height: 24, }, { type:"view", elements: [ { type:"view", align_children:"align_left", elements: [ { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ALREADY_ID, bold:true, font: "dialog" }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ADOBE_ID }, { type:"edit_text", item_id:"user", width: 250 }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PASSWORD }, { type:"edit_text", item_id:"pswd", width: 250, password:true }, { type:"check_box", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CHECK_PASSWORD_ME, item_id:"rmbr" }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD, item_id:"frgt" }, { type:"static_text", width: 250, name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED, wrap_name:true, item_id: "stat", alignment: "align_fill", }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_RESEND, item_id:"resd" } ] } ] } ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } /* Eligibilty Requirements Error Dialog */ IWSharedReviewDocCenterEligibilityErrorDialog = function() { var description = { initialize: function(dialog) { }, idle: function(dialog) { // doing nothing here return; }, commit: function(dialog) { }, "agul": function(dialog) { var url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_ELIGIBILTY_REQUIREMENT_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_ELIGIBILTY_REQUIREMENT_ACROBAT; app.launchURL(url, true); }, description: { align_children: "align_left", width: 400, elements: [ { type:"group", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ELIGIBILTY_ERROR, width: 390, wrap_name: true, }, { type: "link_text", name: AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ELIGIBILTY_REQUIREMENT_LINK, item_id: "agul", }, { type: "ok", } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } function IWSharedReviewDocCenterCreateID (reviewType) { /* First check if Acrobat.com Signup is blocked because of COPPA Restrictions. If yes, display the eligibilty requirements error dialog, else continue to the next step. More details about the APIs and COPPA requirements https://zerowing.corp.adobe.com/display/Acrobat/JavaScript+APIs+for+enforcing+COPPA+Requirements */ app.beginPriv(); var disabled = Collab.isDocCentreSignupDisabled(); app.endPriv(); if (disabled) { var desc = IWSharedReviewDocCenterEligibilityErrorDialog(); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); DebugThrow ("Invalid data"); return; } var _dialog; /* function to ensure COPPA Requirements, Age >= 13 years for Acrobat.com Signup. Gets Birthday date from the Signup dialog and compares against the current system date. if Age >=13 years, returns true, else returns false. */ function validateAgeRequirements(bMonth, bDay, bYear) { // Get current System Date, extract day , month, year var cDate = new Date(); var cDay = cDate.getDate(); var cMonth = cDate.getMonth(); var cYear = cDate.getFullYear(); if (cYear < parseInt(bYear) + 13 ) return false; // If 13th Birthday year, then compare months if ( cYear == parseInt(bYear) + 13 ) { if ( cMonth < bMonth ) return false; // If Birthday month, then compare days if ( cMonth == bMonth ) { if ( cDay < bDay) return false; } } return true; } /* function to ensure Birthday entered in Signup dialog is a valid Birthday date */ function validateBirthDay(bMonth, bDay, bYear) { var minYear = 1900; // Month, Day and Year should be number if ( isNaN(bMonth) || isNaN(bDay) || isNaN(bYear) ) return false; if (bYear < minYear ) return false; // Month Index are from 0 to 11,January is 0, February is 1, and so on as per ISO date standard if (bMonth < 0 || bMonth > 11) return false; // Day must be between 1 and 31 if (bDay < 1 || bDay > 31) return false; // April, June, September and November have 30 days if ((bDay == 31) && ( bMonth == 3 || bMonth == 5 || bMonth == 8 || bMonth == 10 )) return false; // February has 28 days in normal year 29 days in any year evenly divisible by four, // EXCEPT for centurial years which are not also divisible by 400. if (bMonth == 1) { if ((bYear % 4 == 0) && ( (!(bYear % 100 == 0)) || (bYear % 400 == 0))) { if (bDay > 29) return false; } else { if (bDay > 28) return false; } } // Your birthday can not be more than the current system date var currDate = Date(); var bDayDate = new Date (bYear, bMonth, bDay); if (bDayDate > currDate) return false; // Valid Birthday date return true; } var nameFields = (!hasHanko()) ? [ { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_FIRST_NAME, bold:true, font: "dialog" }, { type:"edit_text", item_id:"fNam", width: 230, password:false }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LAST_NAME, bold:true, font: "dialog" }, { type:"edit_text", item_id:"lNam", width: 230, password:false }, ] : [ { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LAST_NAME, bold:true, font: "dialog" }, { type:"edit_text", item_id:"lNam", width: 230, password:false }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_FIRST_NAME, bold:true, font: "dialog" }, { type:"edit_text", item_id:"fNam", width: 230, password:false }, ] var countries = {}; var months = {}; var description = { reviewType: reviewType, initialize: function(dialog) { // Initilizing Months in the Birthday popup months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JAN] = 0; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_FEB] = 1; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MAR] = 2; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_APR] = 3; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MAY] = 4; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JUN] = 5; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JUL] = 6; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AUG] = 7; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_SEP] = 8; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_OCT] = 9; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_NOV] = 10; months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DEC] = 11; //countries[AnnotsString.IDS_COUNTRY_SELECT_ONE] = 1; countries[AnnotsString.IDS_AF] = "AF"; countries[AnnotsString.IDS_AL] = "AL"; countries[AnnotsString.IDS_DZ] = "DZ"; countries[AnnotsString.IDS_AS] = "AS"; countries[AnnotsString.IDS_AD] = "AD"; countries[AnnotsString.IDS_AO] = "AO"; countries[AnnotsString.IDS_AI] = "AI"; countries[AnnotsString.IDS_AQ] = "AQ"; countries[AnnotsString.IDS_AG] = "AG"; countries[AnnotsString.IDS_AR] = "AR"; countries[AnnotsString.IDS_AM] = "AM"; countries[AnnotsString.IDS_AW] = "AW"; countries[AnnotsString.IDS_AU] = "AU"; countries[AnnotsString.IDS_AT] = "AT"; countries[AnnotsString.IDS_AZ] = "AZ"; countries[AnnotsString.IDS_BS] = "BS"; countries[AnnotsString.IDS_BH] = "BH"; countries[AnnotsString.IDS_BD] = "BD"; countries[AnnotsString.IDS_BB] = "BB"; countries[AnnotsString.IDS_BY] = "BY"; countries[AnnotsString.IDS_BE] = "BE"; countries[AnnotsString.IDS_BZ] = "BZ"; countries[AnnotsString.IDS_BJ] = "BJ"; countries[AnnotsString.IDS_BM] = "BM"; countries[AnnotsString.IDS_BT] = "BT"; countries[AnnotsString.IDS_BO] = "BO"; countries[AnnotsString.IDS_BA] = "BA"; countries[AnnotsString.IDS_BW] = "BW"; countries[AnnotsString.IDS_BV] = "BV"; countries[AnnotsString.IDS_BR] = "BR"; countries[AnnotsString.IDS_IO] = "IO"; countries[AnnotsString.IDS_VG] = "VG"; countries[AnnotsString.IDS_BN] = "BN"; countries[AnnotsString.IDS_BG] = "BG"; countries[AnnotsString.IDS_BF] = "BF"; countries[AnnotsString.IDS_BI] = "BI"; countries[AnnotsString.IDS_KH] = "KH"; countries[AnnotsString.IDS_CM] = "CM"; countries[AnnotsString.IDS_CA] = "CA"; countries[AnnotsString.IDS_CV] = "CV"; countries[AnnotsString.IDS_KY] = "KY"; countries[AnnotsString.IDS_CF] = "CF"; countries[AnnotsString.IDS_TD] = "TD"; countries[AnnotsString.IDS_CL] = "CL"; countries[AnnotsString.IDS_CN] = "CN"; countries[AnnotsString.IDS_CX] = "CX"; countries[AnnotsString.IDS_CC] = "CC"; countries[AnnotsString.IDS_CO] = "CO"; countries[AnnotsString.IDS_KM] = "KM"; countries[AnnotsString.IDS_CG] = "CG"; countries[AnnotsString.IDS_CK] = "CK"; countries[AnnotsString.IDS_CR] = "CR"; countries[AnnotsString.IDS_HR] = "HR"; countries[AnnotsString.IDS_CU] = "CU"; countries[AnnotsString.IDS_CY] = "CY"; countries[AnnotsString.IDS_CZ] = "CZ"; countries[AnnotsString.IDS_CI] = "CI"; countries[AnnotsString.IDS_DK] = "DK"; countries[AnnotsString.IDS_DJ] = "DJ"; countries[AnnotsString.IDS_DM] = "DM"; countries[AnnotsString.IDS_DO] = "DO"; countries[AnnotsString.IDS_EC] = "EC"; countries[AnnotsString.IDS_EG] = "EG"; countries[AnnotsString.IDS_SV] = "SV"; countries[AnnotsString.IDS_GQ] = "GQ"; countries[AnnotsString.IDS_ER] = "ER"; countries[AnnotsString.IDS_EE] = "EE"; countries[AnnotsString.IDS_ET] = "ET"; countries[AnnotsString.IDS_FK] = "FK"; countries[AnnotsString.IDS_FO] = "FO"; countries[AnnotsString.IDS_FJ] = "FJ"; countries[AnnotsString.IDS_FI] = "FI"; countries[AnnotsString.IDS_FR] = "FR"; countries[AnnotsString.IDS_GF] = "GF"; countries[AnnotsString.IDS_PF] = "PF"; countries[AnnotsString.IDS_TF] = "TF"; countries[AnnotsString.IDS_GA] = "GA"; countries[AnnotsString.IDS_GM] = "GM"; countries[AnnotsString.IDS_GE] = "GE"; countries[AnnotsString.IDS_DE] = "DE"; countries[AnnotsString.IDS_GH] = "GH"; countries[AnnotsString.IDS_GI] = "GI"; countries[AnnotsString.IDS_GR] = "GR"; countries[AnnotsString.IDS_GL] = "GL"; countries[AnnotsString.IDS_GD] = "GD"; countries[AnnotsString.IDS_GP] = "GP"; countries[AnnotsString.IDS_GU] = "GU"; countries[AnnotsString.IDS_GT] = "GT"; countries[AnnotsString.IDS_GN] = "GN"; countries[AnnotsString.IDS_GW] = "GW"; countries[AnnotsString.IDS_GY] = "GY"; countries[AnnotsString.IDS_HT] = "HT"; countries[AnnotsString.IDS_HM] = "HM"; countries[AnnotsString.IDS_HN] = "HN"; countries[AnnotsString.IDS_HK] = "HK"; countries[AnnotsString.IDS_HU] = "HU"; countries[AnnotsString.IDS_IS] = "IS"; countries[AnnotsString.IDS_IN] = "IN"; countries[AnnotsString.IDS_ID] = "ID"; countries[AnnotsString.IDS_IR] = "IR"; countries[AnnotsString.IDS_IQ] = "IQ"; countries[AnnotsString.IDS_IE] = "IE"; countries[AnnotsString.IDS_IL] = "IL"; countries[AnnotsString.IDS_IT] = "IT"; countries[AnnotsString.IDS_JM] = "JM"; countries[AnnotsString.IDS_JP] = "JP"; countries[AnnotsString.IDS_JO] = "JO"; countries[AnnotsString.IDS_KZ] = "KZ"; countries[AnnotsString.IDS_KE] = "KE"; countries[AnnotsString.IDS_KI] = "KI"; countries[AnnotsString.IDS_KW] = "KW"; countries[AnnotsString.IDS_KG] = "KG"; countries[AnnotsString.IDS_LA] = "LA"; countries[AnnotsString.IDS_LV] = "LV"; countries[AnnotsString.IDS_LB] = "LB"; countries[AnnotsString.IDS_LS] = "LS"; countries[AnnotsString.IDS_LR] = "LR"; countries[AnnotsString.IDS_LY] = "LY"; countries[AnnotsString.IDS_LI] = "LI"; countries[AnnotsString.IDS_LT] = "LT"; countries[AnnotsString.IDS_LU] = "LU"; countries[AnnotsString.IDS_MO] = "MO"; countries[AnnotsString.IDS_MK] = "MK"; countries[AnnotsString.IDS_MG] = "MG"; countries[AnnotsString.IDS_MW] = "MW"; countries[AnnotsString.IDS_MY] = "MY"; countries[AnnotsString.IDS_MV] = "MV"; countries[AnnotsString.IDS_ML] = "ML"; countries[AnnotsString.IDS_MT] = "MT"; countries[AnnotsString.IDS_MH] = "MH"; countries[AnnotsString.IDS_MQ] = "MQ"; countries[AnnotsString.IDS_MR] = "MR"; countries[AnnotsString.IDS_MU] = "MU"; countries[AnnotsString.IDS_YT] = "YT"; countries[AnnotsString.IDS_MX] = "MX"; countries[AnnotsString.IDS_FM] = "FM"; countries[AnnotsString.IDS_MD] = "MD"; countries[AnnotsString.IDS_MC] = "MC"; countries[AnnotsString.IDS_MN] = "MN"; countries[AnnotsString.IDS_MS] = "MS"; countries[AnnotsString.IDS_MA] = "MA"; countries[AnnotsString.IDS_MZ] = "MZ"; countries[AnnotsString.IDS_MM] = "MM"; countries[AnnotsString.IDS_NA] = "NA"; countries[AnnotsString.IDS_NR] = "NR"; countries[AnnotsString.IDS_NP] = "NP"; countries[AnnotsString.IDS_NL] = "NL"; countries[AnnotsString.IDS_AN] = "AN"; countries[AnnotsString.IDS_NC] = "NC"; countries[AnnotsString.IDS_NZ] = "NZ"; countries[AnnotsString.IDS_NI] = "NI"; countries[AnnotsString.IDS_NE] = "NE"; countries[AnnotsString.IDS_NG] = "NG"; countries[AnnotsString.IDS_NU] = "NU"; countries[AnnotsString.IDS_NF] = "NF"; countries[AnnotsString.IDS_KP] = "KP"; countries[AnnotsString.IDS_MP] = "MP"; countries[AnnotsString.IDS_NW] = "NO"; //Note here countries[AnnotsString.IDS_OM] = "OM"; countries[AnnotsString.IDS_PK] = "PK"; countries[AnnotsString.IDS_PW] = "PW"; countries[AnnotsString.IDS_PA] = "PA"; countries[AnnotsString.IDS_PG] = "PG"; countries[AnnotsString.IDS_PY] = "PY"; countries[AnnotsString.IDS_PE] = "PE"; countries[AnnotsString.IDS_PH] = "PH"; countries[AnnotsString.IDS_PN] = "PN"; countries[AnnotsString.IDS_PL] = "PL"; countries[AnnotsString.IDS_PT] = "PT"; countries[AnnotsString.IDS_PR] = "PR"; countries[AnnotsString.IDS_QA] = "QA"; countries[AnnotsString.IDS_RE] = "RE"; countries[AnnotsString.IDS_RO] = "RO"; countries[AnnotsString.IDS_RU] = "RU"; countries[AnnotsString.IDS_RW] = "RW"; countries[AnnotsString.IDS_SH] = "SH"; countries[AnnotsString.IDS_KN] = "KN"; countries[AnnotsString.IDS_LC] = "LC"; countries[AnnotsString.IDS_PM] = "PM"; countries[AnnotsString.IDS_VC] = "VC"; countries[AnnotsString.IDS_WS] = "WS"; countries[AnnotsString.IDS_SM] = "SM"; countries[AnnotsString.IDS_ST] = "ST"; countries[AnnotsString.IDS_SA] = "SA"; countries[AnnotsString.IDS_SN] = "SN"; countries[AnnotsString.IDS_SC] = "SC"; countries[AnnotsString.IDS_SL] = "SL"; countries[AnnotsString.IDS_SG] = "SG"; countries[AnnotsString.IDS_SK] = "SK"; countries[AnnotsString.IDS_SI] = "SI"; countries[AnnotsString.IDS_SB] = "SB"; countries[AnnotsString.IDS_SO] = "SO"; countries[AnnotsString.IDS_ZA] = "ZA"; countries[AnnotsString.IDS_GS] = "GS"; countries[AnnotsString.IDS_KR] = "KR"; countries[AnnotsString.IDS_ES] = "ES"; countries[AnnotsString.IDS_LK] = "LK"; countries[AnnotsString.IDS_SD] = "SD"; countries[AnnotsString.IDS_SR] = "SR"; countries[AnnotsString.IDS_SJ] = "SJ"; countries[AnnotsString.IDS_SZ] = "SZ"; countries[AnnotsString.IDS_SE] = "SE"; countries[AnnotsString.IDS_CH] = "CH"; countries[AnnotsString.IDS_SY] = "SY"; countries[AnnotsString.IDS_TW] = "TW"; countries[AnnotsString.IDS_TJ] = "TJ"; countries[AnnotsString.IDS_TZ] = "TZ"; countries[AnnotsString.IDS_TH] = "TH"; countries[AnnotsString.IDS_CD] = "CD"; countries[AnnotsString.IDS_TL] = "TL"; countries[AnnotsString.IDS_TG] = "TG"; countries[AnnotsString.IDS_TK] = "TK"; countries[AnnotsString.IDS_TO] = "TO"; countries[AnnotsString.IDS_TT] = "TT"; countries[AnnotsString.IDS_TN] = "TN"; countries[AnnotsString.IDS_TR] = "TR"; countries[AnnotsString.IDS_TM] = "TM"; countries[AnnotsString.IDS_TC] = "TC"; countries[AnnotsString.IDS_TV] = "TV"; countries[AnnotsString.IDS_VI] = "VI"; countries[AnnotsString.IDS_UG] = "UG"; countries[AnnotsString.IDS_UA] = "UA"; countries[AnnotsString.IDS_AE] = "AE"; countries[AnnotsString.IDS_GB] = "GB"; countries[AnnotsString.IDS_US] = "US"; countries[AnnotsString.IDS_UM] = "UM"; countries[AnnotsString.IDS_UY] = "UY"; countries[AnnotsString.IDS_UZ] = "UZ"; countries[AnnotsString.IDS_VU] = "VU"; countries[AnnotsString.IDS_VA] = "VA"; countries[AnnotsString.IDS_VE] = "VE"; countries[AnnotsString.IDS_VN] = "VN"; countries[AnnotsString.IDS_WF] = "WF"; countries[AnnotsString.IDS_EH] = "EH"; countries[AnnotsString.IDS_YE] = "YE"; countries[AnnotsString.IDS_ZM] = "ZM"; countries[AnnotsString.IDS_ZW] = "ZW"; var toEnable = { "next": false }; var toLoad = { //"cnty": countries, "rmbm": true, "bddy": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DAY, "bdyr": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_YEAR, }; this.data.weEnabledPoly = false; //0. First remove any entry if present //1. Add the Select One entry //2. Then add all the countries one by one //0. First remove any entry if present dialog.removeAllEntriesFromList("cnty"); //1. Add the Select One entry var sel_one = {} sel_one[AnnotsString.IDS_COUNTRY_SELECT_ONE] = 1; dialog.insertEntryInList({"cnty": sel_one }); //2. Then add all the countries one by one dialog.insertEntryInList({"cnty": countries }); //Note: dikumar: Apart from adding a single entry in a list this can also be used to add more than one entries. However these entries would be appended to the existing entries. Also these new entries would be added in aphabetical order. // Populate the Birthday month popup list //0. First remove any entry if present dialog.removeAllEntriesFromList("bdmt"); //1. Add the First entry - Month var mon_one = {} mon_one[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MONTH] = 12; dialog.insertEntryInList({"bdmt": mon_one }); //2. Then add all the months one by one for (var mon in months) { var entry = {}; entry[mon] = mon; dialog.insertEntryInList({"bdmt": entry }); } var toShow = { "eror": false, "help": false, "prev": (this.data.reviewType != "DocCenterSignup") } dialog.focus("mail"); dialog.enable(toEnable); dialog.load(toLoad); dialog.visible(toShow); this.cnty(dialog); }, poly: function(dialog) { var poly = dialog.store()["poly"]; if ((poly) && (this.data.weEnabledPoly)) this.data.weEnabledPoly = false }, cnty: function(dialog) { var toLoad = {} var selectedCountry = this.getSelectedItemText("cnty"); this.data.cnty = countries[selectedCountry]; var poly = dialog.store()["poly"]; //this.data.weEnabledPoly if (selectedCountry == AnnotsString.IDS_US) { if (poly) ;//do nothing else { toLoad.poly = true this.data.weEnabledPoly = true } } else { if (this.data.weEnabledPoly) { toLoad.poly = false; this.data.weEnabledPoly = false; } else ;//do nothing } dialog.load(toLoad); }, idle: function(dialog) { var o = dialog.store(); this.data.mail = o["mail"]; this.data.pwd1 = o["pwd1"]; this.data.pwd2 = o["pwd2"]; var fNam = o["fNam"]; fNam = fNam.replace(new RegExp(/^\s+/),""); // START fNam = fNam.replace(new RegExp(/\s+$/),""); // END this.data.fNam = fNam; var lNam = o["lNam"]; lNam = lNam.replace(new RegExp(/^\s+/),""); // START lNam = lNam.replace(new RegExp(/\s+$/),""); // END this.data.lNam = lNam; this.data.cnty = countries[this.getSelectedItemText("cnty")]; this.data.rmbm = o["rmbm"]; this.data.agre = o["agre"]; this.data.poly = o["poly"]; this.data.bdmt = months[this.getSelectedItemText("bdmt")]; this.data.bddy = o["bddy"]; this.data.bdyr = o["bdyr"]; var toEnable = {}; if ((this.data.mail != undefined) && (this.data.mail != "") && (this.data.mail != null) && (this.data.pwd1 != undefined) && (this.data.pwd1 != "") && (this.data.pwd1 != null) && (this.data.pwd2 != undefined) && (this.data.pwd2 != "") && (this.data.pwd2 != null) && (this.data.fNam != undefined) && (this.data.fNam != "") && (this.data.fNam != null) && (this.data.lNam != undefined) && (this.data.lNam != "") && (this.data.lNam != null) && (this.data.cnty != undefined) && (this.data.cnty != "") && (this.data.cnty != null) && (this.data.bdmt != undefined) && (this.data.bdmt != null) && (this.data.bdmt != months[AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MONTH]) && (this.data.bddy != undefined) && (this.data.bddy != "") && (this.data.bddy != null) && (this.data.bddy != AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DAY) && (this.data.bdyr != undefined) && (this.data.bdyr != "") && (this.data.bdyr != null) && (this.data.bdyr != AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_YEAR) && //(this.data.pwd1.length>5) && (this.data.pwd1.length<13) && (this.data.pwd1 == this.data.pwd2) && //(eMailValidate(this.data.mail)==true) && (this.data.agre==true)) { toEnable.next = true; } else { toEnable.next = false; } dialog.enable(toEnable); }, getSelectedItemText: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return i; } return ""; }, commit: function(dialog, next) { if (next) { //disable next dialog.enable({"next": false}); // hide any errors dialog.visible({eror: false}); var o = dialog.store(); this.data.mail = o["mail"]; this.data.pwd1 = o["pwd1"]; this.data.pwd2 = o["pwd2"]; var fNam = o["fNam"]; fNam = fNam.replace(new RegExp(/^\s+/),""); // START fNam = fNam.replace(new RegExp(/\s+$/),""); // END this.data.fNam = fNam; var lNam = o["lNam"]; lNam = lNam.replace(new RegExp(/^\s+/),""); // START lNam = lNam.replace(new RegExp(/\s+$/),""); // END this.data.lNam = lNam; this.data.cnty = countries[this.getSelectedItemText("cnty")]; this.data.rmbm = o["rmbm"]; this.data.agre = o["agre"]; this.data.poly = o["poly"]; this.data.bdmt = months[this.getSelectedItemText("bdmt")]; this.data.bddy = o["bddy"]; this.data.bdyr = o["bdyr"]; if (o["rmbm"]) this.data.rememberPassword = true; else this.data.rememberPassword = false; //Error checking //Not a valid email address if (eMailValidate(this.data.mail) == false) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_EMAIL_NOT_VALID}); dialog.visible({eror: true}); DebugThrow ("Invalid data"); } //Password is outside the range of 6-12 characters if ((this.data.pwd1.length<6) || (this.data.pwd1.length>12)) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_PASSWORD_LENGTH}); dialog.visible({eror: true}); DebugThrow ("Invalid data"); } //Password and confirm password are not the same. else if (this.data.pwd1 != this.data.pwd2) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PASSWORDS_DONT_MATCH}); dialog.visible({eror: true}); DebugThrow ("Invalid data"); } //Confirm Password is outside the range of 6-12 characters else if ((this.data.pwd2.length<6) || (this.data.pwd2.length>12)) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_PASSWORD_LENGTH}); dialog.visible({eror: true}); DebugThrow ("Invalid data"); } // BirthDay Date is invalid else if (validateBirthDay(this.data.bdmt, this.data.bddy, this.data.bdyr) == false) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_BIRTDAY_NOT_VALID}); dialog.visible({eror: true}); DebugThrow ("Invalid data"); } // Ensure COPPA Requirements, if Age < 13 Years, display the elibility requirements error dialog, // Disable Acrobat.com Signup for 24 Hours and cancel the signup dialog else if (validateAgeRequirements(this.data.bdmt, this.data.bddy, this.data.bdyr) == false) { var desc = IWSharedReviewDocCenterEligibilityErrorDialog(); app.beginPriv(); Collab.disableDocCentreSignup(); var result = app.execDialog(desc); app.endPriv(); dialog.cancel(); DebugThrow ("Invalid data"); } var signupResult; try { this.data.user = this.data.mail; this.data.pswd = this.data.pwd1; // this may take a while so indicate we are about to issue the account creation request dialog.setForeColorRed("eror"); dialog.load({"eror": ""}); dialog.visible({eror: true}); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CREATING}); app.beginPriv(); signupResult = Collab.dcSignup(this.data.mail, this.data.pswd, this.data.fNam, this.data.lNam, this.data.cnty, this.data.poly, false); app.endPriv(); } catch(err) { dialog.enable({"next": true}); dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERIC}); dialog.visible({eror: true}); DebugThrow ("Error in dcSignup"); } if (signupResult == 200) //no error { try { var driver = getDriver(this.data.reviewType); app.beginPriv(); swConn = Collab.swConnect({cUsername: this.data.mail, cPassword: this.data.pwd1, bSaveCred: this.data.rmbm, bValidateEmail: true, cDriver:driver}); app.endPriv(); if (swConn) { this.data.swConn = swConn; app.beginPriv(); shareIdentity.Email = this.data.mail; shareIdentity.FullName = swConn.getFullName(); shareIdentity.Authenticated = true; app.endPriv(); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "SignUp_Successful"; addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); addStringToPayloadParams.name = "Authentication_Successful"; addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugPrintln("Adobe Id account created and successfully connected to Acrobat.com"); } else { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "SignUp_Successful"; addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugThrow("Login was unsuccessful, try again"); } dialog.enable({"next": true}); } catch(e) { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "SignUp_Successful"; addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } ANDumpObj(e); dialog.enable({"next": true}); dialog.setForeColorRed("stat"); if (e.errorCode == 403 || e.errorCode == 401) { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was unsuccessful, try again"); } else if (e.errorCode == 402) // terms of usage not accepted { var desc = IWSharedReviewDocCenterServicesDialog(); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); if (result == "ok") { //user accepted the agreement, but you don't have the swConn object right now app.beginPriv(); var acceptResult = Collab.swAcceptTOU(this.data.user, this.data.pswd); app.endPriv(); if (acceptResult == 0) { try { var driver = getDriver(this.data.reviewType); app.beginPriv(); var swConn = Collab.swConnect({cUsername: this.data.user, cPassword: this.data.pswd, bSaveCred: this.data.rememberPassword, cDriver:driver}); app.endPriv(); if (swConn) { this.data.swConn = swConn; app.beginPriv(); if (Collab.isFirstLaunch(this.data.WT)) { Collab.unsetFirstLaunch(this.data.WT); } shareIdentity.Email = this.data.user; shareIdentity.FullName = swConn.getFullName(); shareIdentity.Authenticated = true; app.endPriv(); if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "Authentication_Successful"; addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } DebugPrintln("Successfully connected to Acrobat.com"); DebugAlert("IWSharedReviewDocCenterLogin: Login successful"); } } catch(e) { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "Authentication_Successful"; addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); //there was a throw from the C++ side. DebugThrow("Login was unsuccessful, try again"); } } else { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was successful, but attempt to accept services agreement failed"); } } else { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD}); dialog.visible({stat: true}); DebugThrow("Login was successful, but user did not accept services agreement"); } } else if (e.errorCode == 405) // account not verified (grace period expired) { //This is the case when login is valid but error is that the user needs // confirm the adobe id request. So enable resd and update the status dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED}); dialog.visible({"resd" : true}); dialog.visible({stat: true}); DebugThrow("Login was successful, but need to verify email address"); } else if (e.errorCode == 0 || e.errorCode >= 400) // interpret all other errors as a server connection problem { dialog.load({"stat": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT}); dialog.visible({stat: true}); DebugThrow("Login was unsuccessful, try again"); } else { DebugThrow("Login was unsuccessful, try again"); } } } else { if(this.data.reviewType == "SharedReview" || this.data.reviewType == "FormDistribution") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "SignUp_Successful"; addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } dialog.enable({"next": true}); if(signupResult == 409) { dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_DUP_EMAIL}); } else { dialog.setForeColorRed("eror"); dialog.load({"eror": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERIC}); } dialog.visible({eror: true}); DebugThrow("Response has error"); } } }, "agul": function(dialog) { var url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_ACROBAT; app.launchURL(url, true); }, "agpl": function(dialog) { var url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_ACROBAT; app.launchURL(url, true); }, "poul": function(dialog) { var url = (app.viewerType == "Reader") ? AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_READER : AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_ACROBAT; app.launchURL(url, true); }, description: [ { type: "view", width: Collab.wizardWidth, height: Collab.wizardHeight, //margin_height: Collab.marginHeight, //margin_width: Collab.wizardMarginWidth, alignment: "align_fill", align_children: "align_left", elements: [ { type:"view", align_children: "align_top", alignment: "align_fill", //margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, elements: [ { type:"view", align_children:"align_left", elements: [ { type:"gap", height: 1, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE, bold:true, font: "heading", height: 20, }, { type:"gap", height: 1, }, ] } ] }, { type:"view", align_children: "align_top", alignment: "align_fill", //margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, elements: [ { type:"view", align_children:"align_left", elements: [ { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_ADDRESS, bold:true, font: "dialog" }, { type:"edit_text", item_id:"mail", width: 230 }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PASSWORD_HINT, bold:true, font: "dialog" }, { type:"edit_text", item_id:"pwd1", width: 230, password:true }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PASSWORD_CONFIRM, bold:true, font: "dialog" }, { type:"edit_text", item_id:"pwd2", width: 230, password:true }, { type:"view", align_children:"align_left", elements: nameFields, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_BIRTHDAY, bold:true, font: "dialog" }, { type:"view", align_children:"align_row", elements: [ { type:"popup", item_id:"bdmt", width: 60 }, { type:"edit_text", item_id:"bddy", width: 60 }, { type:"edit_text", item_id:"bdyr", width: 60 }, ] }, { type:"view", align_children:"align_left", //alignment:"align_bottom", elements: [ { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_COUNTRY, bold:true, font: "dialog" }, { type: "popup", item_id: "cnty", width: 210, PopupEdit: false }, ] } ] }, { type: "gap", width: 18, }, { type:"view", align_children:"align_left", elements: [ { type:"view", align_children:"align_top", elements: [ { type:"check_box", item_id:"agre", }, { type:"view", align_children:"align_left", elements: [ { type:"static_text", width: 220, name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE, wrap_name:true, }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE_LINK, item_id:"agul" }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PRIVACY_POLICY_LINK, item_id:"agpl" }, ] }, ] }, { type: "gap", height: 10, }, { type:"view", align_children:"align_top", elements: [ { type:"check_box", item_id:"poly", }, { type:"view", align_children:"align_left", elements: [ { type:"static_text", width: 220, name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PROMO, wrap_name:true, }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_PRIVACY_POLICY_LINK, item_id:"poul" }, ] }, ] }, { type: "gap", height: 10, }, ] }, ] }, { type:"view", align_children: "align_top", alignment: "align_fill", //margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, elements: [ { type:"view", align_children:"align_left", width: 230, elements: [ { type:"check_box", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CHECK_PASSWORD_ME, item_id:"rmbm" }, ] }, { type: "gap", width: 18, }, { type:"view", align_children:"align_left", elements: [ { type:"static_text", width: 230, name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERIC, wrap_name:true, item_id: "eror" } ] }, ] } ] }, ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; IWSharedReviewDocCenterCreateConfirm = function(reviewType) { var description = { reviewType: reviewType, initialize: function(dialog) { var o = dialog.store(); var toLoad = { "eMl1": this.data.mail }; var toShow = {}; toShow.prev = (this.data.reviewType != "DocCenterSignup"); toShow.help = false; dialog.focus("resd"); dialog.visible(toShow); dialog.load(toLoad); }, idle: function(dialog) { }, commit: function(dialog, next) { }, "resd": function(dialog) { app.beginPriv(); var verifyResult = Collab.swSendVerifyEmail(this.data.user, this.data.pswd); app.endPriv(); DebugPrinltn("Collab.swSendVerifyEmail: result:"+verifyResult); }, description: [ { type: "view", width: Collab.wizardWidth, height: Collab.wizardHeight, //margin_height: Collab.marginHeight, //margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: [ { type:"view", align_children: "align_top", alignment: "align_fill", //margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, width: 510, elements: [ { type:"view", align_children:"align_left", elements: [ { type:"gap", height: 2, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY, bold:true, font: "dialog", }, { type:"gap", height: 2, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR1, wrap_name:true, width: 510 }, { type:"static_text", name:"", item_id:"eMl1", bold:true, width: 510, font:"dialog" }, { type:"gap", height: 2, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR2, wrap_name:true, width: 510 }, { type:"gap", height: 2, }, { type:"static_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR3, wrap_name:true, width: 510 }, { type:"gap", height: 2, }, { type:"link_text", name:AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_RESEND, item_id:"resd" } ] } ] } ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } CBSharedReviewDistributeStepDescription = function() { var description = { initialize: function(dialog) { this.data.docWarningPopped = false; app.beginPriv(); Collab.updateMountInfo(); app.endPriv(); var oldName = this.data.doc.documentFileName; var oldPath = this.data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); this.data.cDocumentName = oldName.replace(/.pdf$/i, "") + AnnotsString.IDS_SHARED_REVIEW_FILE_EXT; this.data.cDocumentPath = newPath + this.data.cDocumentName; if(typeof this.data.distributionMethod == "undefined") this.data.distributionMethod = "EMAIL"; var toLoad = {}; switch(this.data.distributionMethod) { case "MANUAL": case "EMAIL": app.beginPriv(); var path = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.dest = (this.data.doc.requiresFullSave) ? "" : path; break; case "UPLOAD": toLoad.dest = this.data.distributionURL; break; } if(typeof this.data.previousDestination != "undefined") toLoad.dest = this.data.previousDestination; switch(this.data.distributionMethod) { default: case "EMAIL": toLoad.invi = true; toLoad.attc = true; toLoad.bmsg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL; break; case "UPLOAD": toLoad.invi = true; toLoad.send = true; toLoad.bmsg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_REMOTE; break; case "MANUAL": toLoad.save = true; toLoad.bmsg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL; break; } dialog.load(toLoad); dialog.focus("dest"); }, "invi": function(dialog) { // Send Review Invitation - switch the text var props = dialog.store(); if(props.attc) this.attc(dialog); else if(props.send) this.send(dialog); var toEnable = { "attc": true, "send": true, }; dialog.enable(toEnable); }, "attc": function(dialog) { // Send Review Invitation w/attachment - switch the text var toLoad = { bmsg: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL, }; // Bugfix #1391364 - preload the control with the default save location for links app.beginPriv(); var path = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.dest = (this.data.doc.requiresFullSave) ? "" : path; if(typeof this.data.previousDestination != "undefined") toLoad.dest = this.data.previousDestination; var props = dialog.store(); if(props.invi && !props.attc && !props.send) toLoad.attc = true; dialog.load(toLoad); }, "send": function(dialog) { // Bugfix #1391364 - preload the control with the default save location for links var cDefaultLink = this.data.server.Settings.cSetting; // TODO: Fix in 9.0 if(!cDefaultLink.match(/^(http[s]?|file):\/\//i)) cDefaultLink = ANSMBURLToPlatformPath(cDefaultLink); cDefaultLink += this.data.cDocumentName; // Send Review Invitation w/link - switch the text var toLoad = { bmsg: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_REMOTE, dest: cDefaultLink, }; var props = dialog.store(); if(props.invi && !props.attc && !props.send) toLoad.attc = true; dialog.load(toLoad); }, "save": function(dialog) { // Send Review Invitation w/link - switch the text var toLoad = { bmsg: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL, }; // Bugfix #1391364 - preload the control with the default save location for links app.beginPriv(); var path = Collab.convertDIPathToPlatformPath(this.data.cDocumentPath); app.endPriv(); toLoad.dest = (this.data.doc.requiresFullSave) ? "" : path; // Publish file to a server - switch the text dialog.load(toLoad); var toEnable = { "attc": false, "send": false, }; dialog.enable(toEnable); }, "brws": function(dialog) { var browseProps = { bSave: true, cFilenameInit: this.data.cDocumentName, bUnicode: true, } var props = dialog.store(); this.data.distributionMethod = "EMAIL"; if(props.send) { this.data.distributionMethod = "UPLOAD"; browseProps.cFSInit = fileSystem.WebDAV; } else if(props.save) { this.data.distributionMethod = "MANUAL"; } app.beginPriv() var path = app.browseForDoc(browseProps); app.endPriv(); if(path) { try { var saveURL; this.data.distributionFS = path.cFS; switch(this.data.distributionMethod) { case "EMAIL": case "MANUAL": app.beginPriv(); saveURL = Collab.convertDIPathToPlatformPath(path.cPath); app.endPriv(); this.data.cDocumentPath = path.cPath; this.data.cDocumentName = path.cPath.substring(path.cPath.lastIndexOf('/') + 1, path.cPath.length); break; case "UPLOAD": saveURL = this.normalizeURL(path.cURL); var validLocation = (saveURL.substring(0, 5) == "http:") || (saveURL.substring(0, 4) == "smb:"); if (!validLocation) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION); app.endPriv(); DebugThrow ("Non-shared folder"); } if(app.platform == "WIN" && path.cFS != fileSystem.WebDAV) { app.beginPriv(); saveURL = ANSMBURLToPlatformPath(saveURL); app.endPriv(); } this.data.distributionURL = saveURL; break; } dialog.load({dest: saveURL}); } catch (e) { if (e.message == "Volume Mount Exception") { var errMsg; switch (Number(e.errorCode)) { case 1: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR; break; case 3: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_MOUNT_ERROR; break; default: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_ERROR; break; } app.beginPriv(); app.alert(errMsg); app.endPriv(); DebugThrow ("VolMountError"); } } } }, normalizeURL: function(url) { // The Collab.uriNormalize function may need to access the file system // to perform its function. For this reason we need to pass it a valid // path. Since the file that is selected in browseForDoc may not exist // the path stored in url may not be fully resolvable. So, we need to strip // off the file portion of the url before passing it to Collab.uriNormalize. // After normalizing the url we need to append the file portion back on // to the url. /* This function is not used anymore in the new Shared Review Wizard. If you start using it please ensure that URL is proparly escaped in uriNormalize method as it will eventually unescape */ var lastSepIndex = url.lastIndexOf('/'); if (lastSepIndex >= 0) { var dirURL = url.substr(0, lastSepIndex + 1); var suburl = url.substr(lastSepIndex + 1); app.beginPriv(); url = Collab.uriNormalize(dirURL) + suburl; app.endPriv(); } return url; }, fixURL: function(url) { if(url.match(/^\\\\/)) // really a windows network path { // trailing slash? add a file name url = url.replace(/\\\.?$/, "\\" + this.data.cDocumentName); } else // trailing slash? add a file name url = url.replace(/\/\.?$/, "/" + this.data.cDocumentName); // no .pdf ending? add it if(!url.match(/\.pdf$/i)) { if(url.match(/\.$/)) url += "pdf"; else url += ".pdf"; } return url; }, getFS: function(url) { if(url.match(/^\\\\/) || url.match(/^.+:\\/)) // really a windows path return fileSystem['default']; else if(url.match(/^file:\/\//) || url.match(/^smb:\/\//)) // SMB URL return fileSystem['default']; else return fileSystem.WebDAV; }, getSeparator: function(url) { var pathSep = "/"; if(url.match(/^\\\\/) || url.match(/^.+:\\/)) // really a windows path { pathSep = "\\"; } else if(url.match(/^(http[s]|file):\/\//)) // URL Scheme { pathSep = "/"; } return pathSep; }, getFilename: function(url) { var pathIndex = url.lastIndexOf(this.getSeparator(url)); if (pathIndex >= 0) url = url.substr(pathIndex + 1); return url; }, getDirectory: function(url) { var pathIndex = url.lastIndexOf(this.getSeparator(url)); if (pathIndex >= 0) url = url.substr(0, pathIndex + 1); return url; }, URLToDiPath: function(url) { if(url.match(/^\\\\/)) // really a windows network path url = url.replace(/\\/g, "/").replace(/^\/\//, "/"); else { url = url.replace(/^file:\/\/localhost\//, "/"); url = url.replace(/^file:\/\/\//, "/"); url = url.replace(/^file:\/\//, "/"); url = url.replace(/^\/([^\/]+)\|\//, "/$1/"); } return unescape(url); }, URLPartialOk: function(dest) { switch(app.platform) { case "MAC": return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/)|(?:smb:\/\/).+\/.*$/); case "WIN": return dest.match(/^(?:http[s]?:\/\/.+\/.*$)|(?:file:\/\/.+\/.*$)|(?:\\\\[^\\]+\\.*$)/); default: return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/\/).+\/.*$/); } }, idle: function(dialog) { // XXX this stinks if(this.data.doc && !this.data.docWarningPopped) { this.data.docWarningPopped = true; this.data.docModifiable = this.data.doc.requestPermission(permission.document, permission.modify) == permission.granted; app.beginPriv(); if(this.data.doc.certified) app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED}); else if(!this.data.docModifiable) { var str = AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_NOT_MODIFIABLE; if(Collab.isSharedReview(this.data.doc)) str = AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_SHARED_REVIEW; app.alert({cMsg: str}); } app.endPriv(); } var props = dialog.store(); var toEnable = { next: true }; // Update the next button if(props.send && props.invi) { var partialOKURL = this.URLPartialOk(props.dest); if(this.data.doc != null) { var dispVal = partialOKURL ? AnnotsString.IDS_SHARED_REVIEW_UPLOAD_TEMPLATE.replace(/%url%/, this.fixURL(props.dest)) : AnnotsString.IDS_SHARED_REVIEW_UPLOAD_TEMPLATE.replace(/%url%/, "--"); if(props.disp != dispVal) dialog.load({disp: dispVal }); toEnable.next = this.data.docModifiable && !this.data.doc.certified && partialOKURL != null; } } else { toEnable.next = this.data.docModifiable && !this.data.doc.certified && props.dest != null && props.dest.match(/\.pdf$/i) != null; } dialog.enable(toEnable); dialog.visible({disp: props.send && props.invi}); }, commit: function(dialog, next) { if(next) { var props = dialog.store(); var locationProps = {}; // The radios look like: // *invi // *attc // *send // *save // This gives 3 possible states since we ignore attc and send if save is selected if(props.save) { // Don't send, save a copy locally this.data.distributionMethod = "MANUAL"; this.data.distributionFS = this.getFS(props.dest); this.data.msg = ""; app.beginPriv(); locationProps.cFilePath = Collab.convertPlatformPathToDIPath(props.dest); app.endPriv(); locationProps.cDisplay = props.dest; locationProps.cFS = null; } else if(props.attc) { // Send an attachment and save a copy locally this.data.distributionMethod = "EMAIL"; this.data.distributionFS = this.getFS(props.dest); this.data.msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL; this.data.msg = this.data.msg.replace(/%review_name%/, this.data.cDocumentName ); app.beginPriv(); locationProps.cFilePath = Collab.convertPlatformPathToDIPath(props.dest); app.endPriv(); locationProps.cDisplay = props.dest; locationProps.cFS = null; } else { // Save remotely and send a link this.data.distributionMethod = "UPLOAD"; var fixedDest = this.fixURL(props.dest); this.data.distributionURL = fixedDest; this.data.distributionFS = this.getFS(this.data.distributionURL); this.data.msg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAIL; this.data.msg = this.data.msg.replace(/%review_url%/, this.data.distributionURL); // if the distribution FS is CHTTP then just use the destination path as is; // otherwise convert the path to a DI path. if (this.data.distributionFS == "CHTTP") { if (this.data.server.Settings.bUseWindowsIntegratedAuthentication) locationProps.cFS = "CSSO"; else locationProps.cFS = "CHTTP"; locationProps.cFilePath = fixedDest; } else { app.beginPriv(); locationProps.cFilePath = Collab.uriToDIPath(encodeURIComponent(ANPlatformPathToURL(fixedDest))); app.endPriv(); locationProps.cFS = this.data.distributionFS; } locationProps.cDisplay = locationProps.cFilePath; this.data.cDocumentPath = locationProps.cFilePath; } var validLocation = false; try { locationProps.cPath = locationProps.cFilePath; app.beginPriv(); validLocation = Collab.isPathWritable(locationProps) && app.isValidSaveLocation(locationProps); app.endPriv(); } catch(e) { // possible error codes that isValidSaveLocation throws: // 1. InvalidPathParam - specified path cannot be resolved (default) // 2. NoOverwrite - no write access to specified directory/file // 3. UnsafePathname - file contains an invalid character var msg; if (e.errorCode == 3) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME; else if (e.errorCode == 2) msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED; else msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION; app.alert(msg); DebugThrow ("BadLocation"); } if (!validLocation) { var msg = AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_OVERWRITE; msg = msg.replace(/%sFilename%/, locationProps.cDisplay); app.beginPriv(); if(app.alert(msg, 2, 2) != 4) DebugThrow ("CannotOverwrite"); app.endPriv(); } this.data.cDocumentPath = locationProps.cFilePath; this.data.cDocumentName = this.data.cDocumentPath.substring(this.data.cDocumentPath.lastIndexOf('/') + 1, this.data.cDocumentPath.length); this.data.previousDestination = props.dest; } }, description: [ { type: "view", align_children: "align_left", elements: [ { type: "radio", item_id: "invi", group_id: "dist", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SEND_INVITE }, { type: "view", align_children: "align_row", elements: [ { type: "gap", width: 20, }, { type: "view", elements: [ { type: "radio", item_id: "attc", group_id: "type", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_ATTACH_TO_EMAIL }, { type: "radio", item_id: "send", group_id: "type", name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SEND_URL }, ] }, ] }, { type: "radio", item_id: "save", group_id: "dist", name: AnnotsString.IDS_SHARED_REVIEW_SAVE_LOCAL }, { type: "static_text", item_id: "bmsg", wrap_name: true, width: Collab.wizardWidth, name: AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL, }, { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", item_id: "dest", alignment: "align_fill", readonly: app.isProtectedModeEnabled, }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws" }, ] }, { type: "static_text", alignment: "align_fill", truncate: "truncate_middle", item_id: "disp" }, ] } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } //The sole purpose of CBSharedReviewCompleteAutomation function is to initiate a Shared Review via automation. CBSharedReviewCompleteAutomation = app.trustedFunction(function (doc, serverType, serverURL, reviewFileName, reviewFileLocation, initiatorEmail, reviewMethod, requiredReviewers, optionalReviewers) { if (doc && Collab.isDocDirty(doc)) { app.beginPriv(); app.alert({ cMsg: AnnotsString.IDS_SEND_FOR_REVIEW_DOC_DIRTY, oDoc: doc }); app.endPriv(); return 0; } if (doc && Collab.isInvalidSaveLocation(doc)) { app.beginPriv(); app.alert({ cMsg: AnnotsString.IDS_SEND_FOR_REVIEW_SAVE_OTHER, oDoc: doc }); app.endPriv(); return 0; } var bIsValid = ANValidateIdentity(); var data = {}; data.docsOpenedByWizard = []; if (doc && doc.path) { data.docPath = doc.path; data.doc = doc; } data.reviewID = Collab.createUniqueDocID(); app.beginPriv(); data.servers = []; data.drivers = {}; //If we are here that means it is either AcroPro, AcroStandard or Acro Apex. //We don't have UB in standard or 'Exchange' data.readerEnable = (app.viewerType != "Exchange") data.reqR = SplitAddrs(requiredReviewers); data.optR = SplitAddrs(optionalReviewers); for (var i in Collab.drivers) { var driver = Collab.drivers[i]; if (driver.canInitiateWorkflow("SharedReview")) { if (!driver.isDocCenterWorkflow()) { data.servers[data.servers.length] = driver; data.drivers[driver.driverURL] = driver; //console.println("$$$> driver.driverURL = " + driver.driverURL); } else { data.dcDriver = driver; } } } app.endPriv(); //Run the shared review wizard //Start the payload for shared review var logEventParams = {}; var startPayloadParams = {}; var addStringToPayloadParams = {}; startPayloadParams.cat = "SharedReview"; startPayloadParams.subcat = "SharedReviewPayload"; startPayloadParams.evnt = "SharedReviewPayload"; app.beginPriv(); Collab.AVUMStartPayloadWrapper(startPayloadParams); app.endPriv(); data.reviewType = 'SharedReview'; data.WT = '_SR'; data.UseDocumentCenter = 0; data.UB = '_UB'; data.cannedSubj = 'Please join the review'; data.cannedMsg = 'You are invited to participate in a shared review'; data.docAlreadyOpened = 1; data.delayOpenDoc = 1; data.checkSize = 0; data.isApproval = 0; data.docModifiable = 1; data.addInternalServer = 0; data.yurl = serverURL; data.cDocumentName = reviewFileName; data.cDocumentPath = reviewFileLocation; data.distributionMethod = reviewMethod; data.overwriteIsImplicit = 0; data.doOverwrite = 1; data.deliveryMethodLinkClicked = 0; data.deadlineIsSet = 1; data.msg = ''; data.subj = 'Please join the review'; data.msgChanged = 0; data.raddr = initiatorEmail; data.accessLevel = '0'; data.deadline = ''; data.internalDeadline = ''; data.oDeadline = ''; data.result = 'fnsh'; data.server = {}; data.server.AlwaysUseServer = 0; data.server.AlwaysUseServerFD = 0; data.server.Default = 1; data.server.DistMethod = reviewMethod; data.server.Settings = {}; data.server.Settings.cSetting = serverURL; data.distributionURL = serverURL + reviewFileName; switch (serverType) { case "NETWORK": { data.serverType = '&Network folder'; data.distributionFS = ''; data.server.UI = 'My Network Folder (send as link)'; data.server.URL = 'urn://ns.adobe.com/Collaboration/SharedReview/SMB'; data.server.Settings.bUseWindowsIntegratedAuthentication = 0; break; } case "SHAREPOINT": { data.serverType = '&SharePoint subsite*'; data.distributionFS = 'CSP'; data.server.UI = 'My SharePoint Subsite'; data.server.URL = 'urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint'; data.server.Settings.bUseWindowsIntegratedAuthentication = 1; break; } case "WEBDAV": { data.serverType = '&Web server folder'; data.distributionFS = 'CHTTP'; data.server.UI = 'My Web Folder (manually send)'; data.server.URL = 'urn://ns.adobe.com/Collaboration/SharedReview/WebDAV'; data.server.Settings.bUseWindowsIntegratedAuthentication = 0; break; } } if (!requiredReviewers && ((reviewMethod == 'EMAIL') || (reviewMethod == 'UPLOAD'))) app.alert("ERROR: requiredReviewers field cannot be empty!"); else CBSharedReviewComplete(data, 1); }) showChooseSubsite = app.trustedFunction(function (oDidHappen, dialog) { oDidHappen.setStatus(AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIALIZE); oDidHappen.sharePointwiz(dialog); }) connectSubsite = app.trustedFunction(function (baseURL, docLibName, oDidHappen, dialog) { var params = { cVerb: "CONNECT", cURL: baseURL, "isSPCallSite": true, } app.beginPriv(); Net.HTTP.request(params); app.endPriv(); createDocumentLibrary(baseURL, docLibName, false, oDidHappen, dialog); }) createDocumentLibrary = app.trustedFunction(function (baseURL, docLibName, logOnce, oDidHappen, dialog) { var formDigestValue = undefined; var formDigestParams = { cVerb: "POST", cURL: baseURL + '_api/contextinfo', oAuthenticate: { UsePlatformAuth: true }, aHeaders: [{ name: "accept", value: "application/json; odata=verbose" }], oHandler: { oNotify: oDidHappen, response: function (msg, uri, e) { if (msg.error == 404) showChooseSubsite(oDidHappen, dialog); //Fix for bug4200131 else if ((msg.error == 403||msg.error==401 ||msg.error==600) && logOnce) connectSubsite(baseURL, docLibName, oDidHappen, dialog); else { if (e != undefined) this.oNotify.onErrorCreation(); else { try { var data = JSON.parse(SOAP.stringFromStream(msg)); formDigestValue = data.d.GetContextWebInformation.FormDigestValue; createLibrary(baseURL, formDigestValue, docLibName, oDidHappen); } catch(e) { if(logOnce) connectSubsite(baseURL, docLibName, oDidHappen, dialog); else this.oNotify.onErrorCreation(); } } } } }, "isSPCallSite": true, }; app.beginPriv(); var response = Net.HTTP.request(formDigestParams); app.endPriv(); }) createLibrary = app.trustedFunction(function (baseURL, formDigestValue, docLibName, oDidHappen) { if (formDigestValue != undefined) { var docLibraryParams = { cVerb: "POST", cURL: baseURL + '/_api/web/lists', oAuthenticate: { UsePlatformAuth: true }, aHeaders: [{ name: "accept", value: "application/json; odata=verbose" }, { name: "content-type", value: "application/json; odata=verbose" }, { name: "X-RequestDigest", value: formDigestValue }], oRequest: SOAP.streamFromString(JSON.stringify({ '__metadata': { 'type': 'SP.List' }, 'ForceCheckout': false, 'EnableVersioning': false, 'AllowContentTypes': true, 'BaseTemplate': 101, 'ContentTypesEnabled': true, 'Description': docLibName, 'Title': docLibName })), oHandler: { oNotify: oDidHappen, response: function (msg, uri, e) { if (e != undefined && msg.error != 500) this.oNotify.onErrorCreation(); else this.oNotify.onSuccessfulCreation(baseURL); } }, "isSPCallSite": true, }; app.beginPriv(); Net.HTTP.request(docLibraryParams); app.endPriv(); } }) CBSharedReviewComplete = function(data, automation) { var driver = (data.UseDocumentCenter) ? data.dcDriver : data.drivers[data.server.URL]; var maxStr = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE.replace(/{cStatus}/, AnnotsString.IDS_SHARED_REVIEW_COMPLETE_ERROR.replace(/%error%/, AnnotsString.IDS_NETWORK_NO_CONNECT)); var title; if (data.reviewType == "SharedReviewEmail") { if(data.action == "ChangeDeadline") title = AnnotsString.IDS_TRACKER_ACTION_CHANGE_DEADLINE; else if(data.action == "AddReviewers") title = AnnotsString.IDS_TRACKER_ACTION_ADD_REVIEWERS; } else title = AnnotsString.IDS_SHARED_REVIEW_COMPLETE_STEP_TITLE; DebugPrintln("The driver is:"+driver); ANDumpObj(driver); app.beginPriv(); var progressInfo = Collab.getProgressInfo(); app.endPriv(); var dialog = { oDialog: null, nCurrentTask: 0, oDriver: driver, oProgressInfo: progressInfo, data: data, oTaskSet: null, cDocumentPath: null, bDoCommit: false, aCompleteTasks: [], oSaveFileTasks: { // Make the document a shared review runTask: function(cxt, taskData) { //DebugAlert("inside runTask of oSaveFileTasks"); taskData.cxt = cxt; var data = cxt.data; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_START); // Bugfix #1353420 - Don't redo this once it's been done if(data.saved) { cxt.handleSuccess(); return; } try { var id = data.complete.id; var bezelMessage = ""; if (data.UseDocumentCenter) { var sourceURL = cxt.data.dcWorkspaceURL; DebugAlert("Saving the file for dc case with workspaceURL: sourceURL:"+sourceURL); app.beginPriv(); var eaddr = data.user; app.endPriv(); bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_DC; } else { app.beginPriv(); var sourceURL = Collab.uriConvertReviewSource(data.complete.sourceURL); var eaddr = identity.email; app.endPriv(); switch(data.distributionMethod) { case "EMAIL": { bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_ATTACH; break; } case "UPLOAD": { switch (data.serverType) { case AnnotsString.IDS_SHARED_REVIEW_SMB_NAME: { bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_SMB_UPLOAD; break; } case AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME: { bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_SHAREPOINT_UPLOAD; break; } case AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME: { bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_WEBDAV_UPLOAD; break; } } break; } case "MANUAL": { bezelMessage = AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIATE_MANUAL; break; } } } var params = { doc: data.doc, initiator: eaddr, id: data.reviewID, source: sourceURL, driver: data.complete.driver.driverURL, invitees: data.complete.to, cc: data.complete.cc, sentDate: data.complete.initDate, deadDate: (data.internalDeadline != "") ? data.oDeadline : false, requireSave: data.distributionMethod == "UPLOAD", ui: false, distributionMethod: data.distributionMethod, versionInfo: app.viewerVersion, accessLevel: Math.abs(data.accessLevel), bezelMessage: bezelMessage, }; DebugPrintln("Registering review - params:"); //DebugAlert("Registering review - params:"); //for (var prop in params) console.println(prop + " => " + params[prop]); // Register the review for the initiator BEFORE adding to the doc app.beginPriv(); Collab.registerReview(params); app.endPriv(); var bUB = data.readerEnable; var scriptProps = { cAcroVersion: AnnotsString.IDS_SEND_FOR_REVIEW_VERSION_ERR, initiator: eaddr, reviewID: data.reviewID, reviewSource: sourceURL, driverURI: driver.driverURL, to: data.complete.to, cc: data.complete.cc, initDate: data.complete.initDate, requireSave: data.distributionMethod == "UPLOAD", deadDate: (data.internalDeadline != "") ? data.oDeadline : false, distributionMethod: data.distributionMethod, versionInfo: app.viewerVersion, accessLevel: Math.abs(data.accessLevel), }; var cScript = bUB ? CBFreezeFunc(function() { if(app.viewerVersion >= 8 && (!app.viewerType.match(/Reader/) || (requestPermission(permission.annot, permission.create) == permission.granted))) { var msg = { doc: this, initiator: "{initiator}", id: "{reviewID}", source: "{reviewSource}", driver: "{driverURI}", invitees: "{to}", sentDate: "{initDate}", deadDate: "{deadDate}", requireSave: "{requireSave}", cc: "{cc}", distributionMethod: "{distributionMethod}", versionInfo: "{versionInfo}", accessLevel: "{accessLevel}", }; Collab.registerReview(msg); } }, scriptProps ) + "()" : CBFreezeFunc(function() { if(app.viewerVersion >= 8 && !app.viewerType.match(/Reader/)) { var msg = { doc: this, initiator: "{initiator}", id: "{reviewID}", source: "{reviewSource}", driver: "{driverURI}", invitees: "{to}", sentDate: "{initDate}", deadDate: "{deadDate}", requireSave: "{requireSave}", cc: "{cc}", distributionMethod: "{distributionMethod}", versionInfo: "{versionInfo}", accessLevel: "{accessLevel}", }; Collab.registerReview(msg); } }, scriptProps ) + "()"; var cVersionScript = CBFreezeFunc(function() { if (this.ADBE == undefined) this.ADBE = new Object(); ADBE.LANGUAGE = "{cLanguage}"; ADBE.Viewer_string_Title = "{cTitle}"; if(app.language == ADBE.LANGUAGE) { ADBE.Viewer_RMA_string_Reader = "{cReader}"; ADBE.Viewer_RMA_string_Viewer_Old = "{cViewerOld}"; ADBE.Viewer_RMA_string_Viewer = "{cViewer}"; ADBE.Viewer_RMA_string_Reader_9_OrLater = "{cReader9OrLater}"; } else { ADBE.Viewer_RMA_string_Reader = "{cReaderENU}"; ADBE.Viewer_RMA_string_Viewer_Old = "{cViewerOldENU}"; ADBE.Viewer_RMA_string_Viewer = "{cViewerENU}"; ADBE.Viewer_RMA_string_Reader_9_OrLater = "{cReader9OrLaterENU}"; } if (typeof(ADBE.Reader_Value_Asked) == "undefined") ADBE.Reader_Value_Asked = false; if (typeof(ADBE.Viewer_Value_Asked) == "undefined") ADBE.Viewer_Value_Asked = false; var bUseDocumentCenter = "{bUseDocumentCenter}"; if (typeof(ADBE.Reader_Need_Version) == "undefined" || ADBE.Reader_Need_Version < 8) { if(bUseDocumentCenter==true) ADBE.Reader_Need_Version = 9; else ADBE.Reader_Need_Version = 8; ADBE.Reader_Value_New_Version_URL = "http://www.adobe.com/products/acrobat/readstep2.html"; } if (typeof(ADBE.Viewer_Need_Version) == "undefined" || ADBE.Viewer_Need_Version < 8) { if(bUseDocumentCenter==true) ADBE.Viewer_Need_Version = 9; else ADBE.Viewer_Need_Version = 8; ADBE.Viewer_Value_New_Version_URL = "http://www.adobe.com/products/acrobat/readstep2.html"; } if (app.viewerType == "Reader") { if (app.viewerVersion < ADBE.Reader_Need_Version && !ADBE.Reader_Value_Asked) { var alertMessage = ADBE.Viewer_RMA_string_Reader; if(ADBE.Reader_Need_Version==9) alertMessage = ADBE.Viewer_RMA_string_Reader_9_OrLater; if (app.alert(alertMessage, 1, 1) == 1) this.getURL(ADBE.Reader_Value_New_Version_URL, false); ADBE.Reader_Value_Asked = true; } } else { // get ubiquity rights var bShowReader = "{bShowReader}"; if (app.viewerVersion < 7 && !ADBE.Viewer_Value_Asked) { app.response({cQuestion:ADBE.Viewer_RMA_string_Viewer, cDefault:ADBE.Viewer_Value_New_Version_URL, cTitle:ADBE.Viewer_string_Title}); ADBE.Viewer_Value_Asked = true; } if (app.viewerVersion < ADBE.Viewer_Need_Version && !ADBE.Viewer_Value_Asked) { if(bShowReader==true) { var alertMessage = ADBE.Viewer_RMA_string_Reader; if(ADBE.Viewer_Need_Version==9) alertMessage = ADBE.Viewer_RMA_string_Reader_9_OrLater; if (app.alert(alertMessage, 1, 1) == 1) app.launchURL(ADBE.Viewer_Value_New_Version_URL, true); } else { //bShowReader will never be false A9 onwards, hence there is no question of Acrobat.com based reviews where bShowReader == false if (app.alert(ADBE.Viewer_RMA_string_Viewer, 1, 1) == 1) app.launchURL(ADBE.Viewer_Value_New_Version_URL, true); } ADBE.Viewer_Value_Asked = true; } } }, { cLanguage: app.language, cTitle: AnnotsString.IDS_SORT_WARNING_TITLE, // XXX cReader: AnnotsString.IDS_VERERR_SR_RE, // Reader Enabled Review cReaderENU: AnnotsString.IDS_VERERR_SR_RE_ENU, // Reader Enabled Review English string cViewerOld: AnnotsString.IDS_VERERR_SR_OLD, // Pre-7 Acrobat cViewerOldENU: AnnotsString.IDS_VERERR_SR_OLD_ENU, // Pre-7 Acrobat English string cViewer: AnnotsString.IDS_VERERR_SR_NO_RE, // Need reader Update cViewerENU: AnnotsString.IDS_VERERR_SR_NO_RE_ENU, // Need reader Update English string cReader9OrLater: AnnotsString.IDS_VERERR_SR_DC_RE, // Need Acrobat/Reader 9 or later cReader9OrLaterENU: AnnotsString.IDS_VERERR_SR_DC_RE_ENU, // Need Acrobat/Reader 9 or later English string bShowReader: bUB, bUseDocumentCenter: data.UseDocumentCenter }) + "()"; //console.println("Adding document level JavaScripts"); // Add the document level JavaScript app.beginPriv(); data.doc.addScript("com.adobe.acrobat.SharedReview.VersionCheck", cVersionScript); data.doc.addScript("com.adobe.acrobat.SharedReview.Register", cScript); app.endPriv(); // Take ownership of any comments (if necessary) app.beginPriv(); data.doc.Collab.takeOwnershipOfComments(); app.endPriv(); //Save the review file remotely if ((data.distributionMethod == "UPLOAD")&&(!data.UseDocumentCenter)) { var savePropsRemote = { bPromptToOverwrite: false, }; savePropsRemote.cFS = data.distributionFS; app.beginPriv(); // if the distribution FS is CHTTP then just use the distribution // URL as is; otherwise convert the path to a DI path. if (savePropsRemote.cFS == "CHTTP") { if (data.server.Settings.bUseWindowsIntegratedAuthentication) savePropsRemote.cFS = "CSSO"; savePropsRemote.cPath = data.distributionURL; } else { var url = encodeURIComponent(ANPlatformPathToURL(data.distributionURL)); savePropsRemote.cPath = Collab.uriToDIPath(url); // In case of SMB, make the Shared Review file read only. if (savePropsRemote.cFS == fileSystem['default']) savePropsRemote.bSaveAsReadOnly = true; } app.endPriv(); if(bUB) savePropsRemote.cUsageRights = submitFormUsageRights.RMA; //console.println("Uploading document - params:"); //for (var prop in savePropsRemote) console.println(prop + " => " + savePropsRemote[prop]); app.beginPriv(); data.doc.saveAs(savePropsRemote); app.endPriv(); } //Save the review file locally { // Save the document with UB rights if necessary var savePropsLocal = { bPromptToOverwrite: false, }; savePropsLocal.bSaveAsReadOnly = false; switch(data.distributionMethod) { case "MANUAL": case "EMAIL": case "UPLOAD": savePropsLocal.cPath = data.cDocumentPath; break; } if(bUB) savePropsLocal.cUsageRights = submitFormUsageRights.RMA; //console.println("Saving document - params:"); //DebugAlert("Saving document - params2:"); //for (var prop in savePropsLocal) console.println(prop + " => " + savePropsLocal[prop]); app.beginPriv(); data.doc.saveAs(savePropsLocal); app.endPriv(); } // Update the store data.doc.Collab.sync(eaddr, true, false); data.saved = true; cxt.handleSuccess(); } catch(e) { console.println(e.stack); //app.alert(e.stack); //app.alert(e); app.beginPriv(); Collab.unregisterReview(data.doc); app.endPriv(); cxt.handleFailure(); } }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_SUCCESS); if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "ADC_Upload_Complete"; addStringToPayloadParams.val = "True"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } }, onFailure: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_ERROR); if(data.server.URL == "urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com") { var addStringToPayloadParams = {}; addStringToPayloadParams.name = "ADC_Upload_Complete"; addStringToPayloadParams.val = "False"; app.beginPriv(); Collab.AVUMAddStringToPayloadWrapper(addStringToPayloadParams); app.endPriv(); } }, }, oSendEmailTasks: { // Make the document send the invitation runTask: function(cxt, taskData) { taskData.cxt = cxt; var data = cxt.data; if(data.distributionMethod != "MANUAL") { if(data.UseDocumentCenter) cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_START_DC); else if(data.action == "ChangeDeadline") cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_START); else cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_START); } DebugAlert("in send email tasks"); try { var sentEmail = false; DebugAlert("data.distributionMethod " + data.distributionMethod); if(data.reviewType == "SharedReviewEmail") { var props = { bUI: false, cTo: data.reqR.join(";"), cCc: data.optR.join(";"), cSubject: data.subj, cMsg: data.msg, cAttachment: data.doc.path, }; DebugAlert("sadf" + props.cTo + props.cCc); if(data.UseDocumentCenter) { var copyMe = true; var limitedAccess = false; app.beginPriv(); copyMe = Collab.copyMe; app.endPriv(); var toList = props.cTo + ";"+ props.cCc; if (copyMe) toList = toList + ";" + data.user; limitedAccess = (Math.abs(data.accessLevel) == 2); app.beginPriv(); var reviewInfo = Collab.getReviewInfo(data.reviewID); app.endPriv(); app.beginPriv(); data.swConn.shareFile(data.docCtrURL, reviewInfo.cReviewURL, toList, limitedAccess, props.cSubject, props.cMsg, (data.action == "ChangeDeadline")); app.endPriv(); app.beginPriv(); data.swConn.disconnect(); app.endPriv(); } else if(data.action == "ChangeDeadline") { DebugAlert("data.sendAttachment"+data.sendAttachment); if(data.distributionMethod == "EMAIL") { app.beginPriv(); sendResult = app.mailMsgWithAttachment(props); app.endPriv(); sentEmail = true; } else //basically we are not sending the mail in the MANUAL case if(data.distributionMethod == "UPLOAD") { app.beginPriv(); sendResult = app.mailMsg(props); app.endPriv(); sentEmail = true; } } else // addreviewers case if(data.action == "AddReviewers") { if(data.distributionMethod == "EMAIL") { app.beginPriv(); sendResult = app.mailMsgWithAttachment(props); app.endPriv(); sentEmail = true; } else if(data.distributionMethod == "UPLOAD") { app.beginPriv(); sendResult = app.mailMsg(props); app.endPriv(); sentEmail = true; } } } else { switch(data.distributionMethod) { case "EMAIL": { var to = escape(data.reqR.join(";")); var cc = escape(data.optR.join(";")); var subj = escape(data.subj); var msg = escape(data.msg); var url = "mailto:" + to + "?subject=" + subj + "&body=" + msg + "&ui=false"; if(cc != undefined) url += "&cc=" + cc; DebugAlert("url : " + url); // Include the message in the email /* TODO: dikumar: remove this code segment later, as submitForm call does not work with ubiquitization "on" var params = { cURL: url, bPDF: true, aFields: [], bCheckReqdFields: false, }; app.beginPriv(); sendResult = data.doc.submitForm(params); app.endPriv(); */ var props = { bUI: false, cTo: data.reqR.join(";"), cCc: data.optR.join(";"), cSubject: data.subj, cMsg: data.msg, cAttachment: data.doc.path, }; app.beginPriv(); sendResult = app.mailMsgWithAttachment(props); app.endPriv(); sentEmail = true; } break; case "UPLOAD": { var props = { bUI: false, cTo: data.reqR.join(";"), cCc: data.optR.join(";"), cSubject: data.subj, cMsg: data.msg, }; app.beginPriv(); sendResult = app.mailMsg(props); app.endPriv(); sentEmail = true; } break; case "MANUAL": // Up to the user to do something with it. break; } } if(sentEmail) { var msg; if(data.action == "ChangeDeadline") msg = AnnotsString.IDS_SEND_FOR_SHARED_REVIEW_CHANGE_DEADLINE_CONFIRM_MSG; else msg = AnnotsString.IDS_SEND_FOR_SHARED_REVIEW_CONFIRM_MSG; var title = AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE; app.beginPriv(); Collab.alertWithHelp(msg, "", title, "Annots:SharedReviewConfirm"); app.endPriv(); // if(data.doc.hidden) // { // data.doc.closeDoc(true); // } } cxt.handleSuccess(); } catch(e) { console.println(e.stack); app.beginPriv(); Collab.unregisterReview(data.doc); app.endPriv(); app.beginPriv(); if (e.message == "User canceled operation.") app.alert(AnnotsString.IDS_SHARED_REVIEW_SEND_MAIL_ERROR); else app.alert({cMsg: e["message"]}); app.endPriv(); cxt.handleFailure(); } }, onSuccess: function(cxt, taskData) { if(data.action == "ChangeDeadline" ) cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_SUCCESS); else cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_SUCCESS); }, onFailure: function(cxt, taskData) { if(data.action == "ChangeDeadline" ) cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_ERROR); else cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_ERROR); }, }, oDocCenterTasks_createWorkspace: { // Create the review Directory runTask: function(cxt, taskData) { DebugAlert("running oDocCenterTasks_createWorkspace"); taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY + "Adobe online services"); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); var copyMe = true; app.beginPriv(); copyMe = Collab.copyMe; app.endPriv(); var invitees = cxt.data.reqR.join(";") + ";" + cxt.data.optR.join(";"); if (copyMe) invitees = invitees + ";" + cxt.data.user; var props = { driver: driver.driverURL, invitees: invitees, //cc: cxt.data.optR.join(";") , subject: cxt.data.subj, body: cxt.data.msg, localPath: cxt.data.cDocumentPath, setACL: (Math.abs(data.accessLevel) == 2)? "true": "false", skipUpload: "true", }; var swConn = cxt.data.swConn; if (swConn) { cxt.data.dcWorkspaceURL = ""; //DebugAlert("swConn is non-null"); //First call to initiateWorkflow will create a comment repository which is returned //as the workspace URL app.beginPriv(); var initResult = swConn.initiateWorkflow(props); app.endPriv(); result = initResult["result"]; ANDumpObj(initResult); if (result == 0) { DebugPrintln("Comment repository successfully created on the document center."); DebugPrintln("workspaceURL: " + initResult["props"]["workspaceURL"]); DebugAlert("workspaceURL: " + initResult["props"]["workspaceURL"]); cxt.data.dcWorkspaceURL = initResult["props"]["workspaceURL"]; // ensure the server URL ends with a '/' if (cxt.data.dcWorkspaceURL.substr(-1) != "/") cxt.data.dcWorkspaceURL += "/"; cxt.handleSuccess(); } else { DebugAlert("Could not connect to document center: comment repository not created."); DebugAlert("*** Workflow initiation failed: " + initResult["errorMessage"]); DebugPrintln("*** Workflow initiation failed: " + initResult["errorMessage"]); cxt.handleFailure(); } } else { DebugPrintln("swConn is null"); DebugAlert("Need to login again"); } }, onSuccess: function(cxt, taskData) {}, onFailure: function(cxt, taskData) {}, }, oDocCenterTasks_complete: { // Create the review Directory runTask: function(cxt, taskData) { DebugAlert("running oDocCenterTasks_complete"); taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHAREFILE_SING_PROGRESS); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); var copyMe = true; app.beginPriv(); copyMe = Collab.copyMe; app.endPriv(); var invitees = cxt.data.reqR.join(";") + ";" + cxt.data.optR.join(";"); if (copyMe) invitees = invitees + ";" + cxt.data.user; var uploadName = cxt.data.cDocumentPath.substring(cxt.data.cDocumentPath.lastIndexOf('/') + 1, cxt.data.cDocumentPath.length); var fileProps = { localPath : cxt.data.cDocumentPath, uploadName : uploadName, uploadResult : -1, } ANDumpObj(fileProps); cxt.data.filesToUpload = []; cxt.data.filesToUpload[cxt.data.filesToUpload.length] = fileProps; var props = { driver: driver.driverURL, invitees: invitees, //cc: cxt.data.optR.join(";") , subject: cxt.data.subj, body: cxt.data.msg, //localPath: cxt.data.cDocumentPath, filesToUpload: cxt.data.filesToUpload, setACL: (Math.abs(data.accessLevel) == 2)? "true": "false", skipUpload: "false", }; var swConn = cxt.data.swConn; try { if (swConn) { app.beginPriv(); var initResult = swConn.initiateWorkflow(props); app.endPriv(); result = initResult["result"]; ANDumpObj(initResult); if (result == 0) { cxt.handleSuccess(); DebugPrintln("Workflow initiation succeeded"); } else { DebugThrow("Workflow initiation failed") } app.beginPriv(); swConn.disconnect(); app.endPriv(); } else { DebugPrintln("swConn is null"); DebugAlert("Need to login again"); } } catch(e) { console.println(e.stack); app.beginPriv(); Collab.unregisterReview(data.doc); app.endPriv(); cxt.handleFailure(); } }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_SUCCESS); }, onFailure: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_ERROR); }, }, getAsciiSafeDocName: function(docName) { var result = docName; var escaped = escape(docName); if (escaped != docName) { result = escaped.replace(/\%u/g, ''); result = result.replace(/\%([0-9A-F][0-9A-F])/g, "00$1"); } return result; }, updateProgress: function() { //app.alert("inside updateProgress:"+this.oProgressInfo.cTaskStatus); this.setTaskStatus(this.oProgressInfo.cTaskStatus); this.setTaskProgress(this.oProgressInfo.nPercentComplete); }, initialize: function(dialog) { var data = this.data; var id = this.getAsciiSafeDocName(data.cDocumentName) + "__" + data.reviewID; if (this.oProgressInfo) this.oProgressInfo.setHandler(this); data.complete = { driver: (data.UseDocumentCenter) ? data.dcDriver : data.drivers[data.server.URL], to: data.reqR.join(";"), cc: data.optR.join(";"), initDate: new Date(), oDialog: dialog, id: id, } data.shouldRetry = false; this.oDialog = dialog; app.beginPriv(); if(data.reviewType != "SharedReviewEmail") data.complete.sourceURL = data.complete.driver.getInitiatorSource(id, data.server.Settings); if (data.reviewType == "SharedReview") this.oTaskSet = this.oDriver.getWorkspaceCreator(id, data.server.Settings); else this.oTaskSet = { aTasks : {length: 0}}; app.endPriv(); var toLoad = { desc: "" }; var toEnable = { task: data.bWorkspaceSetup, ok: false, cancel: false }; DebugPrintln("Current task set is:"); ANDumpObj(this.oTaskSet); //DebugAlert("this.nCurrentTask: "+this.nCurrentTask); DebugAlert("inti email task " + data.reviewType + " + " + data.distributionMethod); if(data.reviewType == "SharedReviewEmail") { this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oSendEmailTasks); } else if (!data.UseDocumentCenter) { this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oSaveFileTasks); if (!automation) { switch (data.distributionMethod) { case "EMAIL": case "UPLOAD": case "MANUAL": this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oSendEmailTasks); break; } } } else { DebugPrintln("creating workspace for shared review"); this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oDocCenterTasks_createWorkspace); this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oSaveFileTasks); this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oDocCenterTasks_complete); } if(data.reviewType == "SharedReview") { if((data.action != "ChangeDeadline") && (data.action != "AddReviewers")) dialog.visible({ok: false, cancel: false}); } dialog.load(toLoad); dialog.load({ok: AnnotsString.IDS_OK}); dialog.enable(toEnable); this.data.state = "RUNNING"; // Run the task set //this.runCurrentTask(); }, setTaskStatus: function(status) { var msg = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE.replace(/{cStatus}/, status); //DebugAlert("status " + msg); this.oDialog.load({ desc: msg }); }, setTaskProgress: function(nPercent) { var nSegLen = 100 / this.getNumTasks(); var nComplete = (this.nCurrentTask + (nPercent/100)); //DebugAlert("setTaskProgress " + (nComplete * nSegLen)); this.oDialog.load({ prog: (nComplete * nSegLen) }); }, getCurrentTask: function() { //DebugAlert("inside getCurrentTask"); if(0 <= this.nCurrentTask && this.nCurrentTask < this.oTaskSet.aTasks.length) return this.oTaskSet.aTasks[this.nCurrentTask]; else if (this.oTaskSet.aTasks.length <= this.nCurrentTask) { var nIdx = this.nCurrentTask - this.oTaskSet.aTasks.length; return this.aCompleteTasks[nIdx]; } }, getNumTasks: function() { //DebugAlert("getNumTasks = " + this.oTaskSet.aTasks.length + this.aCompleteTasks.length); return (this.oTaskSet.aTasks.length + this.aCompleteTasks.length); }, runCurrentTask: function() { try { //DebugAlert("inside runCurrentTask"); this.setTaskProgress(0); this.getCurrentTask().runTask(this, this.oTaskSet); if(this.data.state == "RUNNING") this.setTaskProgress(100); } catch(e) { //console.println(e.stack); } }, handleSuccess: function() { this.getCurrentTask().onSuccess(this, this.oTaskSet); this.nCurrentTask++; //DebugAlert("in handleSuccess, this.nCurrentTask=" + this.nCurrentTask); if(this.nCurrentTask >= this.getNumTasks()) { // Complete this.data.bWorkspaceSetup = true; if(data.action == "ChangeDeadline") { this.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_DEADLINE_SUCCESS); this.oDialog.enable({ ok: true }); } else if(data.action == "AddReviewers") { this.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_ADD_REVIEWER_SUCCESS); this.oDialog.enable({ ok: true }); } //else // this.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_COMPLETE_SUCCESS); this.commit(this.oDialog); } else this.runCurrentTask(); }, handleFailure: function(e) { try { //DebugAlert("in handleFailure"); if(e != undefined && e.text != undefined) { var s = AnnotsString.IDS_SHARED_REVIEW_COMPLETE_ERROR.replace(/%error%/, e.text); //DebugAlert("ssssssssssss ; "+s); this.setTaskStatus(s); } this.getCurrentTask().onFailure(this, this.oTaskSet); this.data.state = "RETRY"; this.oDialog.load({ok: AnnotsString.IDS_SHARED_REVIEW_COMPLETE_RETRY}); this.oDialog.visible({ok: true, cancel: true}); this.oDialog.enable({ok: true, cancel: true}); this.nCurrentTask = 0; this.setTaskProgress(0); } catch(e) { //console.println(e.stack); } }, commit: function(dialog) { switch(this.data.state) { case "RETRY": this.nCurrentTask = 0; this.data.state = "RUNNING"; this.data.shouldRetry = true; break; case "RUNNING": this.data.shouldRetry = false; if(data.reviewType == "SharedReview") { if((data.action != "ChangeDeadline") && (data.action != "AddReviewers")) dialog.end("ok"); } break; } }, description: { name: title, width: 450, elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "progress_bar", width: 400, height: 12, item_id: "prog", }, ] }, { type: "static_text", alignment: "align_fill", item_id: "desc", wrap_name: true, name: maxStr, width: 450, }, { type: "ok_cancel", ok_name: AnnotsString.IDS_SHARED_REVIEW_COMPLETE_RETRY, } ] } ] } }; // Bug #1352232 - Reopen hidden document to make it visible // This MUST be done when we're not modal. if(data.doc.hidden) { data.doc.closeDoc(true); app.beginPriv(); data.doc = app.openDoc({cFS: data.docFS, cPath: data.docPath}); app.endPriv(); } data.shouldRetry = true; while(data.shouldRetry) { app.beginPriv(); app.execDialog(ANTrustPropagateAll(dialog)); app.endPriv(); } if (progressInfo) progressInfo.setHandler(); progressInfo = null; /*if(data.distributionMethod == "UPLOAD") { var url = util.crackURL(data.distributionURL); switch(url.cScheme) { case "http": case "https": app.beginPriv(); data.doc.closeDoc(true, true); app.endPriv(); app.launchURL("acrobat:Review?open=" + data.reviewID ); break; } }*/ } CBFormDistributionEmailComplete = function(data) { DebugAlert("begin CBFormDistributionEmailComplete()"); DebugAlert("1"); app.beginPriv(); var initiator = identity.email; app.endPriv(); var localPath = ""; var initiationURL = ""; var driver = ""; var dataSetPath = ""; var savePath = "" DebugAlert("3" + initiator); var distributionMethod; switch(data.distributionMethod) { case "EMAIL": distributionMethod = 1; break; case "UPLOAD": distributionMethod = 2; break; case "MANUAL": distributionMethod = 3; break; } var invitees = ""; var cc = ""; var subject = ""; var body = ""; var sentDate = ""; var IWStatus = 1; DebugAlert(data.reqR); invitees = data.reqR.join(";"); cc = data.optR.join(";"); subject = data.subj; body = data.msg; DebugAlert(invitees); sentDate = new Date(); DebugAlert("5"); var params = { initiator: initiator, invitees : invitees, cc: cc, subject: subject, body: body, sentDate: sentDate, driver: driver, initiationURL: initiationURL, localPath: localPath, savePath: savePath, dataSetPath: dataSetPath, distributionMethod: distributionMethod, IWStatus: IWStatus, }; DebugAlert("end form distribution complete"); return params; } CBFormDistributionComplete = function(data) { DebugAlert("begin CBFormDistributionComplete()"); DebugAlert("1"); app.beginPriv(); var initiator = identity.email; var originalPath = data.docPath; DebugAlert(data.docPath); DebugAlert(originalPath); DebugAlert("2"); var initiationURL; var driver; var dataSetPath = data.cDataSetPath; var savePath = data.cDocumentPath;//data.distributionFS; app.endPriv(); DebugAlert(data.cDocumentPath); DebugAlert(savePath); DebugAlert("3"); var distributionMethod; switch(data.distributionMethod) { case "EMAIL": distributionMethod = 1; break; case "UPLOAD": distributionMethod = 2; break; case "MANUAL": distributionMethod = 3; break; } /*DebugAlert("servertype : " + data.serverType); DebugAlert("server : " + data.server); DebugAlert("server.URL : " + data.server.URL); DebugAlert("serverURL : " + data.serverURL); DebugAlert("distributionURL : " + data.distributionURL); DebugAlert("distributionMethod : " + data.distributionMethod);*/ driver = data.server.URL; driver = driver.replace(/SharedReview/, "Forms"); if(data.UseDocumentCenter == true) { app.beginPriv(); initiationURL = Collab.docCenterURL; app.endPriv(); } else initiationURL = data.server.Settings.cSetting; var invitees = ""; var cc = ""; var subject = ""; var body = ""; var sentDate = ""; var IWStatus = 1; if(data.placeSubmitButton == true) { IWStatus = 2; } else { invitees = data.reqR.join(";"); cc = data.optR.join(";"); subject = data.subj; body = data.msg; sentDate = new Date(); } var swConnect = null; var sessionID = null; var secret = null; var accessLevel = null; var copyTo= null; if(data.UseDocumentCenter == true) { swConnect = data.swConn; app.beginPriv(); var sessionInfo = swConnect.getSessionInfo(); app.endPriv(); sessionID = sessionInfo.sessionID; secret = sessionInfo.secret; accessLevel = Math.abs(data.accessLevel); var copyMe = true; app.beginPriv(); copyMe = Collab.copyMe; app.endPriv(); if (copyMe) copyTo= data.user; } var allowAnonymous = !data.allowAnonymous; DebugAlert("5" + invitees); var params = { initiator: initiator, invitees : invitees, cc: cc, subject: subject, body: body, sentDate: sentDate, driver: driver, initiationURL: initiationURL, originalPath: originalPath, savePath: savePath, dataSetPath: dataSetPath, distributionMethod: distributionMethod, allowAnonymous: allowAnonymous, sessionID: sessionID, secret: secret, accessLevel: accessLevel, IWStatus: IWStatus, copyTo: copyTo, }; DebugAlert("end form distribution complete"); return params; } CBSharedReviewSelectServerTypeDescription = function(wizData) { var serverDesc = []; var description = { serverControls: {}, selected: null, hasUserName: false, }; var maxDescStr = ""; for(var i in wizData.servers) { // Max of 10 Servers if(serverDesc.length >= 10) break; var server = wizData.servers[i]; var id = "svr" + i; description.serverControls[id] = server; serverDesc[serverDesc.length] = { type: "radio", item_id: id, group_id: "srvr", name: server.initiatorName, }; var CBSharedReviewMakeSelectFunction = function(instance, key) { instance[key] = function(dialog) { this.didSelect(dialog, key); } } CBSharedReviewMakeSelectFunction(description, id); if(server.initiatorDescription.length > maxDescStr.length) maxDescStr = server.initiatorDescription; } description.idle = function(dialog) { var name = dialog.store()["name"]; var next = name != undefined && name.length > 0 && name.match(/^\s+$/) == null && this.selected != null; this.hasUserName = (this.selected.initiatorDefaultName != name); dialog.enable({next: next}); }; description.initialize = function(dialog) { var toLoad = { tip1: "C_Info_Xl_N.png" }; var selection = "svr0"; if(typeof this.data.toAdd != "undefined") { if(typeof this.data.toAdd.name != "undefined") toLoad.name = this.data.toAdd.name; if(typeof this.data.toAdd.type != "undefined") { selection = this.data.toAdd.type; this.hasUserName = true; } } toLoad[selection] = true; dialog.load(toLoad); this.didSelect(dialog, selection); }; description.commit = function(dialog, next) { if(!next) return; app.beginPriv(); var servers = Collab.reviewServers; app.endPriv(); server_name = dialog.store()["name"]; if(server_name.length > 60) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SHARED_REVIEW_SERVER_NAME_TOO_LONG}); app.endPriv(); DebugThrow ("Server Name too long"); } for(var i in servers) { var server = servers[i]; if(server_name == server.UI) { var msg = AnnotsString.IDS_SHARED_REVIEW_SERVER_NAME_NOT_UNIQUE.replace(/\{cServerName\}/, server_name) app.beginPriv(); app.alert({cMsg: msg}); app.endPriv(); DebugThrow ("Server Name not Unique") } } if(this.selected != null) { this.data.toAdd = {}; this.data.toAdd.server = this.selected; this.data.toAdd.name = dialog.store()["name"]; this.data.toAdd.type = this.selectedID; } }; description.didSelect = function(dialog, id) { this.selectedID = id; this.selected = this.serverControls[id]; var toLoad = {}; if(!this.hasUserName) toLoad.name = this.selected.initiatorDefaultName; toLoad.desc = this.selected.initiatorDescription; dialog.load(toLoad); }; description.description = [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_TEXT, wrap_name: true, width: Collab.wizardWidth, }, { type: "edit_text", item_id: "name", alignment: "align_fill" }, { type: "static_text", bold: true, font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_TITLE, }, { type: "view", align: "align_top", elements: serverDesc }, { type: "cluster", name: AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_DESCRIPTION, align_children: "align_row", elements: [ { type: "static_text", align: "align_top", item_id: "desc", wrap_name: true, name: maxDescStr, width: Collab.wizardWidth, } ] }, ]; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } CBSharedReviewConfigureServerStepDescription = function(dataWiz) { app.beginPriv(); var driver = dataWiz.toAdd.server; var desc = ANTrustPropagateAll(driver.getInitiatorConfig()); dataWiz.toAdd.config = desc.getSetting(); return desc; app.endPriv(); } getFolderNameRemovedPath = function (cSourceURL) { var pos = cSourceURL.length - 2; // start from end but escape one slash var searchPos; for (searchPos = pos ; searchPos > 1; searchPos--) if (cSourceURL.charAt(searchPos) == '/') break; return cSourceURL.substr(0,searchPos); } CBSharedReviewStatusDialog = app.trustedFunction(function(cReviewID, doc, cDriverURI, bReturning) { try { var title = bReturning ? AnnotsString.IDS_SHARED_REVIEW_STATUS_RETURNING_TITLE : AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIAL_TITLE; var width = 600; app.beginPriv(); var reviewInfo = Collab.getReviewInfo(cReviewID); app.endPriv(); var oServerIcon = Collab.getIcon("AX_Server_Lg_N.png"); var oSharedReviewIcon = Collab.getIcon("A_SendForSharedReview_Xl_N.png"); var url = util.crackURL(reviewInfo.cReviewURL); app.beginPriv(); var bIsAcrobatDotCom = Collab.isDocCenterURL(reviewInfo.cReviewURL); if(bIsAcrobatDotCom) url.cHost = AnnotsString.IDS_TRACKER_ACROBAT_DOT_COM; else url.cHost = Collab.getFullyQualifiedHostname(url.cHost); app.endPriv(); var result = { bDoPublish: !bReturning, bDoNotShowWelcomeDialog: false }; //Try decoding it with decodeURI first. If that fails, try it with unescape. If that too fails, simply show the normal documentFileName var decodedFileName = null;; try { decodedFileName = decodeURI(doc.documentFileName); } catch(e) { decodedFileName = unescape(doc.documentFileName); } if(!decodedFileName || (typeof decodedFileName != "string")) decodedFileName = doc.documentFileName; var description = { reviewInfo: reviewInfo, result: result, documentFileName: decodedFileName, bAcrobatDotCom: bIsAcrobatDotCom, oDialog: {}, bUpdatedOnce: false, initialize: function(dialog) { this.reviewInfo.setHandler(this); var props = { sico: oServerIcon, rico: oSharedReviewIcon, publ: this.result.bDoPublish }; dialog.load(props); this.setIdentityInfo(dialog); this.setReviewersInfo(dialog); this.oDialog = dialog; dialog.makeDefault("ok"); dialog.focus("ok"); }, commit: function(dialog) { this.result.bDoPublish = dialog.store()["publ"]; this.result.bDoNotShowWelcomeDialog = dialog.store()["srwe"]; }, didUpdateReview: function() { this.bUpdatedOnce = true; this.setReviewersInfo(this.oDialog); }, haveUpdatedOnce: function() { return this.bUpdatedOnce; }, setIdentityInfo: function(dialog) { app.beginPriv(); if(bIsAcrobatDotCom == true) { var params = { name: shareIdentity.FullName, titl: shareIdentity.Title, mail: shareIdentity.Email }; //If title is absent, show email first if(params.titl == "") { params.titl = params.mail; params.mail = ""; } } else { var params = { name: identity.name, titl: identity.title, mail: identity.email }; if(params.name == "") params.name = identity.loginName; //If title is absent, show email first if(params.titl == "") { params.titl = params.mail; params.mail = ""; } } app.endPriv(); dialog.load(params); }, setReviewersInfo: function(dialog) { var reviewInfo = this.reviewInfo; var oReviewers = reviewInfo.oReviewers; var nActiveReviewers = 0; var params = { "list": { aColumns: [ { Name: "Email", UI: AnnotsString.IDS_SHARED_REVIEW_STATUS_EMAIL, width: 0.25 }, { Name: "Name", UI: AnnotsString.IDS_SHARED_REVIEW_STATUS_NAME, width: 0.25 }, { Name: "Title", UI: AnnotsString.IDS_SHARED_REVIEW_STATUS_TITLE, width: 0.15 }, { Name: "Comments", UI: AnnotsString.IDS_SHARED_REVIEW_STATUS_COMMENTS, width: 0.23, Justification: 1 }, { Name: "Status", UI: AnnotsString.IDS_SHARED_REVIEW_STATUS_STATUS, width: 0.12 }, ], aRows: [] }, }; var oStatus = { Initiator: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_INITIATOR, Required: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_REQUIRED, Optional: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_OPTIONAL, Uninvited: AnnotsString.IDS_TRACKER_REVIEWER_TYPE_ADDED, }; for(var i in oReviewers) { if(i != undefined && i != "") { var cName = oReviewers[i].cName; if(cName == undefined) cName = ""; var cTitle = oReviewers[i].cTitle; if(cTitle == undefined) cTitle = ""; var nComments = oReviewers[i].nComments; var nNewComments = oReviewers[i].nNewComments; if(nComments != undefined) { nActiveReviewers++; } else { nComments = 0; nNewComments = 0; } var comments; comments = AnnotsString.IDS_SHARED_REVIEW_STATUS_N_COMMENTS; comments = comments.replace(/%totalComments%/, " " + nComments); comments = comments.replace(/%newComments%/, nNewComments + " "); if(!oReviewers[i].bHasParticipated) comments = ""; var row = { Email: i, Name: cName, Title: cTitle, Comments: "" + comments, Status: oStatus[oReviewers[i].cStatus], }; params.list.aRows[params.list.aRows.length] = row; } } if(reviewInfo.cState == "Ended") { var heading = AnnotsString.IDS_SHARED_REVIEW_STATUS_ENDED_HEADING; heading = heading.replace(/%filename%/, this.documentFileName); params["rtxt"] = heading; params["rico"] = Collab.getIcon("A_ReviewEndedReviewFile_45x45_N.png"); } else if(reviewInfo.cState == "Corrupted") { var heading = AnnotsString.IDS_SHARED_REVIEW_STATUS_CORRUPTED_HEADING; heading = heading.replace(/%filename%/, this.documentFileName); params["rtxt"] = heading; params["rico"] = Collab.getIcon("A_ReviewCorruptedReviewFile_45x45_N.png"); } else { var heading = result.bDoPublish ? AnnotsString.IDS_SHARED_REVIEW_STATUS_INITIAL_HEADING : AnnotsString.IDS_SHARED_REVIEW_STATUS_RETURNING_HEADING; heading = heading.replace(/%filename%/, this.documentFileName); params["rtxt"] = heading; params["rico"] = Collab.getIcon("A_SendForSharedReview_Xl_N.png"); } var nDraftComments = reviewInfo.nDraftComments; if(reviewInfo.cState == "Ended") { var s = AnnotsString.IDS_SHARED_REVIEW_STATUS_MANY_DRAFT_COMMENTS_REVIEW_ENDED; if(nDraftComments == 0) s = AnnotsString.IDS_SHARED_REVIEW_STATUS_ZERO_DRAFT_COMMENTS_REVIEW_ENDED; else if(nDraftComments == 1) s = AnnotsString.IDS_SHARED_REVIEW_STATUS_ONE_DRAFT_COMMENTS_REVIEW_ENDED; params["sDft"] = s.replace(/%num%/, "" + nDraftComments); } else { var s = AnnotsString.IDS_SHARED_REVIEW_STATUS_MANY_DRAFT_COMMENTS; if(nDraftComments == 0) s = ""; else if(nDraftComments == 1) s = AnnotsString.IDS_SHARED_REVIEW_STATUS_ONE_DRAFT_COMMENTS; params["sDft"] = s.replace(/%num%/, "" + nDraftComments); } params["sDed"] = reviewInfo.cDeadlineWelcomeString; var s = AnnotsString.IDS_SHARED_REVIEW_STATUS_COMMENTS_WELCOME; s = s.replace(/%newComments%/, "" + reviewInfo.nNewComments); params["sCom"] = s.replace(/%totalComments%/, "" + reviewInfo.nComments); var s = AnnotsString.IDS_SHARED_REVIEW_STATUS_REVIEWERS_WELCOME; s = s.replace(/%activeNum%/, "" + nActiveReviewers); params["sRev"] = s.replace(/%num%/, "" + reviewInfo.nNewReviewers); //Shift information up in case draft comments is empty if(params["sDft"] == "") { params["sDft"] = params["sDed"]; params["sDed"] = params["sCom"]; params["sCom"] = params["sRev"]; params["sRev"] = ""; } dialog.load(params); }, description: { name: title, width: width, elements: [ { type: "view", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "rico", width: oSharedReviewIcon.width, height:oSharedReviewIcon.height }, { type: "static_text", item_id: "rtxt", font: "title", truncate: "truncate_end", width : 4 * width /5, height: 25, }, ] }, { type: "view", align_children: "align_row", elements: [ { type: "cluster", dheight: 140, width: 2* width /3, elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_STATUS_REVIEW_STATUS, font: "heading", height: 20, }, { type: "static_text", item_id: "sDft", width: 2* width /3 }, { type: "static_text", item_id: "sDed", width: 2* width /3 }, { type: "static_text", item_id: "sCom", width: 2* width /3 }, { type: "static_text", item_id: "sRev", width: 2* width /3 }, ] }, { type: "cluster", alignment: "align_top", width: width / 3, dheight: 140, elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_STATUS_REVIEWER_PROFILE, font: "heading", height: 20, }, { type: "static_text", item_id: "name", truncate: "truncate_end", width: width / 3, }, { type: "static_text", item_id: "titl", truncate: "truncate_end", width: width / 3, }, { type: "static_text", item_id: "mail", truncate: "truncate_end", width: width / 3, }, ] }, ] }, { type: "view", alignment: "align_fill", align_children: "align_fill", width: width, elements: [ { type: "mclv", item_id: "list", alignment: "align_fill", height: 170, }, ] }, { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "sico", width: oServerIcon.width, height:oServerIcon.height }, { type: "static_text", alignment: "align_left", font: "dialog", bold: true, name: AnnotsString.IDS_SHARED_REVIEW_STATUS_REVIEW_SERVER }, { type: "static_text", alignment: "align_left", name: url.cHost }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "check_box", item_id: "srwe", name: AnnotsString.IDS_DONT_SHOW_AGAIN, }, { type: "ok", }, ] }, ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.execDialog(description); app.endPriv(); //Set the handler to NULL again because welcome screen has got dismissed now reviewInfo.setHandler(); return description.result; } catch(e) { //console.println(e); //console.println(e.stack); } }); ANIdentityDialog = app.trustedFunction(function(bCanCancel) { var labelWidth = 300; var idFields = [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_SETUP_TEXT, alignment: "align_fill", bold: true, font: "dialog", // wrap_name: true, }, { type: "gap", height: 10, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_EMAIL, alignment: "align_fill", font: "dialog", }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "mail" }, ]; if(!hasHanko()) { idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "name" }, ] ); } else { idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_LAST_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "lnme" }, { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_FIRST_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "fnme" }, ] ); } idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_JOB_TITLE }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "jobt" }, { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_COMPANY }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "cmpy" }, { type: "gap", width: 8, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_row", alignment: "align_center", elements: [ { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_PREF_TEXT, } ] }, { type: bCanCancel ? "ok_cancel" : "ok" }, ]); var description = { bResult: false, oDialog: null, bHasHanko: hasHanko(), initialize: function(dialog) { var props = {}; app.beginPriv(); props.fnme = identity.firstName; props.lnme = identity.lastName; props.name = identity.name; if(props.name == "") props.name = shareIdentity.FullName; props.mail = identity.email; if(props.mail == "") props.mail = shareIdentity.Email; props.cmpy = identity.corporation; if(props.cmpy == "") props.cmpy = shareIdentity.Corporation; props.jobt = identity.title; if(props.jobt == "") props.jobt = shareIdentity.Title; props.img1 = "C_Info_Xl_N.png"; app.endPriv(); dialog.makeDefault("name"); dialog.focus("name"); dialog.load(props); dialog.visible({ hide: false }); this.oDialog = dialog; }, isValid: function(dialog) { var props = dialog.store(); var bHasName = false; if(this.bHasHanko) { bHasName = props.fnme != "" && props.lnme != ""; } else bHasName = props.name != ""; return CBIsValidEmail(props.mail) && bHasName; // jobt and job desc are no more mandatory fields //&& props.jobt.length > 0 && props.jobt.match(/^\s+$/) == null; }, idle: function(dialog) { dialog.enable({ "ok": this.isValid(this.oDialog) }); }, commit: function(dialog) { var props = dialog.store(); app.beginPriv(); identity.email = props.mail; if(this.bHasHanko) { identity.firstName = props.fnme; identity.lastName = props.lnme; } else identity.name = props.name; if(props.cmpy != "") identity.corporation = props.cmpy; if(props.jobt != "") identity.title = props.jobt; app.endPriv(); this.bResult = this.isValid(dialog); }, ok: function(dialog) { dialog.end("ok"); }, description: { type:"view", width: 400, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, // align_children: "align_left", elements: [ { type: "view", align_children: "align_left", elements:idFields } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.execDialog(description); app.endPriv(); return description.bResult; }); function ANValidateIdentity () { var props = {}; app.beginPriv(); props.fnme = identity.firstName; props.lnme = identity.lastName; props.name = identity.name; props.mail = identity.email; props.cmpy = identity.corporation; props.jobt = identity.title; app.endPriv(); var bHasName = false; if(this.bHasHanko) { bHasName = props.fnme != "" && props.lnme != ""; } else bHasName = props.name != ""; return CBIsValidEmail(props.mail) && bHasName; //only email and name fields are mendatory //&& props.jobt.length > 0 && props.jobt.match(/^\s+$/) == null; } IWIdentityDialog = function() { var labelWidth = 300; var idFields = [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_SETUP_TEXT, alignment: "align_fill", bold: true, font: "dialog", // wrap_name: true, }, { type: "gap", height: 10, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_EMAIL, alignment: "align_fill", font: "dialog", }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "mail" }, ]; if(!hasHanko()) { idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "name" }, ] ); } else { idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_LAST_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "lnme" }, { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_FIRST_NAME }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "fnme" }, ] ); } idFields = idFields.concat( [ { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_JOB_TITLE }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "jobt" }, { type: "static_text", alignment: "align_fill", font: "dialog", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_COMPANY }, { type: "edit_text", alignment: "align_left", width: labelWidth, item_id: "cmpy" }, { type: "gap", width: 8, }, { type: "static_text", name: "", alignment: "align_fill", separator: 1, }, { type: "view", align_children: "align_row", alignment: "align_center", elements: [ { type: "image", item_id:"img1", width: 32, height: 32 }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDENTITY_PREF_TEXT, } ] } ]); var description = { bResult: false, oDialog: null, bHasHanko: hasHanko(), initialize: function(dialog) { var props = {}; app.beginPriv(); props.fnme = (this.data.firstName == undefined)?identity.firstName:this.data.firstName ; props.lnme = (this.data.lastName == undefined)?identity.lastName:this.data.lastName ; props.name = (this.data.name == undefined)?identity.name:this.data.name; if(props.name == "") props.name = shareIdentity.FullName; props.mail = (this.data.emailid == undefined)?identity.email:this.data.emailid; if(props.mail == "") props.mail = shareIdentity.Email; props.cmpy = (this.data.corporation == undefined)?identity.corporation:this.data.corporation; if(props.cmpy == "") props.cmpy = shareIdentity.Corporation; props.jobt = (this.data.title == undefined)?identity.title:this.data.title; if(props.jobt == "") props.jobt = shareIdentity.Title; props.img1 = "C_Info_Xl_N.png"; app.endPriv(); dialog.makeDefault("mail"); dialog.focus("mail"); dialog.visible({"help": false}); dialog.load(props); dialog.enable({next: false}); this.oDialog = dialog; }, isValid: function(dialog) { var props = dialog.store(); var bHasName = false; if(this.bHasHanko) { bHasName = props.fnme != "" && props.lnme != ""; } else bHasName = props.name != ""; return CBIsValidEmail(props.mail) && bHasName; // jobt and job desc are no more mandatory fields //&& props.jobt.length > 0 && props.jobt.match(/^\s+$/) == null; }, idle: function(dialog) { if(this.data.reviewType == "FormDistribution") dialog.enable({prev:false}); dialog.enable({ next: this.isValid(this.oDialog) }); }, commit: function(dialog, next) { var props = dialog.store(); if(next) { this.data.emailid = ""; this.data.firstName = ""; this.data.lastName = ""; this.data.name = ""; this.data.corporation = ""; this.data.title = ""; app.beginPriv(); identity.email = props.mail; if(this.bHasHanko) { identity.firstName = props.fnme; identity.lastName = props.lnme; } else identity.name = props.name; if(props.cmpy != "") identity.corporation = props.cmpy; if(props.jobt != "") identity.title = props.jobt; app.endPriv(); this.bResult = this.isValid(dialog); } else { this.data.emailid = props.mail; if(this.bHasHanko) { this.data.firstName = props.fnme; this.data.lastName = props.lnme; } else this.data.name = props.name; if(props.cmpy != "") this.data.corporation = props.cmpy; if(props.jobt != "") this.data.title = props.jobt; } }, description: { type:"view", width: Collab.wizardWidth, height: Collab.wizardHeight, margin_height: Collab.marginHeight, margin_width: Collab.wizardMarginWidth, align_children: "align_left", alignment: "align_fill", elements: idFields } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } CBSharedReviewSecurityDialog = app.trustedFunction(function(cReviewID, cSourceURL, doc) { try { var url = util.crackURL(cSourceURL); var hostFQHN; app.beginPriv(); var bIsAcrobatDotCom = Collab.isDocCenterURL(cSourceURL); if(bIsAcrobatDotCom) hostFQHN = AnnotsString.IDS_TRACKER_ACROBAT_DOT_COM; else hostFQHN = Collab.getFullyQualifiedHostname(url.cHost); app.endPriv(); var oIcon = Collab.getIcon("A_SendForSharedReview_Xl_N.png"); var title = AnnotsString.IDS_SHARED_REVIEW_SECURE_TITLE; title = title.replace(/\{cProductName\}/, app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT); //Try decoding it with decodeURI first. If that fails, try it with unescape. If that too fails, simply show the normal documentFileName var decodedFileName = null;; try { decodedFileName = decodeURI(doc.documentFileName); } catch(e) { decodedFileName = unescape(doc.documentFileName); } if(!decodedFileName || (typeof decodedFileName != "string")) decodedFileName = doc.documentFileName; var body = AnnotsString.IDS_SHARED_REVIEW_SECURE_BODY; body = body.replace(/\{cFilename\}/, decodedFileName); body = body.replace(/\{cServer\}/, hostFQHN); body = CBSetProductVariant(body); var description = { bResult: false, bdoNotShowConnectDialog: false, initialize: function(dialog) { dialog.load({ sImg: oIcon }); }, srco: function(dialog) { this.bdoNotShowConnectDialog = dialog.store()["srco"]; }, cont: function(dialog) { this.bResult = true; dialog.end(); }, cncl: function(dialog) { dialog.end(); }, description: { name: title, width: Collab.wizardWidth, elements: [ { type: "view", align_children: "align_left", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "sImg", width: oIcon.width, height: oIcon.height, }, { type: "static_text", wrap_name: true, width: Collab.wizardWidth, name: body }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "check_box", item_id: "srco", name: AnnotsString.IDS_DONT_SHOW_AGAIN }, { type: "gap", alignment: "align_fill" }, { type: "view", align_children: "align_row", alignment: "align_right", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_SECURE_CONNECT, item_id: "cont" }, { type: "button", name: AnnotsString.IDS_CANCEL, item_id: "cncl" }, ] }, ] }, ] } ] } }; app.beginPriv(); app.execDialog(description); app.endPriv(); var res = { result : description.bResult, doNotShowConnectDialog : description.bdoNotShowConnectDialog, }; return res; } catch(e) { //console.println(e); //console.println(e.stack); } }); CBSharedReviewIfOfflineDialog = app.trustedFunction(function(cSourceURL, doc) { var oWorkOfflineIcon = Collab.getIcon("A_DisconnectedFromServer_Xl_N.png"); var url = util.crackURL(cSourceURL); app.beginPriv(); var bIsAcrobatDotCom = Collab.isDocCenterURL(cSourceURL); if(bIsAcrobatDotCom) url.cHost = AnnotsString.IDS_TRACKER_ACROBAT_DOT_COM; else url.cHost = Collab.getFullyQualifiedHostname(url.cHost); app.endPriv(); var body = AnnotsString.IDS_SHARED_REVIEW_OFFLINE_BODY; body = body.replace(/\{cServer\}/, url.cHost); body = CBSetProductVariant(body); var description = { initialize: function(dialog) { dialog.focus("offl"); dialog.load({ tip1: "C_Info_Xl_N.png", dico: oWorkOfflineIcon }); }, offl: function(dialog) { dialog.end("offl"); }, onli: function(dialog) { dialog.end("onli"); }, description: { width: Collab.wizardWidth, elements: [ { type: "view", align_children: "align_left", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "dico", width: oWorkOfflineIcon.width, height:oWorkOfflineIcon.height }, { type: "static_text", wrap_name: true, width: Collab.wizardWidth, name: body, }, ] }, ].concat( [ { type: "view", align_children: "align_distribute", alignment: "align_right", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_OFFLINE_WORK_DISCONNECTED, item_id: "offl" }, { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_OFFLINE_WORK_CONNECTED, item_id: "onli" }, ] } ]) } ] } }; app.beginPriv(); var closedWith = app.execDialog(description); app.endPriv(); switch(closedWith) { default: case "onli": result = -1; break; case "offl": result = 1; break; } return result; }); CBSharedReviewCloseDialog = app.trustedFunction(function(doc, bDirty, bMustClose, bEnded) { var body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_DIRTY_BODY; //Assumption - This dialog will never be invoked for a publishing-disabled document if(bMustClose) // If opened in browser { if(bEnded) body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_BROWSER_PUBLISH_REVIEWENDED_BODY; else body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_BROWSER_BODY; } else { if(bEnded) { if(bDirty) //New comments added { // Review ended during document open, but publish still allowed body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_DIRTY_PUBLISH_REVIEWENDED_BODY; } else //Document not dirty { // Review ended but publishing still allowed since draft comments were present body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_NONDIRTY_PUBLISH_REVIEWENDED_BODY; } } else // Review is NOT ended { if(bDirty) body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_DIRTY_BODY; else body = AnnotsString.IDS_SHARED_REVIEW_CLOSE_NONDIRTY_BODY; } } var oSharedReviewIcon = Collab.getIcon("A_SendForSharedReview_Xl_N.png"); var description = { bDirty: bDirty, bMustClose: bMustClose, bEnded: bEnded, initialize: function(dialog) { dialog.load({ sico: oSharedReviewIcon }); dialog.focus("publ"); }, dscd: function(dialog) { dialog.end("dscd"); }, save: function(dialog) { dialog.end("save"); }, publ: function(dialog) { dialog.end("publ"); }, cncl: function(dialog) { dialog.end("cncl"); }, description: { width: Collab.wizardWidth, elements: [ { type: "view", align_children: "align_left", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "image", item_id: "sico", width: oSharedReviewIcon.width, height:oSharedReviewIcon.height }, { type: "static_text", wrap_name: true, width: Collab.wizardWidth, name: body }, ] }, { type: "view", align_children: "align_distribute", alignment: "align_right", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_CLOSE_PUBLISH, item_id: "publ" }, ].concat((!bMustClose) ? [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_CLOSE_SAVE, item_id: "save" }, ] : []).concat((bDirty || bMustClose) ? [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_CLOSE_DISCARD, item_id: "dscd" }, ] : []).concat((!bMustClose) ? [ { type: "button", name: AnnotsString.IDS_CANCEL, item_id: "cncl" }, ] : []) } ] } ] } }; app.beginPriv(); var closedWith = app.execDialog(description); app.endPriv(); switch(closedWith) { default: case "cncl": result = -1; break; case "dscd": result = 1; break; case "save": result = 2; break; case "publ": result = 3; break; } return result; }); CBCreateUploadStepDescription = function() { var description = { initialize: function(dialog) { this.data.certWarningPopped = false; app.beginPriv(); Collab.updateMountInfo(); app.endPriv(); if(!this.data.destURL) { app.beginPriv(); var lastURL = Collab.lastBBRURL; app.endPriv(); if(lastURL) this.data.destURL = lastURL.replace(/\/[^\/]*\.pdf$/, "/"); else this.data.destURL = ""; } dialog.load({dest: this.data.destURL}); dialog.focus("dest"); }, fixURL: function(url) { if(url.match(/^\\\\/)) // really a windows network path { // trailing slash? add a file name url = url.replace(/\\\.?$/, "\\" + this.data.doc.documentFileName); url = "file:///" + url.replace(/\\/g, "/"); } else // trailing slash? add a file name url = url.replace(/\/\.?$/, "/" + this.data.doc.documentFileName); // no .pdf ending? add it if(!url.match(/\.pdf$/i)) { if(url.match(/\.$/)) url += "pdf"; else url += ".pdf"; } return url; }, URLToDiPath: function(url) { if(url.match(/^\\\\/)) // really a windows network path url = url.replace(/\\/g, "/").replace(/^\/\//, "/"); else { url = url.replace(/^file:\/\/localhost\//, "/"); url = url.replace(/^file:\/\/\//, "/"); url = url.replace(/^file:\/\//, "/"); url = url.replace(/^\/([^\/]+)\|\//, "/$1/"); } return unescape(url); }, URLPartialOk: function(dest) { switch(app.platform) { case "MAC": return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/).+\/.*$/); case "WIN": return dest.match(/^(?:http[s]?:\/\/.+\/.*$)|(?:file:\/\/.+\/.*$)|(?:\\\\[^\\]+\\.*$)/); default: return dest.match(/^(?:http[s]?:\/\/)|(?:file:\/\/\/).+\/.*$/); } }, commit: function(dialog, next) { var url = dialog.store()["dest"]; this.data.destURL = url; if(next) { this.data.fixedDestURL = this.fixURL(url); if(!this.data.fixedDestURL.match(/^http[s]?\:/)) { app.beginPriv(); if(app.alert(AnnotsString.IDS_SAVE_INACCESSIBLE_WARNING_BBREVIEW.replace(/\{location\}/, this.data.fixedDestURL), 2, 2) != 4) DebugThrow ("BBR loc upload location bad"); app.endPriv(); } try { app.beginPriv(); if(this.data.fixedDestURL.match(/^http/)) this.data.doc.saveAs({bCopy: true, cFS: fileSystem.WebDAV, cPath: this.data.fixedDestURL, bPromptToOverwrite: true}); else this.data.doc.saveAs({bCopy: true, cPath: this.URLToDiPath(this.data.fixedDestURL), bPromptToOverwrite: true}); Collab.lastBBRURL = this.data.fixedDestURL; app.endPriv(); } catch(e) { if(e.number != 11 /* NotAllowedError */) app.alert(AnnotsString.IDS_UPLOAD_FOR_BBR_FILE_UPLOAD_FAILED.replace(/%url%/, this.data.fixedDestURL)); throw (e); } app.beginPriv(); var utf8URL = Collab.uriEncode(Collab.stringToUTF8(this.data.fixedDestURL)); app.launchURL(utf8URL); app.endPriv(); } if(this.data.doc && this.data.doc.hidden) { this.data.doc.closeDoc(true); this.data.doc = null; } }, idle: function(dialog) { // XXX this stinks if(this.data.doc && this.data.doc.certified && !this.data.certWarningPopped) { this.data.certWarningPopped = true; app.alert({cMsg: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED}); } var dlgStore = dialog.store(); var dest = dlgStore["dest"]; var partialOKURL = this.URLPartialOk(dest); if(this.data.doc != null) { var dtpvVal = partialOKURL ? AnnotsString.IDS_UPLOAD_FOR_BBR_DEST.replace(/%url%/, this.fixURL(dest)) : AnnotsString.IDS_UPLOAD_FOR_BBR_NO_DEST; if(dlgStore["dtpv"] != dtpvVal) dialog.load({dtpv: dtpvVal }); app.beginPriv(); var bStoreOk = Collab.defaultStore != "" && Collab.defaultStore != "NONE" && (Collab.getStoreNoSettings(Collab.defaultStore) || Collab.getStoreSettings(Collab.defaultStore)); app.endPriv(); dialog.enable({next: (!this.data.doc.certified && partialOKURL && bStoreOk) ? true : false }); } }, brws: function(dialog) { app.beginPriv() var path = app.browseForDoc({bSave: true, cFSInit: fileSystem.WebDAV, cFilenameInit: this.data.doc.documentFileName}); app.endPriv(); if(path) { app.beginPriv(); var normUrl = Collab.uriEncode(path.cURL); app.endPriv(); if (normUrl.substring(0, 4) == "smb:") { if (app.platform == "WIN") normUrl = "file:///" + normUrl.substring(4); else normUrl = "file:/" + normUrl.substring(4); } this.data.destURL = normUrl; dialog.load({dest: this.data.destURL}); } }, cnfg: function(dialog) { CBAutoConfigCommentRepository(); }, description: [ { type: "view", alignment: "align_fill", align_children: "align_row", elements: [ { type: "edit_text", alignment: "align_fill", item_id: "dest" }, { type: "button", name: AnnotsString.IDS_BROWSE, item_id: "brws" } ] }, { type: "static_text", alignment: "align_fill", truncate: "truncate_middle", item_id: "dtpv" }, { type: "button", name: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_AUTO_CONFIG, item_id: "cnfg" } ] }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } function CBRunEmailReviewWizard(data, startStep) { data.reviewType = "EBR"; data.readerEnable = (app.viewerType != "Exchange") // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_EMAIL_REVIEW_WIZ_FINISH, title: AnnotsString.IDS_EMAIL_REVIEW_WIZ_TITLE, steps: [ { creator: function(data) { return CBCreateGettingStartedStepDescription("EBR", true); }, heading: AnnotsString.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_HEADING, title: AnnotsString.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_TITLE, text: (app.viewerType == "Exchange-Pro") ? AnnotsString.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_PRO_TEXT : AnnotsString.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_STD_TEXT, tip: null }, { creator: function(data) { return CBCreateInviteStepDescription("", false, (app.viewerType == "Exchange-Pro") ? true : false, true); }, heading: AnnotsString.IDS_EMAIL_REVIEW_INVITE_STEP_HEADING, title: AnnotsString.IDS_EMAIL_REVIEW_INVITE_STEP_TITLE, text: AnnotsString.IDS_EMAIL_REVIEW_INVITE_STEP_TEXT }, { creator: function(data) { return CBCreateSendInvitationStepDescription(AnnotsString.IDS_EMAIL_REVIEW_SEND_INVITE_STEP_MESSAGE_HEADING, false); }, heading: AnnotsString.IDS_EMAIL_REVIEW_SEND_INVITE_STEP_HEADING, title: AnnotsString.IDS_EMAIL_REVIEW_SEND_INVITE_STEP_TITLE, text: AnnotsString.IDS_EMAIL_REVIEW_SEND_INVITE_STEP_TEXT, tip: null } ] }); return CBRunSimpleWiz(wiz, startStep, -1, data); } function CBRunEmailApprovalWizard(data, startStep, bShowInitiatorEmail, bShowReaderEnable, bCanReaderEnable) { data.cannedSubj = AnnotsString.IDS_INVITE_APPROVAL_DEFAULT_SUBJECT; if(data.readerEnable) data.cannedMsg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB; else data.cannedMsg = AnnotsString.IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB; data.reviewType = "APP"; // simply an array of steps // if showCC is on, turn it off if there is no return address if (bShowInitiatorEmail && !(data.raddr && (data.raddr.length > 0))) bShowInitiatorEmail = false; var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_EMAIL_APPROVAL_WIZ_FINISH, title: AnnotsString.IDS_EMAIL_APPROVAL_WIZ_TITLE, steps: [ { creator: function(data) { return CBCreateGettingStartedStepDescription("APP", true); }, heading: AnnotsString.IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_HEADING, title: AnnotsString.IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_TITLE, text: app.viewerType.match(/Exchange-Pro/) ? AnnotsString.IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_PRO_TEXT : AnnotsString.IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_STD_TEXT, tip: null }, { creator: function(data) { return CBCreateInviteStepDescriptionApproval(AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_CLUSTER_TITLE, false, bShowInitiatorEmail, bShowReaderEnable, bCanReaderEnable); }, heading: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_HEADING, title: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_TITLE, text: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_TEXT, tip: AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_TIP }, { creator: function(data) { return CBCreateSendInvitationStepDescription(AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_MESSAGE_HEADING, false); }, heading: AnnotsString.IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_HEADING, title: AnnotsString.IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_TITLE, text: AnnotsString.IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_TEXT, tip: null } ] }); return CBRunSimpleWiz(wiz, startStep, -1, data); } function CBRunBBRReviewWizard(data, startStep, endStep) { data.reviewType = "BBR"; // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: startStep == 0 ? AnnotsString.IDS_NEXT : AnnotsString.IDS_BROWSER_REVIEW_WIZ_FINISH, title: AnnotsString.IDS_BROWSER_REVIEW_WIZ_TITLE, steps: [ { creator: function(data) { return CBCreateGettingStartedStepDescription("BBR", false); }, heading: AnnotsString.IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_HEADING, title: AnnotsString.IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_TITLE, text: AnnotsString.IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_TEXT, tip: null }, { creator: function(data) { return CBCreateUploadStepDescription(); }, heading: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_HEADING, title: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_TITLE, text: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_TEXT, tip: AnnotsString.IDS_BROWSER_REVIEW_UPLOAD_STEP_TIP }, { creator: function(data) { return CBCreateInviteStepDescription("", true, false, false); }, heading: AnnotsString.IDS_BROWSER_REVIEW_INVITE_STEP_HEADING, title: AnnotsString.IDS_BROWSER_REVIEW_INVITE_STEP_TITLE, text: AnnotsString.IDS_BROWSER_REVIEW_INVITE_STEP_TEXT }, { creator: function(data) { return CBCreateSendInvitationStepDescription(AnnotsString.IDS_BROWSER_REVIEW_INVITE_STEP_MESSAGE_HEADING, true); }, heading: AnnotsString.IDS_BROWSER_REVIEW_SEND_INVITE_STEP_HEADING, title: AnnotsString.IDS_BROWSER_REVIEW_SEND_INVITE_STEP_TITLE, text: AnnotsString.IDS_BROWSER_REVIEW_SEND_INVITE_STEP_TEXT, tip: null } ] }); return CBRunSimpleWiz(wiz, startStep, endStep, data); } // function to get the alwaysUseServer value and also validate for acrobat.com getAlwaysUseServerValue = function(reviewType) { app.beginPriv(); var alwaysUseServer = Collab.getAlwaysUseServer(reviewType); app.endPriv(); // The first check i.e. < alwaysUseServer.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT) > // checks whether the choice in 'remember my choice' was 'acrobat.com'. If so, the further check i.e. // < Collab.isDocCtrInitAvailable > checks whether 'acrobat.com' is available or not(maybe blocked by tuner). // If not, we consider it to be the same as not defined and we do not go into the if. if (alwaysUseServer != undefined && ( alwaysUseServer.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT) ) && !Collab.isDocCtrInitAvailable) alwaysUseServer = undefined; return alwaysUseServer; } function CBRunSharedReviewWizard(data, startStep) { data.reviewType = "SharedReview"; data.WT = "_SR"; WT = "_SR"; data.DT = "_REVIEW"; DT = "_REVIEW"; data.ST = "_YOU_MAY"; ST = "_YOU_MAY"; data.UseDocumentCenter = false; if (data.readerEnable) { data.UB = "_UB"; UB = "_UB"; } else { data.UB = "_NOUB"; UB = "_NOUB"; } data.cannedSubj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_SR; data.cannedMsg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL; data.docAlreadyOpened = false; data.delayOpenDoc = false; // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_WIZ_TITLE, stepFilter: function(data, stepNum) { return (data.distributionMethod == "MANUAL" && stepNum == 3); }, //steps: OldSRIWsteps, steps: IWSteps, }); while(1) { if (startStep == 0) { if(!data.docPath || !data.doc || data.doc.isInCollection || data.delayOpenDoc == true) { data.delayOpenDoc = true; CBRunSimpleWizNew(wiz, startStep, -1, data); if(data.result != "ddoc") return; //Coming here means user has not pressed cancel and data.docPath is now valid } if (data.docPath) { if(data.delayOpenDoc != true) data.docAlreadyOpened = true; else data.docAlreadyOpened = false; data.checkSize = false; DebugPrintln("File already opened, so use it for shared review :). data.docPath = " + data.docPath); try { IWBrowseDocStepCommitWork(data); startStep = 1; } catch(e) { startStep = 0; data.delayOpenDoc = true; } } } else if(startStep == 1) { data.delayOpenDoc = true; //if there is an existing AlwaysUseServer, // Get the server var alwaysUseServer = getAlwaysUseServerValue(data.reviewType); if (alwaysUseServer != undefined) { // Do the IWDistributionServer init stuff //The cDocumentName and cDocumentPath are used later, but can be updated at this step, so do it. var oldName = data.doc.documentFileName; var oldPath = data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT);; data.cDocumentPath = newPath + data.cDocumentName; data.server = alwaysUseServer; data.addInternalServer = false; if (data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) data.UseDocumentCenter = true; else data.UseDocumentCenter = false; var startStepName = ""; if (data.UseDocumentCenter) { DebugAlert("start shared review\nskip browsdoc step\nuse dc\ndone dist server commit work\nnow checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step startStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("Silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); startStepName = "IWEmailStepDescription"; } } else { if(ANValidateIdentity() == false) startStepName = "IWIdentityDialog"; else { //the user chose a legacy server, so jump to email step. DistributionServerStepCommitWork(data); startStepName = "IWEmailStepDescription"; } } startStep = GetStepNum(startStepName, data.reviewType) } CBRunSimpleWizNew(wiz, startStep, -1, data); if(data.result != "ddoc") return; else if (data.docPath) { if(data.delayOpenDoc != true) data.docAlreadyOpened = true; else data.docAlreadyOpened = false; data.checkSize = false; DebugPrintln("File already opened, so use it for shared review :). data.docPath = " + data.docPath); try { IWBrowseDocStepCommitWork(data); startStep = 1; } catch(e) { startStep = 0; data.delayOpenDoc = true; } } } } return ; } function CBRunFormDistributionWizard(data, startStep) { //DebugAlert("CBFormDistributionWizard"); data.reviewType = "FormDistribution"; data.WT = "_FD"; WT = "_FD"; data.DT = "_FORMS"; DT = "_FORMS"; data.ST = "_HOST_FORMS"; ST = "_HOST_FORMS"; data.UseDocumentCenter = false; //This is specifically to toggle between strings in the shared review wizard. //UB or NOUB does not affect the forms wizard but if later we need to have different strings then this can be used. data.UB = ""; UB = ""; data.cannedSubj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_FD; data.cannedMsg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_FD; data.docAlreadyOpened = false; data.delayOpenDoc = false; // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_WIZ_TITLE, stepFilter: function(data, stepNum) { return (data.distributionMethod == "MANUAL" && stepNum == 3); }, steps: IWFDSteps, }); // in the case where the FDI is invoked from tracker we need to show the browse doc step even if the doc is open while(1) { if (startStep == 0) { app.beginPriv(); var doc = Collab.GetActiveDocIW(); app.endPriv(); if(doc && doc.path && data.selectFile != true) { data.docPath = doc.path; data.doc = doc; } if(!data.docPath || data.delayOpenDoc == true) { data.delayOpenDoc = true; CBRunSimpleWizNew(wiz, startStep, -1, data); if(data.result != "ddoc") return; //Coming here means user has not pressed cancel and data.docPath is now valid } if (data.docPath) { if(data.delayOpenDoc != true) data.docAlreadyOpened = true; else data.docAlreadyOpened = false; data.checkSize = false; DebugPrintln("File already opened, so use it for shared review :). data.docPath = " + data.docPath); try { IWBrowseDocStepCommitWork(data); startStep = 1; } catch(e) { if(e == "halt") { return ; } else { startStep = 0; data.delayOpenDoc = true; } } } } else if(startStep == 1) { data.delayOpenDoc = true; //if there is an existing AlwaysUseServer, // Get the server var alwaysUseServer = getAlwaysUseServerValue(data.reviewType); if (alwaysUseServer != undefined) { // Do the IWDistributionServer init stuff //The cDocumentName and cDocumentPath are used later, but can be updated at this step, so do it. var oldName = data.doc.documentFileName; var oldPath = data.doc.path; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT) + ".pdf"; data.cDocumentPath = newPath + data.cDocumentName; data.server = alwaysUseServer; data.addInternalServer = false; if (data.server.UI == SharedString("IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL"+WT)) data.UseDocumentCenter = true; else data.UseDocumentCenter = false; var startStepName = ""; if (data.UseDocumentCenter) { DebugAlert("start shared review\nskip browsdoc step\nuse dc\ndone dist server commit work\nnow checking if silent is possible or not"); //check if we can log-in using an existing credential store. if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/Forms/Acrobat.com"})) { DebugAlert("Silent login: unsuccessful"); //we need to show the login step startStepName = "IWSharedReviewDocCenterLogin"; } else { DebugAlert("Silent login : successful"); //silent login done, show email step DistributionServerStepCommitWork(data); startStepName = "IWEmailStepDescription"; } } else { //the user chose a legacy server, so jump to email step. if(ANValidateIdentity() == false) startStepName = "IWIdentityDialog"; else if(data.server.UI == AnnotsString.IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL) { DistributionServerStepCommitWork(data); startStepName = "IWDistributeStepDescription"; } else if(data.server.UI == SharedString("IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER" + WT)) { DistributionServerStepCommitWork(data); startStepName = "IWNewInternalServer"; } else { DistributionServerStepCommitWork(data); startStepName = "IWEmailStepDescription"; } } startStep = GetStepNum(startStepName, data.reviewType); } CBRunSimpleWizNew(wiz, startStep, -1, data); if(data.result != "ddoc") return; else if (data.docPath) { if(data.delayOpenDoc != true) data.docAlreadyOpened = true; else data.docAlreadyOpened = false; data.checkSize = false; DebugPrintln("File already opened, so use it for shared review :). data.docPath = " + data.docPath); try { IWBrowseDocStepCommitWork(data); startStep = 1; } catch(e) { if(e == "halt") { return ; } else { startStep = 0; data.delayOpenDoc = true; } } } } } return ; } function CBRunShareFileWizard(data, startStep) { data.reviewType = "ShareFile"; data.UseDocumentCenter = true; data.distributionMethod = "UPLOAD"; if (data.type == 0) { data.WT = "_SF"; WT = "_SF"; } else //(data.type == 1) { data.WT = "_UF"; WT = "_UF"; } var start = startStep; var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: "Share File", steps: (data.type == 0) ? ShareFileSteps : UploadFileSteps, }); if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.com"})) start = GetStepNum("IWSharedReviewDocCenterLogin", data.reviewType); else start = GetStepNum("IWBrowseAnyDoc", data.reviewType); return CBRunSimpleWizNew(wiz, start, -1, data); } // This function takes a URL whose path is not URL-encoded and returns // a URL with a URL-encoded path. Also, the caller can pass an optional // flag, bEnsureTrailingSlash, that controls whether to append a // trailing slash to the URL if none exists. // NOTE: the scheme, host and port of the original URL are not changed. function CBEncodeURL(url, bEnsureTrailingSlash) { if (url.length > 0) { var crackedURL = util.crackURL(url); var pathIndex = url.lastIndexOf(crackedURL.cPath); if (pathIndex >= 0) { url = url.substr(0, pathIndex) + escape(crackedURL.cPath); if (bEnsureTrailingSlash && url.substr(-1) != "/") url += "/"; } } return url; } const SharedReviewDocCenterInitiator= { canInitiateWorkflow: function(cWorkflow) { return cWorkflow == "SharedReview" || cWorkflow == "FormDistribution"; }, isDocCenterWorkflow: function() { return true; }, oTaskSet: { // TaskSet metadata cTitle: AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE, // Enumeration onBeginEnumeration: function(){}, onEndEnumeration: function(){}, onEnumerateFile: function(resource) {}, onEnumerateCollection: function(resource) {}, // Create Collection onCreateCollection: function(code) { this.cxt.handleSuccess(); }, onPutFile: function(code) { this.cxt.handleSuccess(); }, onError: function(e) { this.cxt.handleFailure(e); }, aTasks: [ { runTask: function(cxt, taskData) { //TODO: dikumar: this task is not required. Remove when confimed. //This is presently doing nothing taskData.cxt = cxt; var cURL = taskData.data.cSetting; cxt.handleSuccess(); }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_DONE); }, onFailure: function(cxt, taskData) {}, }, ], data: {}, }, getWorkspaceCreator: function(reviewID, config) { // Set up the workspace based on the configuration // TODO: due to an as yet not-fully-understood JavaScript nuance // the following line of code does not work: this.oTaskSet.data = config; // TODO (cont'd): instead we must iterate over the properties in config and // assign them explicity to the data object, like so: for (var i in config) { this.oTaskSet.data[i] = config[i]; } this.oTaskSet.reviewID = reviewID; return ANTrustPropagateAll(this.oTaskSet); } } const SharedReviewWebDAVInitiator= { getInitiateName: function() { return AnnotsString.IDS_SHARED_REVIEW_WEBDAV_NAME; }, getInitiateDefaultName: function() { return AnnotsString.IDS_SHARED_REVIEW_WEBDAV_DEFAULT_NAME; }, getInitiateAddServer: function() { return AnnotsString.IDS_SHARED_REVIEW_WEBDAV_ADD_SERVER; }, getInitiateDescription: function() { return AnnotsString.IDS_SHARED_REVIEW_WEBDAV_DESCRIPTION; }, canInitiateWorkflow: function(cWorkflow) { return cWorkflow == "SharedReview"; }, getWorkflowInitiatorConfig: function() { var result = { oConfig: { cSetting: "", bUseWindowsIntegratedAuthentication: false, }, oDialog: null, cVerifyURL: null, // URL to be verified cVerifiedURL: null, // URL that was verified oAuth: {}, getSetting: function() { return this.oConfig; }, initialize: function(dialog, next) { this.oDialog = dialog; if (this.data.oSavedWebDavState) { this.setURL(dialog, this.data.oSavedWebDavState.cURL); dialog.load({"task": this.data.oSavedWebDavState.cStatus, "ntlm": this.data.oSavedWebDavState.bUseWindowsIntegratedAuthentication}); this.cVerifiedURL = this.data.oSavedWebDavState.cVerifiedURL; } else { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); } dialog.focus("surl"); }, setStatus: function(t) { var task = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE; this.oDialog.load({ "task": task.replace(/{cStatus}/, t) }); this.oDialog.resize("task"); }, setURL: function(dialog, url) { dialog.load({ "surl": url }); }, commit: function(dialog, next) { var props = dialog.store(); if(next) { var url = props["surl"]; if (url != this.cVerifiedURL) { this.bDoCommit = true; this.cVerifyURL = url; this.vrfy(dialog); DebugThrow ("URL requires verification"); } this.oConfig.cSetting = url; } else { this.data.oSavedWebDavState = { cURL: props["surl"], cVerifiedURL: this.cVerifiedURL, cStatus: props["task"], //bUseWindowsIntegratedAuthentication: props["ntlm"], }; } }, idle: function(dialog) { var url = dialog.store().surl; var bEnabled = url.match(/^http[s]?\:\/\/.+\//) != null; dialog.enable({next: bEnabled, vrfy: bEnabled}); }, aStates: ["writeable", "enumerable", "removeable"], nState: 0, cFileURL: null, oFileURL: null, bFoundFile: false, bDoCommit: false, vrfy: function(dialog) { var props = dialog.store(); var url = dialog.store()["surl"]; if (url.length > 0) { this.nState = 0; // ensure the server URL ends with a '/' if (url.substr(-1) != "/") this.setURL(dialog, url + "/"); this.cVerifyURL = dialog.store()["surl"]; this.oAuth = (this.data.oSavedWebDavState.bUseWindowsIntegratedAuthentication) ? { UsePlatformAuth: true } : {}; app.beginPriv(); this.cFileURL = Collab.uriEncode(this.cVerifyURL + "com.adobe.acrobat.webdav.writeability.txt"); app.endPriv(); this.oFileURL = util.crackURL(this.cFileURL); this.bFoundFile = false; this.oDialog.enable({"vrfy": false}); this.verifyNextState(); } else onVerifyFailure(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); }, verifyNextState: function() { var state = this.aStates[this.nState]; var task = ""; switch(state) { case "writeable": var data = SOAP.streamFromString("Testing Writeablility"); Net.HTTP.WebDAV.PutFile(this.cFileURL, data, this, this.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE; break; case "enumerable": Net.HTTP.WebDAV.EnumerateCollection(this.cFileURL, this, this.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_READ; break; case "removeable": Net.HTTP.WebDAV.DeleteFile(this.cFileURL, this, this.oAuth); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE; break; } this.setStatus(task); }, onError: function(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.onVerifyFailure(e.text ? e.text : AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); }, onVerifySuccess: function() { this.nState++; if(this.nState >= this.aStates.length) { this.cVerifiedURL = this.cVerifyURL; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.oDialog.enable({"vrfy": true}); if(this.bDoCommit) { this.commit(this.oDialog, true); this.oDialog.end("fnsh"); } } else this.verifyNextState(); }, onVerifyFailure: function(msg) { this.setStatus(msg); this.oDialog.enable({"vrfy": true}); this.bDoCommit = false; }, onEnumerateFile: function(resource) { var state = this.aStates[this.nState]; if(state == "enumerable" && !this.bFoundFile) { try { var oURL = util.crackURL(resource.url); this.bFoundFile = oURL.cHost == this.oFileURL.cHost && oURL.cPath == this.oFileURL.cPath; } catch(e) { //console.println(e); //console.println(e.stack); } } }, onEnumerateEnd: function(resource) { if(this.bFoundFile) this.onVerifySuccess(); else this.onVerifyFailure(); }, onPutFile: function(status) { this.onVerifySuccess(); }, onDeleteFile: function(status) { this.onVerifySuccess(); }, description: [ { type: "view", elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_WEBDAV_INSTRUCTION, wrap_name: true, width: Collab.wizardWidth, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_ENTER_URL, }, { type: "edit_text", alignment: "align_fill", item_id: "surl" } ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_VALIDATE_BUTTON, item_id: "vrfy" }, { type: "static_text", alignment: "align_fill", item_id: "task", }, ] }, ].concat(app.platform == "WIN" ? [ { type: "check_box", name: AnnotsString.IDS_USE_NTLM_AUTHENTICATION, item_id: "ntlm" }, ] : []).concat(ANCreateTipElements(AnnotsString.IDS_SHARED_REVIEW_WEBDAV_TIP, Collab.wizardWidth)) } ] } ] }; return result; }, getWorkflowInitiatorSource: function(cReviewID, config) { var encURL = config.cSetting + encodeURIComponent(cReviewID) + "/"; return encURL; }, oTaskSet: { // TaskSet metadata cTitle: AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE, // Enumeration onBeginEnumeration: function(){}, onEndEnumeration: function(){}, onEnumerateFile: function(resource) {}, onEnumerateCollection: function(resource) {}, // Create Collection onCreateCollection: function(code) { this.cxt.handleSuccess(); }, onPutFile: function(code) { this.cxt.handleSuccess(); }, onError: function(e) { this.cxt.handleFailure(e); }, aTasks: [ { // Create the review Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY + cxt.data.server.Settings.cSetting); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, {}); }, onSuccess: function(cxt, taskData) {}, onFailure: function(cxt, taskData) {}, }, { // Create the attachment Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; var cURL = taskData.data.cSetting; if (cURL.substr(0, 28) != "https://api.share.adobe.com/" && cURL.substr(0, 35) != "http://api-dcdevlab.corp.adobe.com/") { cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY + cxt.data.server.Settings.cSetting); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/attachments/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, {}); } else cxt.handleSuccess(); }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_DONE); }, onFailure: function(cxt, taskData) {}, }, ], data: {}, }, getWorkspaceCreator: function(reviewID, config) { // Set up the workspace based on the configuration // TODO: due to an as yet not-fully-understood JavaScript nuance // the following line of code does not work: this.oTaskSet.data = config; // TODO (cont'd): instead we must iterate over the properties in config and // assign them explicity to the data object, like so: for (var i in config) { this.oTaskSet.data[i] = config[i]; } this.oTaskSet.reviewID = reviewID; return ANTrustPropagateAll(this.oTaskSet); } }; const SharedReviewAppleiDiskInitiator= { getInitiateName: function() { return AnnotsString.IDS_SHARED_REVIEW_IDISK_NAME; }, getInitiateDefaultName: function() { return AnnotsString.IDS_SHARED_REVIEW_IDISK_DEFAULT_NAME; }, getInitiateAddServer: function() { return AnnotsString.IDS_SHARED_REVIEW_IDISK_ADD_SERVER; }, getInitiateDescription: function() { return AnnotsString.IDS_SHARED_REVIEW_IDISK_DESCRIPTION; }, canInitiateWorkflow: function(cWorkflow) { return cWorkflow == "SharedReview"; }, getWorkflowInitiatorConfig: function() { var result = { cBaseURL: "https://idisk.mac.com/", oConfig: { cSetting: "", bUseWindowsIntegratedAuthentication: false }, oDialog: null, cVerifyURL: null, // URL to be verified cVerifiedURL: null, // URL that was verified cCurrentURL: null, // URL Currently being displayed getSetting: function() { return this.oConfig; }, initialize: function(dialog, next) { this.oDialog = dialog; dialog.load({"fldr": "Public"}); // This doesn't seem to get localized this.cCurrentURL = this.getCurrentURL(dialog); if (this.data.oSavedWebDavState) { dialog.load({"task": this.data.oSavedWebDavState.cStatus, iurl: this.currentURL}); this.cVerifiedURL = this.data.oSavedWebDavState.cVerifiedURL; } else { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); } dialog.focus("acct"); }, setStatus: function(t) { var task = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE; this.oDialog.load({ "task": task.replace(/{cStatus}/, t) }); this.oDialog.resize("task"); }, commit: function(dialog, next) { if(next) { var url = this.getCurrentURL(dialog); if (url != this.cVerifiedURL) { this.bDoCommit = true; this.cVerifyURL = url; this.vrfy(dialog); DebugThrow ("URL requires verification"); } this.oConfig.cSetting = url; } else { this.data.oSavedWebDavState = {}; this.data.oSavedWebDavState.cURL = dialog.store()["surl"]; this.data.oSavedWebDavState.cVerifiedURL = this.cVerifiedURL; this.data.oSavedWebDavState.cStatus = dialog.store()["task"]; } }, getCurrentURL: function(dialog) { var props = dialog.store(); app.beginPriv(); var result = Collab.uriEncode(this.cBaseURL + props.acct + "/" + props.fldr + "/"); app.endPriv(); return result; }, idle: function(dialog) { var url = this.getCurrentURL(dialog); var bEnabled = url.match(/^http[s]?\:\/\/.+\//) != null; dialog.enable({next: bEnabled, vrfy: bEnabled}); if(url != this.cCurrentURL) { dialog.load({iurl: url}); this.cCurrentURL = url; } }, aStates: ["writeable", "enumerable", "removeable"], nState: 0, cFileURL: null, oFileURL: null, bFoundFile: false, bDoCommit: false, vrfy: function(dialog) { var props = dialog.store(); { this.nState = 0; // ensure the server URL ends with a '/' this.cVerifyURL = this.getCurrentURL(dialog); app.beginPriv(); this.cFileURL = Collab.uriEncode(this.cVerifyURL + "com.adobe.acrobat.webdav.writeability.txt"); app.endPriv(); this.oFileURL = util.crackURL(this.cFileURL); this.bFoundFile = false; this.oDialog.enable({"vrfy": false}); this.verifyNextState(); } }, verifyNextState: function() { var state = this.aStates[this.nState]; var task = ""; switch(state) { case "writeable": var data = SOAP.streamFromString("Testing Writeablility"); Net.HTTP.WebDAV.PutFile(this.cFileURL, data, this, {}); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE; break; case "enumerable": Net.HTTP.WebDAV.EnumerateCollection(this.cFileURL, this, {}); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_READ; break; case "removeable": Net.HTTP.WebDAV.DeleteFile(this.cFileURL, this, {}); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE; break; } this.setStatus(task); }, onError: function(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.onVerifyFailure(e.text ? e.text : AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); }, onVerifySuccess: function() { this.nState++; if(this.nState >= this.aStates.length) { this.cVerifiedURL = this.cVerifyURL; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.oDialog.enable({"vrfy": true}); if(this.bDoCommit) { this.commit(this.oDialog, true); this.oDialog.end("fnsh"); } } else this.verifyNextState(); }, onVerifyFailure: function(msg) { this.setStatus(msg); this.oDialog.enable({"vrfy": true}); this.bDoCommit = false; }, onEnumerateFile: function(resource) { var state = this.aStates[this.nState]; if(state == "enumerable" && !this.bFoundFile) { try { var oURL = util.crackURL(resource.url); this.bFoundFile = oURL.cHost == this.oFileURL.cHost && oURL.cPath == this.oFileURL.cPath; } catch(e) { //console.println(e); //console.println(e.stack); } } }, onEnumerateEnd: function(resource) { if(this.bFoundFile) this.onVerifySuccess(); else this.onVerifyFailure(); }, onPutFile: function(status) { this.onVerifySuccess(); }, onDeleteFile: function(status) { this.onVerifySuccess(); }, description: [ { type: "view", elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDISK_ACCOUNT, }, { type: "edit_text", alignment: "align_fill", item_id: "acct" } ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDISK_DIRECTORY, }, { type: "edit_text", alignment: "align_fill", item_id: "fldr" } ] }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDISK_URL, wrap_name: true, width: Collab.wizardWidth, item_id: "iurl" }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_IDISK_INSTRUCTION, wrap_name: true, width: Collab.wizardWidth, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_VALIDATE_BUTTON, item_id: "vrfy" }, { type: "static_text", alignment: "align_fill", item_id: "task", }, ] }, ].concat(ANCreateTipElements(AnnotsString.IDS_SHARED_REVIEW_IDISK_TIP_4, Collab.wizardWidth)) } ] } ] }; return result; }, getWorkflowInitiatorSource: function(cReviewID, config) { var encURL = config.cSetting + encodeURIComponent(cReviewID) + "/"; return encURL; }, oTaskSet: { // TaskSet metadata cTitle: AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE, // Enumeration onBeginEnumeration: function(){}, onEndEnumeration: function(){}, onEnumerateFile: function(resource) {}, onEnumerateCollection: function(resource) {}, // Create Collection onCreateCollection: function(code) { this.cxt.handleSuccess(); }, onPutFile: function(code) { this.cxt.handleSuccess(); }, onError: function(e) { this.cxt.handleFailure(e); }, aTasks: [ { // Create the review Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, {}); }, onSuccess: function(cxt, taskData) {}, onFailure: function(cxt, taskData) {}, }, { // Create the attachment Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENT); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/attachments/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, {}); }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_DONE); }, onFailure: function(cxt, taskData) {}, }, ], data: {}, }, getWorkspaceCreator: function(reviewID, config) { // Set up the workspace based on the configuration // TODO: due to an as yet not-fully-understood JavaScript nuance // the following line of code does not work: this.oTaskSet.data = config; // TODO (cont'd): instead we must iterate over the properties in config and // assign them explicity to the data object, like so: for (var i in config) { this.oTaskSet.data[i] = config[i]; } this.oTaskSet.reviewID = reviewID; return ANTrustPropagateAll(this.oTaskSet); } }; const SharedReviewSMBInitiator= { getInitiateName: function() { return AnnotsString.IDS_SHARED_REVIEW_SMB_NAME; }, getInitiateDefaultName: function() { return AnnotsString.IDS_SHARED_REVIEW_SMB_DEFAULT_NAME; }, getInitiateAddServer: function() { return AnnotsString.IDS_SHARED_REVIEW_SMB_ADD_SERVER; }, getInitiateDescription: function() { return SharedString("IDS_SHARED_REVIEW_SMB_DESCRIPTION" + WT); }, canInitiateWorkflow: function(cWorkflow) { return cWorkflow == "SharedReview" || cWorkflow == "FormDistribution"; }, getWorkflowInitiatorConfig: function() { var tipStr = (app.platform == "WIN" ? AnnotsString.IDS_SHARED_REVIEW_SMB_TIP : AnnotsString.IDS_SHARED_REVIEW_SMB_TIP_MAC); var result = { oConfig: { cSetting: "" }, oDialog: null, cVerifiedURL: null, getSetting: function() { return this.oConfig; }, initialize: function(dialog, next) { this.oDialog = dialog; if (this.data.oSavedSMBState) { this.setURL(dialog, this.data.oSavedSMBState.cURL); dialog.load({"stat": this.data.oSavedSMBState.cStatus}); this.cVerifiedURL = this.data.oSavedSMBState.cVerifiedURL; } else { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); } }, commit: function(dialog, next) { if (next) { var verified = true; var url = this.getServerURL(); if (url != this.cVerifiedURL) verified = this.verifyURL(url); if (verified) this.oConfig.cSetting = this.cVerifiedURL; // dialog.store()["surl"]; else DebugThrow (AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); } else { this.data.oSavedSMBState = {}; this.data.oSavedSMBState.cURL = dialog.store()["surl"]; this.data.oSavedSMBState.cVerifiedURL = this.cVerifiedURL; this.data.oSavedSMBState.cStatus = dialog.store()["stat"]; } }, getServerURL: function() { var url; var dlgData = this.oDialog.store(); url = ANPlatformPathToURL(dlgData["surl"]); // ensure the URL ends with a '/' if (url.length > 0 && url.substr(-1) != "/") url = url + "/"; return url; }, setURL: function(dialog, url) { dialog.load({ "surl": (ANSMBURLToPlatformPath(url)) }); }, setStatus: function(status) { var statusStr = AnnotsString.IDS_SHARED_REVIEW_SMB_STATUS; this.oDialog.load({ "stat": statusStr.replace(/{cStatus}/, status) }); this.oDialog.resize("stat"); }, // takes an SMB URL and verifies whether it is valid for a shared review by // verifying the following: // * a review folder can be created relative to the URL // * a file can be put to the newly created folder // * files can be enumerated in the folder // * the review folder (and its contents) can be deleted verifyURL: function(smbURL) { /* This function is not used anymore in the new Shared Review Wizard. If you start using it please ensure that URL is proparly escaped in uriEnumerateFiles, uriNormalize, uriDeleteFile methods as they will eventually unescape */ var verifyResult; var errorString; var folderURI; app.beginPriv(); folderURI = smbURL; if (folderURI && folderURI.length > 0) { // create a review folder this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE); DebugAlert("smbURL : " + smbURL); folderURI += "com.adobe.acrobat"; verifyResult = Collab.uriCreateFolder(folderURI); if (!verifyResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_FOLDER_CREATE_ERR; } // put a file to the review folder if (verifyResult) { var data = SOAP.streamFromString("Testing Writeablility"); var fileURI = folderURI + "/testfile.txt"; var deleteResult; verifyResult = Collab.uriPutData(fileURI, data); if (!verifyResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_FILE_WRITE_ERR.replace(/%url%/, fileURI); } } // enumerate files in the review folder if (verifyResult) { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE); var enumerator = Collab.uriEnumerateFiles(folderURI); do { fileURI = enumerator.uriNextFile(); if (fileURI) { deleteResult = Collab.uriDeleteFile(fileURI); if (!deleteResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_ENUM_FILE_ERR.replace(/%url%/, fileURI); verifyResult = false; break; } } } while (fileURI); } // delete the review folder if (verifyResult) { deleteResult = Collab.uriDeleteFolder(folderURI); if (!deleteResult) { errorString = AnnotsString.IDS_SHARED_REVIEW_SMB_DELETE_FOLDER_ERR.replace(/%url%/, folderURI); verifyResult = false; } } } else { // empty URL - report appropriate error verifyResult = false; errorString = AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID; } if (verifyResult) this.cVerifiedURL = Collab.uriNormalize(smbURL); app.endPriv(); this.setStatus(verifyResult ? AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED : errorString); return verifyResult; }, brws: function(dialog) { try { app.beginPriv(); var folderURI = Collab.browseForNetworkFolder(); DebugAlert("folderURI : " + folderURI); app.endPriv(); if (folderURI && folderURI.length > 0) { if (folderURI.charAt(folderURI.length - 1) != "/") folderURI += "/"; if (this.verifyURL(folderURI)) { this.setURL(dialog, this.cVerifiedURL); return; } } } catch (e) { if (e.message == "Volume Mount Exception") { var errMsg; switch (Number(e.errorCode)) { case 1: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR; break; case 3: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_MOUNT_ERROR; break; default: errMsg = AnnotsString.IDS_SHARED_REVIEW_VOLUME_ERROR; break; } app.beginPriv(); app.alert(errMsg); app.endPriv(); DebugThrow ("VolMountError"); } } }, vrfy: function(dialog) { var url = this.getServerURL(); if (this.verifyURL(url)) { this.setURL(dialog, this.cVerifiedURL); // set the URL since we may have normalized it } }, idle: function(dialog) { var url = dialog.store()["surl"]; var ok = false; // verify smb://{host}/{share} where {host} and {share} are not empty if (url.length > 6 && url.substr(0,6) == "smb://") { var pos = 6; // start beyond the scheme var searchPos; // scan past the host for (searchPos = pos ; searchPos < url.length ; searchPos++) if (url.charAt(searchPos) == '/') break; // verify we have an non-empty host (and still more to parse) if (searchPos > pos && searchPos < url.length) { searchPos++; // skip over the '/' for (pos = searchPos ; searchPos < url.length ; searchPos++) if (url.charAt(searchPos) == '/') break; // if we've gotten this far then we're OK if the share name is non-empty ok = (searchPos != pos); } } if (!ok && app.platform == "WIN") ok = (url.length >= 3 && url.substr(0,2) == "\\\\" && url.charAt(2) != '\\'); dialog.enable({next: ok}); }, description: [ { type: "view", elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SMB_INSTRUCTION, wrap_name: true, width: Collab.wizardWidth, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SMB_URL_PROMPT, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "edit_text", item_id: "surl", alignment: "align_fill", }, { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_SMB_BROWSE_BUTTON, item_id: "brws", }, ] }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_VALIDATE_BUTTON, item_id: "vrfy" }, { type: "static_text", wrap_name: true, width: Collab.wizardWidth, name: AnnotsString.IDS_SHARED_REVIEW_SMB_STATUS, item_id: "stat", }, ] }, ].concat(ANCreateTipElements(tipStr, Collab.wizardWidth)) } ] } ] }; return result; }, getWorkflowInitiatorSource: function(cReviewID, config) { var encURL = config.cSetting + encodeURIComponent(cReviewID) + "/"; return encURL; }, oTaskSet: { // TaskSet metadata cTitle: AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE, // Enumeration onBeginEnumeration: function(){}, onEndEnumeration: function(){}, onEnumerateFile: function(resource) {}, onEnumerateCollection: function(resource) {}, // Create Collection onCreateCollection: function(code) { this.cxt.handleSuccess(); }, onPutFile: function(code) { this.cxt.handleSuccess(); }, onError: function(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.cxt.handleFailure(e); }, aTasks: [ { // Create the review Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; var msg = AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY + cxt.data.server.Settings.cSetting; cxt.setTaskStatus(msg); var cURL = taskData.data.cSetting; cURL += (cURL.substr(-1) != "/" ? "/" : "") + encodeURIComponent(taskData.reviewID) + "/"; app.beginPriv(); // Fix for the bug 2650003:uriCreateFolder requires uri in escaped form var createResult = Collab.uriCreateFolder(encodeURIComponent(cURL)); app.endPriv(); if (createResult) cxt.handleSuccess(); else { var msg = AnnotsString.IDS_SHARED_REVIEW_SMB_CREATE_ERR.replace(/%url%/, cURL); cxt.handleFailure(msg); } }, onSuccess: function(cxt, taskData) {}, onFailure: function(cxt, taskData) {}, }, { // Create the attachments Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENT); var cURL = taskData.data.cSetting; cURL += (cURL.substr(-1) != "/" ? "/" : "") + encodeURIComponent(taskData.reviewID); cURL += "/attachments/"; app.beginPriv(); // Fix for the bug 2650003:uriCreateFolder requires uri in escaped form var createResult = Collab.uriCreateFolder(encodeURIComponent(cURL)); app.endPriv(); if (createResult) cxt.handleSuccess(); else { var msg = AnnotsString.IDS_SHARED_REVIEW_SMB_CREATE_ATTACH_ERR.replace(/%url%/, cURL); cxt.handleFailure(msg); } }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_DONE); }, onFailure: function(cxt, taskData) {}, }, ], data: {}, }, getWorkspaceCreator: function(reviewID, config) { // Set up the workspace based on the configuration this.oTaskSet.data = config; // See the comment in SharedReviewWebDAVInitiator.getWorkspaceCreator // for an explanation of why the following loop is needed. for (var i in config) { this.oTaskSet.data[i] = config[i]; } this.oTaskSet.reviewID = reviewID; return ANTrustPropagateAll(this.oTaskSet); } }; const SharedReviewSharepointInitiator= { getInitiateName: function() { return AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_NAME; }, getInitiateDefaultName: function() { return AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DEFAULT_NAME; }, getInitiateAddServer: function() { return AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_ADD_SERVER; }, getInitiateDescription: function() { return AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION; }, canInitiateWorkflow: function(cWorkflow) { return cWorkflow == "SharedReview" || cWorkflow == "FormDistribution"; }, getWorkflowInitiatorConfig: function() { if(this.reviewType == "FormDistribution") WT = "_FD"; var result = { oConfig: { cSetting: "", bUseWindowsIntegratedAuthentication: true, }, oDialog: null, sites: null, workspaces: null, workspaceURL: null, location: null, cVerifyURL: null, // URL to be verified cVerifiedURL: null, // URL that was verified bDoCommit: false, getSetting: function() { return this.oConfig; }, initialize: function(dialog, next) { this.oDialog = dialog; if (this.data.oSavedSharePointState) { this.setURL(dialog, this.data.oSavedSharePointState.cURL); dialog.load({"task": this.data.oSavedSharePointState.cStatus}); this.cVerifiedURL = this.data.oSavedSharePointState.cVerifiedURL; this.setLocation(this.data.oSavedSharePointState.cLocation); } else { this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN); this.setLocation(""); } this.loadWorkspaces(dialog, null); dialog.focus("surl"); }, setStatus: function(t) { var task = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE; this.oDialog.load({ "task": task.replace(/{cStatus}/, (t ? t : AnnotsString.IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN)) }); this.oDialog.resize("task"); }, setLocation: function(loc) { this.location = loc; this.oDialog.load({ "locn": this.location }); }, setURL: function(dialog, url) { dialog.load({ "surl": url }); }, commit: function(dialog, next) { if(next) { var url = this.getServerURL(); if (url != this.cVerifiedURL) { this.bDoCommit = true; this.vrfy(dialog); DebugThrow ("URL requires verification"); } this.oConfig.cSetting = url; } else { this.data.oSavedSharePointState = {}; this.data.oSavedSharePointState.cURL = dialog.store()["surl"]; this.data.oSavedSharePointState.cLocation = dialog.store()["locn"]; this.data.oSavedSharePointState.cVerifiedURL = this.cVerifiedURL; this.data.oSavedSharePointState.cStatus = dialog.store()["task"]; } }, idle: function(dialog) { var url = dialog.store().surl; var toEnable = { next: false, vrfy: false, scan: false }; if (url.match(/^http[s]?\:\/\/.+/) != null) { var listBox = dialog.store()["docl"]; for(var i in listBox) { if (listBox[i] > 0) { toEnable.next = toEnable.vrfy = true; break; } } toEnable.scan = true; } dialog.enable(toEnable); }, aStates: ["writeable", "enumerable", "removeable"], nState: 0, cFileURL: null, bFoundFile: false, workspaceURLS: {}, getServerURL: function() { var url; if (this.location && this.location.length > 0) url = this.location; else { var dlgData = this.oDialog.store(); url = dlgData["surl"]; } // ensure the URL ends with a '/' if (url.length > 0 && url.substr(-1) != "/") url = url + "/"; return url; }, // This function takes a URL whose path is not URL-encoded and returns // a URL with a URL-encoded path. Also, the caller can pass an optional // flag, bEnsureTrailingSlash, that controls whether to append a // trailing slash to the URL if none exists. // NOTE: the scheme, host and port of the original URL are not changed. encodeURL: function(url, bEnsureTrailingSlash) { if (url.length > 0) { var crackedURL = util.crackURL(url); var pathIndex = url.lastIndexOf(crackedURL.cPath); if (pathIndex >= 0) { url = url.substr(0, pathIndex) + escape(crackedURL.cPath); if (bEnsureTrailingSlash && url.substr(-1) != "/") url += "/"; } } return url; }, // verify that the server URL is a valid shared review location vrfy: function(dialog) { this.nState = 0; var serverURL = this.getServerURL(); if (serverURL.length > 0) { this.cVerifyURL = serverURL; this.cFileURL = this.cVerifyURL + "com.adobe.acrobat.sharepoint.writeability"; this.bFoundFile = false; this.oDialog.enable({"vrfy": false}); this.verifyNextState(); } else this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); }, // load a list of SharePoint workspaces into a list box loadWorkspaces: function(dialog) { if (this.sites) { this.workspaces = {} for (var i = 0; i < this.sites.length; i++) { // need to make the property value 1-based since the // list box negates it (i.e. makes it positive) when // its corresponding item is selected this.workspaces[this.sites[i].soapAttributes["Title"]] = -(i + 1); } dialog.load({"wksp": this.workspaces}); dialog.load({"docl": {}}); } }, loadDocumentLibraries: function(dialog, docLibs) { dialog.load({"docl": docLibs}); }, "docl": function(dialog) { var listBox = dialog.store()["docl"] for(var i in listBox) { if (listBox[i] > 0) { //var sep = (this.workspaceURL.length > 0 && this.workspaceURL.substr(-1) != "/" ? "/" : ""); this.setLocation(this.workspaceURLS[i]); break; } } }, "wksp": function(dialog) { this.workspaceURL = null var listBox = dialog.store()["wksp"] for(var i in listBox) { if (listBox[i] > 0) { dialog.load({ "locn": AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_LOADING_DOCLIBS }); var ns = "http://schemas.microsoft.com/sharepoint/soap/"; this.workspaceURL = this.sites[listBox[i] - 1].soapAttributes["Url"]; var url = CBEncodeURL(this.workspaceURL, true); var request = { cURL: url + "_vti_bin/Lists.asmx", oRequest: { GetListCollection : {} }, cAction: ns + "GetListCollection", bEncoded: false, cNamespace: ns, oAuthenticate: { UsePlatformAuth: true }, cResponseStyle: "Message" }; // send the request and process the response try { var response = SOAP.request(request); var docLibs = {} this.workspaceURLS = {}; var result = this.getSoapValue(response[0].soapValue, "GetListCollectionResult"); if (result) { var vlists = this.getSoapValue(result, "Lists"); var docLibs = {}; var libNum = 1; var defaultLib = ""; for (var j = 0 ; j < vlists.length ; j++) { var listProps = vlists[j].soapAttributes; if (listProps.BaseType == "1" && listProps.Hidden == "False") // Document Library and not hidden { docLibs[listProps.Title] = -1; // (libNum == 1 ? libNum : -libNum); if (libNum == 1) defaultLib = listProps.Title; // Determine the URL var oURL = util.crackURL(url); var portStr = ""; if(oURL.cScheme == "http" && oURL.nPort != 80) portStr = ":" + oURL.nPort; if(oURL.cScheme == "https" && oURL.nPort != 443) portStr = ":" + oURL.nPort; var cBaseURL = ""; if( oURL.nURLType == IPV6Type) { cBaseURL = oURL.cScheme + "://" + "[" + oURL.cHost + "]" + portStr; } else { cBaseURL = oURL.cScheme + "://" + oURL.cHost + portStr; } var cPath = listProps.DefaultViewUrl; if(cPath.match(/\/Forms\//)) cPath = cPath.substr(0, cPath.lastIndexOf("/Forms/")); else cPath = cPath.substr(0, cPath.lastIndexOf("/")); this.workspaceURLS[listProps.Title] = cBaseURL + cPath; libNum++; } } this.loadDocumentLibraries(dialog, docLibs); if (defaultLib.length > 0) this.setLocation(this.workspaceURLS[defaultLib]); else this.setLocation(url); } else { dialog.load({ "locn": this.location }); } } catch (e) { if (e.statusCode) { var msg = undefined; switch (e.statusCode) { case 401: case 403: msg = AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICT; break; case 404: msg = AnnotsString.IDS_SERVICE_MISSING; break; } if (msg) { app.beginPriv(); app.alert({cMsg: msg, nIcon: 0}); app.endPriv(); } } // Bugfix #1348282 -- clear the list dialog.load({"docl": []}); } break; } } }, // Searches an array of soapValues, each with the following object format: {soapName, soapQName, soapValue}, // looking for the first one whose soapName property ends with the given name parameter. If a matching // soapValue is found, the value of its soapValue property is returned. If no matching soapValue is found // then undefined is returned. getSoapValue: function(soapValues, name) { for (var i = 0 ; i < soapValues.length ; i++) { var value = soapValues[i]; if (value["soapName"] && value["soapValue"]) { // poor man's endsWith() var index = value["soapName"].lastIndexOf(name); if (index >= 0 && name.length == value["soapName"].length - index) return value["soapValue"]; } } return undefined; }, // query a SharePoint server for the workspaces it is hosting scan: function(dialog) { var result = []; var ns = "http://schemas.microsoft.com/sharepoint/soap/"; try { var url = CBEncodeURL(dialog.store()["surl"], true); if(url.length > 0 && url.charAt(url.length - 1) != "/") url += "/"; // build the request object var request = { cURL: url + "_vti_bin/Webs.asmx", oRequest: { GetWebCollection : {} }, cAction: ns + "GetWebCollection", bEncoded: false, cNamespace: ns, oAuthenticate: { UsePlatformAuth: true }, cResponseStyle: "Message" }; // send the request and process the response var response = SOAP.request(request); this.sites = response[0].soapValue[0].soapValue[0].soapValue; this.loadWorkspaces(dialog); } catch(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT); app.endPriv(); this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_INVALID); //console.println(e); //console.println(e.stack); } }, verifyNextState: function() { var state = this.aStates[this.nState]; var task = ""; switch(state) { case "writeable": var data = SOAP.streamFromString("Testing Writeablility"); Net.HTTP.WebDAV.PutFile(this.cFileURL, data, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE; break; case "enumerable": Net.HTTP.WebDAV.EnumerateCollection(this.cVerifyURL, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_READ; break; case "removeable": Net.HTTP.WebDAV.DeleteFile(this.cFileURL, this, { UsePlatformAuth: true }); task = AnnotsString.IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE; break; } this.setStatus(task); }, onError: function(e) { app.beginPriv(); app.alert(AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICT); app.endPriv(); this.onVerifyFailure(e.text); }, onVerifySuccess: function() { this.nState++; if(this.nState >= this.aStates.length) { this.cVerifiedURL = this.cVerifyURL; this.setStatus(AnnotsString.IDS_SHARED_REVIEW_NETWORK_VERIFIED); this.oDialog.enable({"vrfy": true}); if(this.bDoCommit) { this.commit(this.oDialog, true); this.oDialog.end("fnsh"); } } else this.verifyNextState(); }, onVerifyFailure: function(msg) { this.setStatus(msg); this.oDialog.enable({"vrfy": true}); }, onEnumerateFile: function(resource) { var state = this.aStates[this.nState]; if(state == "enumerable" && !this.bFoundFile) { var oCheckURL = util.crackURL(resource.url); var oMatchURL = util.crackURL(unescape(this.cFileURL)); this.bFoundFile = (oCheckURL.cPath == oMatchURL.cPath); } }, onEnumerateEnd: function(resource) { if(this.bFoundFile) this.onVerifySuccess(); else this.onVerifyFailure(); }, onPutFile: function(status) { this.onVerifySuccess(); }, onDeleteFile: function(status) { this.onVerifySuccess(); }, description: [ { type: "view", alignment: "align_fill", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTION, wrap_name: true, width: Collab.wizardWidth, }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_ENTER_URL, width: Collab.wizardWidth, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "edit_text", item_id: "surl", width: 271 }, { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES, alignment: "align_bottom", item_id: "scan" } ] }, { type: "static_text", name: SharedString(IDS_SHARED_REVIEW_SHAREPOINT_URL_HELP + WT), wrap_name: true, width: Collab.wizardWidth, }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "view", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_WORKSPACES, font: "dialog", bold: true, }, { type: "list_box", item_id: "wksp", height: 100, width: 185, } ] }, { type: "view", elements: [ { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_DOCLIBS, font: "dialog", bold: true, }, { type: "list_box", item_id: "docl", height: 100, width: 185, }, ] } ] }, { type: "static_text", name: AnnotsString.IDS_SHARED_REVIEW_SHAREPOINT_LOCATION, }, { type: "static_text", width: Collab.wizardWidth, item_id: "locn", }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_SHARED_REVIEW_VALIDATE_BUTTON, item_id: "vrfy" }, { type: "static_text", alignment: "align_fill", item_id: "task", }, ] }, ] } ] }; return result; }, getWorkflowInitiatorSource: function(cReviewID, config) { var encURL = config.cSetting + encodeURIComponent(cReviewID) + "/"; return encURL; }, // SharePoint wizard completion task set oTaskSet: { // TaskSet metadata cTitle: AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE, // Enumeration onBeginEnumeration: function(){}, onEndEnumeration: function(){}, onEnumerateFile: function(resource) {}, onEnumerateCollection: function(resource) {}, // Create Collection onCreateCollection: function(code) { this.cxt.handleSuccess(); }, onPutFile: function(code) { this.cxt.handleSuccess(); }, onError: function(e) { this.cxt.handleFailure(e); }, // SharePoint wizard completion tasks aTasks: [ { // Create the review Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORY + cxt.data.server.Settings.cSetting); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, { UsePlatformAuth: true }); }, onSuccess: function(cxt, taskData) {}, onFailure: function(cxt, taskData) {}, }, { // Create the attachment Directory runTask: function(cxt, taskData) { taskData.cxt = cxt; cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENT); var cURL = taskData.data.cSetting; cURL += taskData.reviewID; cURL += "/attachments/"; app.beginPriv(); cURL = Collab.uriEncode(cURL); app.endPriv(); Net.HTTP.WebDAV.CreateCollection(cURL, taskData, { UsePlatformAuth: true }); }, onSuccess: function(cxt, taskData) { cxt.setTaskStatus(AnnotsString.IDS_DONE); }, onFailure: function(cxt, taskData) {}, }, ], data: {}, }, runWorkflowInitiator: function(reviewID, config) { var result = false; try { // Set up the workspace based on the configuration this.oTaskSet.data = config; this.oTaskSet.reviewID = reviewID; result = Net.HTTP.runTaskSet(this.oTaskSet); } catch(e) { //console.println(e); //console.println(e.stack); } return result; }, getWorkspaceCreator: function(reviewID, config) { // Set up the workspace based on the configuration this.oTaskSet.data = config; // See the comment in SharedReviewWebDAVInitiator.getWorkspaceCreator // for an explanation of why the following loop is needed. for (var i in config) { this.oTaskSet.data[i] = config[i]; } this.oTaskSet.reviewID = reviewID; return ANTrustPropagateAll(this.oTaskSet); } }; app.beginPriv(); RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/WebDAV", SharedReviewWebDAVInitiator); //if (app.platform == "WIN") { RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint", SharedReviewSharepointInitiator); } if (app.platform == "MAC") { //dikumar: Removing support for initiating a shared review from mac using idisk //RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/iDisk", // SharedReviewAppleiDiskInitiator); } RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/SMB", SharedReviewSMBInitiator); RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com", SharedReviewDocCenterInitiator); app.endPriv(); } function CBFreezeFunc(func, substs) { var funcSource = func.toSource(); for(var i in substs) { var value = substs[i]; var valSrc; if(typeof value != "undefined") valSrc = value.toSource(); funcSource = funcSource.replace(new RegExp('"\\{' + i + '\\}"'), valSrc); } return funcSource; } /* // Commenting ANSendSharedFile as this empty method is not used by anyone function ANSendSharedFile (doc) { } */ // called at the beginning of a shared review initiation ANSendForSharedReview = app.trustedFunction(function(doc, requiredReviewers, optionalReviewers) { if(doc && Collab.isDocDirty(doc)) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SEND_FOR_REVIEW_DOC_DIRTY, oDoc: doc}); app.endPriv(); return 0; } if (doc && Collab.isInvalidSaveLocation(doc)) { app.beginPriv(); app.alert({ cMsg: AnnotsString.IDS_SEND_FOR_REVIEW_SAVE_OTHER, oDoc: doc }); app.endPriv(); return 0; } var bIsValid = ANValidateIdentity(); var data = {}; data.docsOpenedByWizard = []; if(requiredReviewers) { data.reqR = SplitAddrs(requiredReviewers); } if(optionalReviewers) { data.optR = SplitAddrs(optionalReviewers); } if(doc && doc.path) { data.docPath = doc.path; data.doc = doc; } data.reviewID = Collab.createUniqueDocID(); app.beginPriv(); data.servers = []; data.drivers = {}; //If we are here that means it is either AcroPro, AcroStandard or Acro Apex. //We don't have UB in standard or 'Exchange' data.readerEnable = (app.viewerType != "Exchange") for(var i in Collab.drivers) { var driver = Collab.drivers[i]; if(driver.canInitiateWorkflow("SharedReview")) { if (!driver.isDocCenterWorkflow()) { data.servers[data.servers.length] = driver; data.drivers[driver.driverURL] = driver; //console.println("$$$> driver.driverURL = " + driver.driverURL); } else { data.dcDriver = driver; } } } app.endPriv(); //Run the shared review wizard //Start the payload for shared review var logEventParams = {}; var startPayloadParams = {}; var addStringToPayloadParams = {}; startPayloadParams.cat = "SharedReview"; startPayloadParams.subcat = "SharedReviewPayload"; startPayloadParams.evnt = "SharedReviewPayload"; app.beginPriv(); Collab.AVUMStartPayloadWrapper(startPayloadParams); app.endPriv(); CBRunSharedReviewWizard(data, 0); app.beginPriv(); Collab.removeDocsOpenedByWizard(); app.endPriv(); if(data.result == "fnsh") { CBSharedReviewComplete(data, 0); } app.beginPriv(); Collab.AVUMEndPayloadWrapper(); app.endPriv(); //We want to close all the docs opened by wizard on cancel. On finish, we want to close all the docs for which workflow has not completed. if((data.result == "cncl" || data.result == "fnsh") && data.docsOpenedByWizard.length > 0) { for(var i in data.docsOpenedByWizard) { var doc = data.docsOpenedByWizard[i]; app.beginPriv(); if(data.result == "cncl" || doc != data.doc) doc.closeDoc({bNoSave: true, rsvd1: true}); app.endPriv(); } } }) /** Called when the user click at add reviewers or change deadline link in the tracker Following is the list of elements required for invoking the email step reviewID int ReviewID for extracting the shared review information. action enum to specify action in IW like 'Invite new Recipients', 'change deadline' the values assumed for enums are 'Invite new Recipients' = 1 'change deadline' = 2 */ ANRunSharedReviewEmailStep = app.trustedFunction(function(reviewID, action) { var data = {}; data.reviewType = "SharedReviewEmail"; WT = "_SR"; //If we are here that means it is either AcroPro, AcroStandard or Acro Apex. //We don't have UB in standard or 'Exchange' data.readerEnable = (app.viewerType != "Exchange") if (data.readerEnable) { data.UB = "_UB"; UB = "_UB"; } else { data.UB = "_NOUB"; UB = "_NOUB"; } var step = 0; DebugAlert("Start ANRunSharedReviewEmailStep "); app.beginPriv(); var reviewInfo = Collab.getReviewInfo(reviewID); app.endPriv(); data.reviewID = reviewID; data.action = action; data.cannedMsg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL_SR; data.cannedSubj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_SR; data.deadline = reviewInfo.cDeadline; data.internalDeadline = reviewInfo.cInternalDeadline; data.accessLevel = reviewInfo.cAccessLevel; if(action == "ChangeDeadline") { DebugAlert("action "+ action + data.action) data.reqR = reviewInfo.cRequiredReviewers.split(";"); data.optR = reviewInfo.cOptionalReviewers.split(";"); data.cannedMsg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SR; data.cannedSubj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_SUBJ_SR; } else { data.reqR = ""; data.optR = ""; } app.beginPriv(); var localPath = Collab.convertPlatformPathToDIPath(reviewInfo.cLocalPath); data.doc = { documentFileName : localPath.substring(localPath.lastIndexOf('/') + 1), path : localPath }; app.endPriv(); data.docPath = data.doc.path data.cDocumentName = data.doc.documentFileName; data.cDocumentPath = data.doc.path; data.distributionURL = reviewInfo.cReviewURL; DebugAlert("data.distributionURL 1" + data.distributionURL); data.distributionURL = data.distributionURL.substring(0, data.distributionURL.lastIndexOf('/')); if(data.cDocumentName == "") data.cDocumentName = data.distributionURL.substring(data.distributionURL.lastIndexOf('/') + 1, data.distributionURL.lastIndexOf('_') - 1 ); DebugAlert("data.cDocumentName" + data.cDocumentName); DebugAlert("data.distributionURL 2" + data.distributionURL); data.distributionURL = data.distributionURL.substring(0, data.distributionURL.lastIndexOf('/') + 1); DebugAlert("data.distributionURL 3" + data.distributionURL); //data.distributionURL += data.cDocumentName; data.server = { URL : reviewInfo.cDriverURI, DistMethod : "", Settings: {cSetting : data.distributionURL} }; data.server.DistMethod = reviewInfo.cDistributionMethod; app.beginPriv(); var bIsAcrobatDotCom = Collab.isDocCenterURL(reviewInfo.cReviewURL); app.endPriv(); if(bIsAcrobatDotCom) data.UseDocumentCenter = true; else data.UseDocumentCenter = false; if(action == "ChangeDeadline") { if(data.deadline == "") IWEmailSteps[0].title = AnnotsString.IDS_TRACKER_ACTION_ADD_DEADLINE; else IWEmailSteps[0].title = AnnotsString.IDS_TRACKER_ACTION_CHANGE_DEADLINE; } else IWEmailSteps[0].title = AnnotsString.IDS_TRACKER_ACTION_ADD_REVIEWERS; var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_SR, steps: IWEmailSteps, }); app.beginPriv(); data.servers = []; data.drivers = {}; data.readerEnable = true; for(var i in Collab.drivers) { var driver = Collab.drivers[i]; if(driver.canInitiateWorkflow("SharedReview")) { data.servers[data.servers.length] = driver; data.drivers[driver.driverURL] = driver; //console.println("$$$> driver.driverURL = " + driver.driverURL); } } // ANDumpObj(data.server); app.endPriv(); var result = {}; if(data.UseDocumentCenter) { app.beginPriv(); data.docCtrURL = Collab.docCenterURL + "/" + data.cDocumentName; app.endPriv(); result = ANDocCenterLoginForAddReviewers(); if(result.response == true) { data.swConn = result.swConn; data.user = result.Username; } else { var params = { code: 1, }; return params; } } DebugAlert("Calling the commit work function"); DistributionServerStepCommitWork(data); CBRunSimpleWizNew(wiz, 0, 0, data); DebugAlert("returned from wizard" + data.result); if(data.result == "fnsh") { //Remove the duplicate names in the case of add reviewers DebugAlert("calling filterAddrs"); var oldto = reviewInfo.cRequiredReviewers.split(";"); var oldcc = reviewInfo.cOptionalReviewers.split(";"); var newto = []; var newcc = []; for(i in data.reqR) { newto[i] = data.reqR[i]; } for(i in data.optR) { newcc[i] = data.optR[i]; } DebugAlert(oldto); DebugAlert(oldcc); filterAddrs(oldto, oldcc, reviewInfo.cInitiatorEmail, newto, newcc); DebugAlert("after returning new to"+newto); DebugAlert("afterreturning new cc"+newcc); //we need to send the attachement in the changed deadline case in which //new reviewers have been added by the user. if(newto.length > 0 || newcc.length > 0) data.sendAttachment = true; var codeval = 1; var internalDeadline = reviewInfo.cInternalDeadline; //send the email only if the distribution method is not MANUAL if(data.distributionMethod == "UPLOAD" || data.distributionMethod == "EMAIL" || data.distributionMethod == "MANUAL") { //send the email only if anything has changed if(newto.length == 0 && newcc.length == 0 && data.internalDeadline == internalDeadline) codeval = 0; else { if(data.distributionMethod == "EMAIL" && data.sendAttachment) { var params = { cReviewID: reviewID, }; app.beginPriv(); Collab.takeOwnershipAndPublishComments(params); app.endPriv(); } CBSharedReviewComplete(data, 0); } } invitees = newto.join(";"); cc = newcc.join(";"); DebugAlert("invitees + cc "+ invitees + cc); var params = { newTo : invitees, newCc: cc, deadline : data.internalDeadline, code: codeval, }; DebugAlert("end link task complete"); return params; } else { var params = { code: codeval, }; return params; } }) // called at the beginning of a form distribution initiation ANSendForFormDistribution = app.trustedFunction(function(props) { var data = {}; var step = 0; data.docsOpenedByWizard = []; WT = "_FD"; data.reviewType = "FormDistribution"; //This is specifically to toggle between strings in the shared review wizard. //UB or NOUB does not affect the forms wizard but if later we need to have different strings then this can be used. data.UB = ""; UB = ""; if(props) { if(props.action == 1) //add recipients case { data.reviewType = "FormDistributionEmail"; data.action = "AddReviewers"; data.cannedMsg = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL_FD; data.cannedSubj = AnnotsString.IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_FD; data.reqR = ""; data.optR = ""; if(props.originalPath) { data.doc = { documentFileName : "", path : props.originalPath,}; app.beginPriv(); data.docPath = Collab.convertDIPathToPlatformPath(data.doc.path); app.endPriv(); var oldPath = data.doc.path; DebugAlert("oldPath"+oldPath); data.doc.documentFileName = oldPath.substring(oldPath.lastIndexOf('/') + 1); var oldName = data.doc.documentFileName; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); DebugAlert("newPath"+newPath); data.cDocumentName = props.savePath.substring(props.savePath.lastIndexOf('/') + 1); data.cDocumentPath = props.savePath; DebugAlert("1" + data.cDocumentPath +"1" + data.cDocumentName); } if(props.initiationURL) { data.initiationURL = props.initiationURL; data.initiationURL += data.cDocumentName; } else data.initiationURL = ""; app.beginPriv(); data.server = Collab.getEmailDistributionReviewServer("FormDistribution"); app.endPriv(); DebugAlert(" props.driver :" + props.driver); DebugAlert(" props.initiationURL" + props.initiationURL); if(props.driver) { data.server.URL = props.driver; } if(props.initiationURL) data.server.Settings.cSetting = props.initiationURL; if(props.distributionMethod) { switch(props.distributionMethod) { case 1: data.server.DistMethod = "EMAIL"; break; case 2: data.server.DistMethod = "UPLOAD"; break; case 3: data.server.DistMethod = "MANUAL"; break; } } else data.distributionMethod = ""; // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, steps: IWEmailFormSteps, }); app.beginPriv(); data.servers = []; data.drivers = {}; data.readerEnable = true; // TODO: Should be a user pref for(var i in Collab.drivers) { var driver = Collab.drivers[i]; if(driver.canInitiateWorkflow("FormDistribution")) { if (!driver.isDocCenterWorkflow() ) { data.servers[data.servers.length] = driver; data.drivers[driver.driverURL] = driver; //console.println("$$$> driver.driverURL = " + driver.driverURL); } else { data.dcDriver = driver; } } } app.endPriv(); DistributionServerStepCommitWork(data); CBRunFormDistributionWizardEmail(data, step); if(data.result == "fnsh") { return CBFormDistributionEmailComplete(data); } else return 0; } //jumping in to step after getting the submit button //it's obvious that the driver is email because this is the only case (Form Distribution via email) //which requires submit button else if(props.action == 2) { data.server.URL = props.driver; data.doc = { documentFileName : "", path : props.originalPath,}; app.beginPriv(); data.docPath = Collab.convertDIPathToPlatformPath(data.doc.path); app.endPriv(); var oldPath = data.doc.path; DebugAlert("oldPath"+oldPath); data.doc.documentFileName = oldPath.substring(oldPath.lastIndexOf('/') + 1); var oldName = data.doc.documentFileName; var newPath = oldPath.substring(0, oldPath.lastIndexOf('/') + 1); DebugAlert("newPath"+newPath); data.cDocumentName = oldName.replace(/.pdf$/i, "") + SharedString("IDS_SHARED_REVIEW_FILE_EXT" + WT) + ".pdf"; data.cDocumentPath = newPath + data.cDocumentName; DebugAlert("1" + data.cDocumentPath +"1" + data.cDocumentName); //submit button present in the form file step = 5; } } data.reviewID = Collab.createUniqueDocID(); app.beginPriv(); data.servers = []; data.readerEnable = true; // TODO: Should be a user pref data.selectFile = props.selectFile; if(props && props.driver != "urn://ns.adobe.com/Collaboration/Forms/Email") { data.drivers = {}; for(var i in Collab.drivers) { var driver = Collab.drivers[i]; if(driver.canInitiateWorkflow("FormDistribution")) { if (!driver.isDocCenterWorkflow() ) { data.servers[data.servers.length] = driver; data.drivers[driver.driverURL] = driver; //console.println("$$$> driver.driverURL = " + driver.driverURL); } else { data.dcDriver = driver; } } } } app.endPriv(); var logEventParams = {}; var startPayloadParams = {}; var addStringToPayloadParams = {}; startPayloadParams.cat = "FormDistribution"; startPayloadParams.subcat = "FormDistributionPayload"; startPayloadParams.evnt = "FormDistributionPayload"; app.beginPriv(); Collab.AVUMStartPayloadWrapper(startPayloadParams); app.endPriv(); CBRunFormDistributionWizard(data, step); DebugAlert("data.IWStatus " + data.IWStatus); var retVal; if(data.result == "fnsh" || data.placeSubmitButton == true) { retVal = CBFormDistributionComplete(data); } else if(data.IWStatus == 3 || data.IWStatus == 4) { retVal = { IWStatus: data.IWStatus, originalPath: data.docPath, }; } app.beginPriv(); Collab.AVUMEndPayloadWrapper(); app.endPriv(); //We want to close all the docs opened by wizard on cancel. On finish, we want to close all the docs for which workflow has not completed. if((data.result == "cncl" || data.result == "fnsh" || data.IWStatus == 3 || data.IWStatus == 4) && data.docsOpenedByWizard.length > 0) { for(var i in data.docsOpenedByWizard) { var doc = data.docsOpenedByWizard[i]; app.beginPriv(); if(data.result == "cncl" || doc != data.doc) doc.closeDoc({bNoSave: true, rsvd1: true}); app.endPriv(); } } return retVal; }) function CBRunFormDistributionWizardEmail(data, startStep) { DebugAlert("CBFormDistributionWizard"); // simply an array of steps var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD, steps: IWEmailFormSteps, }); DebugAlert("calling cbrunsimplewiznew from wizemail") return CBRunSimpleWizNew(wiz, 0, 0, data); } /* errorType: 1: unsupported_file_type only 2: out_of_space error only 3: random error only 4: unsupported_file_type and out_of_space errors 5: out_of_space and random error 6: unsupported_file_type and random error 7: unsupported_file_type, out_of_space, random error */ function IWUploadFileFailedDialog (data, filesFailed_Unsupported, fileFailed_OutOfSpace, filesFailed_Unknown, bAllFailed) { var errorType = 0; if ((filesFailed_Unsupported.length > 0) && (fileFailed_OutOfSpace.length == 0) && (filesFailed_Unknown.length == 0) ) errorType = 1 else if ((filesFailed_Unsupported.length == 0) && (fileFailed_OutOfSpace.length > 0) && (filesFailed_Unknown.length == 0) ) errorType = 2 else if ((filesFailed_Unsupported.length == 0) && (fileFailed_OutOfSpace.length == 0) && (filesFailed_Unknown.length > 0) ) errorType = 3 else if ((filesFailed_Unsupported.length > 0) && (fileFailed_OutOfSpace.length > 0) && (filesFailed_Unknown.length == 0) ) errorType = 4 else if ((filesFailed_Unsupported.length == 0) && (fileFailed_OutOfSpace.length > 0) && (filesFailed_Unknown.length > 0) ) errorType = 5 else if ((filesFailed_Unsupported.length > 0) && (fileFailed_OutOfSpace.length == 0) && (filesFailed_Unknown.length > 0) ) errorType = 6 else if ((filesFailed_Unsupported.length > 0) && (fileFailed_OutOfSpace.length > 0) && (filesFailed_Unknown.length > 0) ) errorType = 7; var description = { initialize: function(dialog) { var toShow = {}; var toLoad = {}; var txt0 = ""; var params = { "list": { aColumns: [ { Name: "FileName", UI: AnnotsString.IDS_SAHRE_FILE_ERROR_DIALOG_MCLV_COL1, width: 0.6 }, { Name: "Error", UI: AnnotsString.IDS_SAHRE_FILE_ERROR_DIALOG_MCLV_COL2, width: 0.4 }, ], aRows: [] }, }; //Hide both the links and enable them when required toShow.lnk1 = false; toShow.lnk2 = false; //Set the top message and the link text based on the error type if (errorType == 1)//1: unsupported_file_type only { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_UNSUPPORTED_FILE_TYPE_ONLY_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_UNSUPPORTED_FILE_TYPE_ONLY) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG; } else if (errorType == 2)//2: out_of_space error only { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLY_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLY) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_ERROR_OUT_OF_SPACE; } else if (errorType == 3 )//3: random error only { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_UNKNOWN_ONLY_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_UNKNOWN_ONLY) toLoad.txt0 = txt0; } else if (errorType == 4)//4: unsupported_file_type and out_of_space errors { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES; toShow.lnk2 = true; toLoad.lnk2 = AnnotsString.IDS_SHARE_FILE_ERROR_OUT_OF_SPACE; } else if (errorType == 5)//5: out_of_space and random error { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_ERROR_OUT_OF_SPACE; } else if (errorType == 6)//6: unsupported_file_type and random error { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG; } else if (errorType == 7)//7: unsupported_file_type, out_of_space, random error { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL) toLoad.txt0 = txt0; toShow.lnk1 = true; toLoad.lnk1 = AnnotsString.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG; toShow.lnk2 = true; toLoad.lnk2 = AnnotsString.IDS_SHARE_FILE_ERROR_OUT_OF_SPACE; } else //type = something else implies some random error { txt0 = bAllFailed ? (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED) : (AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL) toLoad.txt0 = txt0; } //Fill the mclv with the filename and the error reason for (var i in filesFailed_Unsupported) { var a_row = { FileName: filesFailed_Unsupported[i], Error: AnnotsString.IDS_SHARE_FILE_ERROR_UNSUPPORTED_FILE_TYPE, }; params.list.aRows[params.list.aRows.length] = a_row; } for (var i in fileFailed_OutOfSpace) { var a_row = { FileName: fileFailed_OutOfSpace[i], Error: AnnotsString.IDS_SHARE_FILE_ERROR_OUT_OF_SPACE, }; params.list.aRows[params.list.aRows.length] = a_row; } for (var i in filesFailed_Unknown) { var a_row = { FileName: filesFailed_Unknown[i], Error: AnnotsString.IDS_SHARE_FILE_ERROR_UNKNOWN, }; params.list.aRows[params.list.aRows.length] = a_row; } dialog.load(params); dialog.load(toLoad); dialog.visible(toShow); }, commit: function(dialog) { }, idle: function(dialog) { }, lnk1: function(dialog) { var url = ""; if ((errorType == 2)||(errorType == 5)) { url = AnnotsString.IDS_SHARE_FILE_OUT_OF_SPACE_LEARN_MORE_URL; } else if ((errorType == 1)||(errorType == 4)||(errorType == 6)||(errorType == 7)) { url = AnnotsString.IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES_URL; } app.launchURL(url, true); }, lnk2: function(dialog) { var url = ""; if ((errorType == 4)||(errorType == 7)) { url = AnnotsString.IDS_SHARE_FILE_OUT_OF_SPACE_LEARN_MORE_URL; } else { url = ""; } app.launchURL(url, true); }, description: { name: SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE"+WT), align_children: "align_left", alignment: "align_fill", margin_width: 0, margin_height: 0, elements: [ { type:"group", elements: [ { type: "view", align_children: "align_left", alignment: "align_fill", item_id: "mgrp", back_color: "dialogBackground", gradient_direction: "topToBottom", gradient_type: "darkToLight", margin_width: Collab.wizardMarginWidth, margin_height: Collab.wizardMarginWidth, elements: [ { type: "static_text", width: 450, wrap_name: true, name: AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLY, item_id: "txt0", }, { type: "mclv", item_id: "list", alignment: "align_fill", height: 170, width: 450, }, { type: "link_text", name: AnnotsString.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG, item_id: "lnk1", alignment: "align_fill", }, { type: "link_text", name: AnnotsString.IDS_SHARE_FILE_LINK_OUT_OF_SPACE_MSG, item_id: "lnk2", alignment: "align_fill", }, { type: "ok", } ] } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; }; IWShareFileConfirmDialog = function(msg1, msg2, fileLink) { var dialogData = {}; dialogData.msg1 = msg1; dialogData.msg2 = msg2; dialogData.link = fileLink; //app.alert(dialogData.msg1); var description = { initialize: function(dialog) { var toLoad = {} toLoad.msg1 = dialogData.msg1; toLoad.link = dialogData.msg2; dialog.load(toLoad); }, idle: function(dialog) { // doing nothing here return; }, commit: function(dialog) { }, "link": function(dialog) { app.launchURL(dialogData.link, true); }, description: { align_children: "align_left", width: 400, alignment: "align_fill", elements: [ { type:"group", alignment: "align_fill", elements: [ { type: "static_text", item_id: "msg1", width: 400, }, { type: "link_text", name: "", alignment: "align_fill", item_id: "link", }, { type: "ok", } ] } ] } }; app.beginPriv(); description = ANTrustPropagateAll(description); app.endPriv(); return description; } /* * doc: if a doc is opened its object is passed in * type: 0 for share file * 1 for upload file */ ANShareFile = app.trustedFunction(function(props) { var doc = props.doc; var type = props.type; if(doc && Collab.isDocDirty(doc)) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_SEND_FOR_COLLABORATION_DOC_DIRTY, oDoc: doc}); app.endPriv(); return 0; } var data = {}; if(doc && doc.path) { data.docPath = doc.path; data.docName = data.docPath.substring(data.docPath.lastIndexOf('/') + 1, data.docPath.length); data.doc = doc; } data.type = type; // Run the wizard CBRunShareFileWizard(data, 0); if(data.result == "fnsh") { if (data.swConn) { CBShareFileComplete(data); var initResult = data.initResult; var bErrorOccured = false; var bAllFailed = true; for (var i in initResult.props.filesToUpload) { if (initResult.props.filesToUpload[i].uploadResult != 0) bErrorOccured = true; else { if (bAllFailed) bAllFailed = false; } } //if everything went fine, show the confirmation dialog and the bezel if (!bErrorOccured) { var bezelMessage = ""; var bezelLinkMessage = ""; var uploadPathName = ""; if (data.docList.length == 1) { bezelMessage = SharedString("IDS_SHARE_FILE_BEZEL_SINGLE_FILE" + WT) bezelLinkMessage = AnnotsString.IDS_SHARE_FILE_BEZEL_SINGLE_FILE_DOC_CENTER_LINK; //use the home URL as link even when a single file is uploaded. //uploadPathName = initResult["props"]["uploadPathName"]["DIText"]; } else { bezelMessage = SharedString("IDS_SHARE_FILE_BEZEL_MULTIPLE_FILES" + WT) bezelMessage= bezelMessage.replace(/%cNum%/, data.docList.length); bezelLinkMessage = AnnotsString.IDS_SHARE_FILE_BEZEL_MULTIPLE_FILES_DOC_CENTER_LINK_; } uploadPathName = AnnotsString.IDS_SHARE_FILE_VIEW_MY_FILES; DebugAlert("Workflow initiation succeeded"); DebugAlert("Workflow file URL: " + initResult["props"]["uploadPathName"]["DIText"]); DebugPrintln("Workflow file URL: " + initResult["props"]["uploadPathName"]["DIText"]); var props = {}; props = { bezelMessage: bezelMessage, bezelLinkMessage: bezelLinkMessage, uploadPathName: uploadPathName, } //1. If no document is opened, we need to show the confirmation dialog //2. else if the active document is a portfolio, then also show the confirmation dialog //3. else show the bezel var bShowConfirmationDialog = false; //1. If no document is opened, we need to show the confirmation dialog app.beginPriv(); var docs = app.activeDocs; app.endPriv(); if (docs.length == 0) bShowConfirmationDialog = true; else { //2. if the active document is a portfolio, then also show the confirmation dialog app.beginPriv(); var doc = Collab.GetActiveDocIW(); app.endPriv(); if (doc.isInCollection) bShowConfirmationDialog = true; } if (bShowConfirmationDialog)//show the confirmation dialog { var desc = IWShareFileConfirmDialog(props.bezelMessage, props.bezelLinkMessage, props.uploadPathName); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); } else //3. show the bezel { app.beginPriv(); Collab.shareFileBezel(props); app.endPriv(); } } else { var filesFailed_Unsupported = []; var fileFailed_OutOfSpace = []; var filesFailed_Unknown = []; for (var i in initResult.props.filesToUpload) { if (initResult.props.filesToUpload[i].uploadResult == 412) //unsupported file type { var filePath = data.filesToUpload[i].localPath; var fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length); filesFailed_Unsupported[filesFailed_Unsupported.length] = fileName; } else if (initResult.props.filesToUpload[i].uploadResult == 403) { var filePath = data.filesToUpload[i].localPath; var fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length); fileFailed_OutOfSpace[fileFailed_OutOfSpace.length] = fileName; } else if (initResult.props.filesToUpload[i].uploadResult != 0) { var filePath = data.filesToUpload[i].localPath; var fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length); filesFailed_Unknown[filesFailed_Unknown.length] = fileName; } } DebugPrintln("The following files failed to upload"); ANDumpObj(filesFailed_Unsupported); ANDumpObj(fileFailed_OutOfSpace); ANDumpObj(filesFailed_Unknown); var desc = IWUploadFileFailedDialog(this.data, filesFailed_Unsupported, fileFailed_OutOfSpace, filesFailed_Unknown, bAllFailed); app.beginPriv(); app.execDialog(desc); app.endPriv(); DebugAlert("Workflow initiation failed: " + initResult["errorMessage"]); DebugPrintln("Workflow initiation failed: " + initResult["errorMessage"]); } app.beginPriv(); data.swConn.disconnect(); app.endPriv(); } else { //TODO: dikumar, handle this gracefully. app.alert("\nERROR: Unable to establish connection with Acrobat.com"); } } }) CBShareFileComplete = function(data) { var driver = "urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.com"; var maxStr = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE.replace(/{cStatus}/, AnnotsString.IDS_SHARED_REVIEW_COMPLETE_ERROR.replace(/%error%/, AnnotsString.IDS_NETWORK_NO_CONNECT)); app.beginPriv(); var progressInfo = Collab.getProgressInfo(); app.endPriv(); var dialog = { oDialog: null, nCurrentTask: 0, oDriver: driver, oProgressInfo: progressInfo, data: data, aCompleteTasks: [], oShareFileTasks: { // Create the review Directory runTask: function(cxt) { try { var localDiPaths = []; cxt.setTaskStatus(AnnotsString.IDS_SHAREFILE_SING_PROGRESS); // Conver the docList from platform to dipaths app.beginPriv(); for (var i in data.docList) localDiPaths[localDiPaths.length] = Collab.convertPlatformPathToDIPath(data.docList[i]); app.endPriv(); var copyMe = true; app.beginPriv(); copyMe = Collab.copyMe; app.endPriv(); var invitees = ""; if (data.type == 0) { invitees = data.reqR.join(";") + ";" + data.optR.join(";"); if (copyMe) invitees = invitees + ";" + data.user; } var props = { driver: "urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.com", invitees: invitees, //cc: data.optR.join(";"), subject: data.subj, body: data.msg, localPaths: localDiPaths, filesToUpload: data.filesToUpload, setACL: (Math.abs(data.accessLevel) == 2)? "true": "false", }; app.beginPriv(); initResult = data.swConn.initiateWorkflow(props); app.endPriv(); DebugPrintln("######the upload result:") ANDumpObj(initResult.props.filesToUpload); for (var i in initResult.props.filesToUpload) ANDumpObj(initResult.props.filesToUpload[i]); data.initResult = initResult; data.initiateWorkflowResult = initResult["result"]; if ((data.initiateWorkflowResult == 0) || (data.initiateWorkflowResult == 412)) { data.saved = true; cxt.handleSuccess(); } else { cxt.handleFailure(); } } catch(e) { //console.println(e.stack); cxt.handleFailure(); } }, onSuccess: function(cxt) { if (data.docList.length == 1) cxt.setTaskStatus(SharedString("IDS_SHARE_FILE_BEZEL_SINGLE_FILE" + WT)); else { var msg = SharedString("IDS_SHARE_FILE_BEZEL_MULTIPLE_FILES" + WT); msg = msg.replace(/%cNum%/, data.docList.length); cxt.setTaskStatus(msg); } }, onFailure: function(cxt) { var errorMsg = AnnotsString.IDS_DEFINITION_LIST_ERROR; var generalError = AnnotsString.IDS_HTTP_ERROR_UNKNOWN.replace(/%cProductVariant%/, (app.viewerType.match('Exchange') != null) ? AnnotsString.IDS_PRODUCT_VARIANT_ACROBAT : AnnotsString.IDS_PRODUCT_VARIANT_READER); cxt.setTaskErrorStatus(errorMsg + " " +generalError); //cxt.setTaskStatus(AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERIC); }, }, updateProgress: function() { //this.updateProgressDialog(this.oDialog); this.setTaskStatus(this.oProgressInfo.cTaskStatus); this.setTaskProgress(this.oProgressInfo.nPercentComplete); }, updateProgressDialog: function(dialog) { }, initialize: function(dialog) { var data = this.data; if (this.oProgressInfo) this.oProgressInfo.setHandler(this); data.shouldRetry = false; this.oDialog = dialog; var toLoad = { desc: "" }; var toEnable = { task: data.bWorkspaceSetup, ok: false, cancel: false }; this.aCompleteTasks[this.aCompleteTasks.length] = ANTrustPropagateAll(this.oShareFileTasks); dialog.visible({ok: false, cancel: false}); dialog.load(toLoad); dialog.load({ok: AnnotsString.IDS_OK}); dialog.enable(toEnable); this.data.state = "RUNNING"; // Run the task set //this.runCurrentTask(); }, setTaskStatus: function(status) { var msg = AnnotsString.IDS_SHARED_REVIEW_STATUS_TEMPLATE.replace(/{cStatus}/, status); //DebugAlert("status " + msg); this.oDialog.load({ desc: msg }); }, setTaskErrorStatus: function(message) { this.oDialog.load({ desc: message }); }, setTaskProgress: function(nPercent) { var nSegLen = 100 / this.getNumTasks(); var nComplete = (this.nCurrentTask + (nPercent/100)); //DebugAlert("setTaskProgress " + (nComplete * nSegLen)); this.oDialog.load({ prog: (nComplete * nSegLen) }); }, getCurrentTask: function() { var nIdx = this.nCurrentTask; return this.aCompleteTasks[nIdx]; }, getNumTasks: function() { return (this.aCompleteTasks.length); }, runCurrentTask: function() { try { //DebugAlert("inside runCurrentTask"); this.setTaskProgress(0); this.getCurrentTask().runTask(this); if(this.data.state == "RUNNING") this.setTaskProgress(100); } catch(e) { //console.println(e.stack); } }, handleSuccess: function() { this.getCurrentTask().onSuccess(this); this.nCurrentTask++; //DebugAlert("in handleSuccess, this.nCurrentTask=" + this.nCurrentTask); if(this.nCurrentTask >= this.getNumTasks()) { // Complete this.data.bWorkspaceSetup = true; this.oDialog.enable({ ok: true }); this.commit(this.oDialog); } else this.runCurrentTask(); }, handleFailure: function(e) { try { if(e != undefined && e.text != undefined) { var s = AnnotsString.IDS_SHARED_REVIEW_COMPLETE_ERROR.replace(/%error%/, e.text); this.setTaskStatus(s); } this.getCurrentTask().onFailure(this); this.data.state = "RETRY"; this.oDialog.load({ok: AnnotsString.IDS_SHARED_REVIEW_COMPLETE_RETRY}); this.oDialog.visible({ok: true, cancel: true}); this.oDialog.enable({ok: true, cancel: true}); this.nCurrentTask = 0; this.setTaskProgress(0); } catch(e) { //console.println(e.stack); } }, commit: function(dialog) { switch(this.data.state) { case "RETRY": this.nCurrentTask = 0; this.data.state = "RUNNING"; this.data.shouldRetry = true; break; case "RUNNING": this.data.shouldRetry = false; dialog.end("ok"); break; } }, description: { name: SharedString("IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE" + WT), width: 450, elements: [ { type: "view", alignment: "align_fill", elements: [ { type: "view", align_children: "align_row", elements: [ { type: "progress_bar", width: 400, height: 12, item_id: "prog", }, ] }, { type: "static_text", alignment: "align_fill", item_id: "desc", wrap_name: true, name: maxStr, width: 450, }, { type: "ok_cancel", ok_name: AnnotsString.IDS_SHARED_REVIEW_COMPLETE_RETRY, } ] } ] } }; data.shouldRetry = true; while(data.shouldRetry) { app.beginPriv(); app.execDialog(ANTrustPropagateAll(dialog)); app.endPriv(); } if (dialog.oProgressInfo) dialog.oProgressInfo.setHandler(); dialog.oProgressInfo = null; } ANDocCenterLogin = app.trustedFunction(function(bInSilentShowProgressMonitor) { this.result = new Object; this.result.response = false; var data = {}; data.reviewType = "DocCenterLogin"; //1. try silent (this can be done on the c++ side as well) if (!SilentDocCenterLogin(data, {bShowProgressMonitor:bInSilentShowProgressMonitor})) { var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_ADOBE_DOC_CENTER, steps: DocCenterLoginSteps, }); CBRunSimpleWizNew(wiz, 0, -1, data); if(data.result == "fnsh") { if (data.swConn) { this.result.response = true; app.beginPriv(); this.result.AuthToken = data.swConn.getAuthInfo("authToken"); this.result.AuthTokenType = data.swConn.getAuthInfo("authTokenType"); this.result.Timestamp = data.swConn.getAuthInfo("timeStamp"); app.endPriv(); } else this.result.response = false; } else { this.result.response = false; } } else { if (data.swConn) { this.result.response = true; app.beginPriv(); this.result.AuthToken = data.swConn.getAuthInfo("authToken"); this.result.AuthTokenType = data.swConn.getAuthInfo("authTokenType"); this.result.Timestamp = data.swConn.getAuthInfo("timeStamp"); app.endPriv(); } else this.result.response = false; } if (this.result.response == true) { this.result.Username = data.user; this.result.Password = data.pswd; this.result.SaveCredential = data.rememberPassword; } ANDumpObj(this.result); return this.result; }) function ANDocCenterLoginForAddReviewers() { this.result = new Object; this.result.response = false; var data = {}; data.reviewType = "DocCenterLogin"; //1. try silent (this can be done on the c++ side as well) if (!SilentDocCenterLogin(data, {bShowProgressMonitor:true, cDriver:"urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com"})) { var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_ADOBE_DOC_CENTER, steps: DocCenterLoginSteps, }); CBRunSimpleWizNew(wiz, 0, -1, data); if(data.result == "fnsh") { if (data.swConn) this.result.response = true; else this.result.response = false; } else { this.result.response = false; } } else { if (data.swConn) this.result.response = true; else this.result.response = false; } if (this.result.response == true) { this.result.Username = data.user; this.result.Password = data.pswd; this.result.SaveCredential = data.rememberPassword; this.result.swConn = data.swConn; } else { this.result.swConn = null; } ANDumpObj(this.result); return this.result; } ANDocCenterSignup = app.trustedFunction(function() { this.result = new Object; this.result.response = false; /* First check if Acrobat.com Signup is blocked because of COPPA Restrictions. If yes, display the eligibilty requirements error dialog, else continue to the next step. More details about the APIs and COPPA requirements https://zerowing.corp.adobe.com/display/Acrobat/JavaScript+APIs+for+enforcing+COPPA+Requirements */ app.beginPriv(); var disabled = Collab.isDocCentreSignupDisabled(); app.endPriv(); if (disabled) { var desc = IWSharedReviewDocCenterEligibilityErrorDialog(); app.beginPriv(); var result = app.execDialog(desc); app.endPriv(); return this.result;; } var data = {}; data.reviewType = "DocCenterSignup"; var wiz = CBTrustPropagateWiz({ finishString: AnnotsString.IDS_FINISH, title: AnnotsString.IDS_SHARED_REVIEW_ADOBE_DOC_CENTER, steps: DocCenterSignupSteps, }); CBRunSimpleWizNew(wiz, 0, -1, data); if(data.result == "fnsh") { if (data.swConn) this.result.response = true; else this.result.response = false; } else { this.result.response = false; } if (this.result.response == true) { this.result.Username = data.user; this.result.Password = data.pswd; this.result.SaveCredential = data.rememberPassword; } ANDumpObj(this.result); return this.result; }) // called at the beginning of a BBR initiation CBBBRInit = app.trustedFunction(function(doc) { app.beginPriv(); var eaddr = identity.email; app.endPriv(); if(!eaddr) { do { bStatus = Collab.getIdentity(false, AnnotsString.IDS_REVIEW_IDENTITY_SETUP_TEXT); if (bStatus) { app.beginPriv(); eaddr = identity.email; app.endPriv(); if(!CBIsValidEmail(eaddr)) { app.beginPriv(); app.alert({cMsg: AnnotsString.IDS_EMAIL_INVALID, cTitle: AnnotsString.IDS_BROWSER_BASED_REVIEW_TITLE, nIcon: 1, oDoc: doc}); app.endPriv(); eaddr = null; } } else { eaddr = null; break; // Cancel } } while(eaddr == null); // got a response? pop it into the author info field app.beginPriv(); if(eaddr != null) identity.email = eaddr; app.endPriv(); } if(eaddr == null) return ""; // Need identity to complete var data = {}; if(doc && doc.path) { data.docPath = doc.path; if(doc.path.match(/^http/)) data.docFS = fileSystem.WebDAV; // XXX get this from the doc itself } CBRunBBRReviewWizard(data, 0, 1); if(data.result == "fnsh") return data.fixedDestURL; else return ""; }) // called after the doc opens in the browser for a BBR initiation // decodedURL is a version of the URL in which any %-encoded characters have been decoded back into Unicode CBBBRInvite = app.trustedFunction(function(doc, decodedURL) { var data = {doc: doc, decodedURL: decodedURL}; app.beginPriv(); var email = identity.email; app.endPriv(); while(true) { CBRunBBRReviewWizard(data, 2, -1); if(data.result == "fnsh") { var to = data.addrs.join(";"); var cstoreInit = CBFreezeFunc(function() { Collab.createAnnotStore({ cName: "{cName}", cSettings: "{cSettings}" }); }, { cName: doc.collabStoreType, cSettings: doc.collabStoreSettings }) + "()"; var initDate = new Date(); var init = CBFreezeFunc(function() { if(!eval("{canDoWorkflow}")) { app.alert("{cAcroVersion}"); } else { var script = "{script}"; eval(script); var params = { doc: this, initiator: "{initiator}", initScript: script, invitees: "{to}", cc: "{cc}", bcc: "", sentDate: "{date}", }; Collab.registerReview(params); } }, { cAcroVersion: AnnotsString.IDS_SEND_FOR_REVIEW_VERSION_ERR, canDoWorkflow : CBCanDoReviewWorkflowCheckExpr, initiator: email, to: to, cc: "", date: initDate, script: cstoreInit }) + "()"; var initAPR = CBFreezeFunc(function() { if(!eval("{canDoWorkflowAPR}")) { app.alert("{cAcroVersion}"); } else { var script = "{script}"; eval(script); var params = { doc: this, initiator: "{initiator}", initScript: script, invitees: "{to}", cc: "{cc}", bcc: "", sentDate: "{date}", }; Collab.registerReview(params); } }, { cAcroVersion: AnnotsString.IDS_SEND_FOR_REVIEW_VERSION_ERR, canDoWorkflowAPR : CBCanDoWorkflowCheckExprAPR, initiator: email, to: to, cc: "", date: initDate, script: cstoreInit }) + "()"; var subj = data.subj; var url = "mailto:" + escape(to) + "?subject=" + escape(subj) + "&body=" + escape(data.msg) + "&ui=false"; var sendResult; var sendRaise = false; var e; try { app.beginPriv(); sendResult = doc.submitForm({cURL: url, aFields: [], oJavaScript: { After: init, AfterPermsReady: initAPR }, bCheckReqdFields: false }); app.endPriv(); } catch(e) { app.alert({cMsg: e["message"], oDoc: doc}); sendRaise = true; } if(!sendRaise && sendResult) { // Register the review for the initiator var params = { doc: doc, initiator: null, initScript: cstoreInit, invitees: to, cc: "", bcc: "", sentDate: initDate, }; Collab.registerReview(params); var docName = doc.documentFileName; if (app.platform == "WIN") { docName = docName.substring(docName.lastIndexOf('\\') + 1); //Bug #1046690. Remove the path info if any, from the filename } if (docName.indexOf('%') != -1 && data.decodedURL) { docName = data.decodedURL.substring(data.decodedURL.lastIndexOf('/') + 1); docName += " ("; docName += doc.documentFileName; docName += ")"; } app.beginPriv(); Collab.alertWithHelp( AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_MSG.replace(/%docname%/, docName), "", AnnotsString.IDS_SEND_FOR_REVIEW_CONFIRM_TITLE.replace(/%docname%/, docName), "Annots:SendForReviewConfirm"); app.endPriv(); return 1; // success } } else return 0; // cancelled } }) function CBRunReturnResponseDialog(title, text, tip, cannedSubj, cannedMsg, docName, liveReturnAddr, data) { var buttonsWidth = { max: [ { string_width: AnnotsString.IDS_CANCEL }, { string_width: AnnotsString.IDS_HELP }, { string_width: AnnotsString.IDS_SEND } ] }; var width = 450; var description = ANTrustPropagateAll({ data: data, cannedMsg: cannedMsg, cannedSubj: cannedSubj, docName: docName, liveReturnAddr: liveReturnAddr, initialize: function(dialog) { this.dialog = dialog; dialog.load({tip1: "C_Info_Xl_N.png"}); if(!this.data.msg) this.data.msg = this.cannedMsg.replace(/%docname%/, this.docName); if(!this.data.subj) this.data.subj = this.cannedSubj.replace(/%docname%/, this.docName); dialog.load({mesg: this.data.msg, subj: this.data.subj, "1adr": this.data.addr}); dialog.enable( { "adrb" : app.addressBookAvailable } ); }, commit: function(dialog) { var o = dialog.store(); this.data.msg = o["mesg"]; this.data.subj = o["subj"]; this.data.addr = o["1adr"]; }, adrb: function(dialog) { app.beginPriv(); var addrs = app.mailGetAddrs({ cTo: dialog.store()["1adr"], bCc: false, bBcc: false }); app.endPriv(); if(addrs && addrs[0]) dialog.load({"1adr" : addrs[0]}); }, // XXX help description: { name: title, elements: [ { type: "view", align_children: "align_left", elements: ANCreateMLSEElementsFromArray(text.split(/\n|\r\n|\r/), width).concat( liveReturnAddr ? [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_INVITE_ADDRESS_BOOK, item_id: "adrb" }, { type: "edit_text", item_id: "1adr", alignment: "align_fill" } ] }, ] : [ { type: "static_text", name: AnnotsString.IDS_GEN_ADDRESSEE_HEADING }, { type: "static_text", item_id: "1adr", alignment: "align_fill" } ] ).concat( [ { type: "static_text", name: AnnotsString.IDS_GEN_SUBJECT_HEADING }, { type: "edit_text", alignment: "align_fill", item_id: "subj" }, { type: "static_text", name: AnnotsString.IDS_GEN_MESSAGE_HEADING }, { type: "edit_text", alignment: "align_fill", height: { prod: [ { edit_text_height: [] }, 5 ] }, multiline: true, item_id: "mesg" } ]).concat( ANCreateTipElements(tip, width) ).concat( [ { type: "view", align_children: "align_row", alignment: "align_right", elements: [ { type: "ok_cancel", ok_name: AnnotsString.IDS_SEND } ] } ] ) } ] } }); app.beginPriv(); data.result = app.execDialog(description); app.endPriv(); return data; } function CBRunReviewOptionsDialog(data, showReaderEnable, canReaderEnable) { var width = { zstring_width: AnnotsString.IDS_INVITE_READER_ENABLE }; var description = ANTrustPropagateAll({ data: data, showReaderEnable: showReaderEnable, canReaderEnable: canReaderEnable, initialize: function(dialog) { this.dialog = dialog; dialog.load({ tip1: "C_Info_Xl_N.png", radr: this.data.raddr, pctb: this.data.toolbars["Commenting"], patb: this.data.toolbars["AdvCommenting"] }); // no forms please! var readerEnable = this.canReaderEnable && (typeof this.data.readerEnable == "undefined" ? true : this.data.readerEnable); this.dialog.load({rden: readerEnable}); this.dialog.enable({rden: this.canReaderEnable, "adrb" : app.addressBookAvailable}); if(!this.data.raddr) app.alert(AnnotsString.IDS_REVIEW_OPTIONS_NO_RADDR); }, validate: function(dialog) { var o = dialog.store(); if(!o["radr"]) { app.alert(AnnotsString.IDS_REVIEW_OPTIONS_NO_RADDR); return false; } /*else // 1216388 { // 1012399 - don't allow email aliases in this box since recipient will most likely not // have that list in their address book. This regular expression checks for // name@domain.com anywhere in the string (I removed the beginning and end // anchor we have in most email checks) which allows for entries from Outlook // address book to work which are of the form "Display name (name@domain.com)" // but aliases or lists will fail. // if (!CBIsValidEmail(o["radr"])) { app.alert(AnnotsString.IDS_EMAIL_INVALID); return false; } }*/ return true; }, commit: function(dialog) { var o = dialog.store(); this.data.raddr = o["radr"]; this.data.toolbars = { Commenting: /*o["pctb"]*/data.toolbars.Commenting, AdvCommenting: o["patb"] }; if(this.showReaderEnable && o["rden"] != this.data.readerEnable) { this.data.readerEnable = o["rden"]; this.data.msgChanged = true; } }, adrb: function(dialog) { app.beginPriv(); var addrs = app.mailGetAddrs({ cTo: dialog.store()["radr"], bCc: false, bBcc: false }); app.endPriv(); if(addrs && addrs[0]) dialog.load({"radr" : addrs[0]}); }, description: { name: AnnotsString.IDS_REVIEW_OPTIONS, width: width, elements: [ { type: "view", align_children: "align_row", elements: [ { type: "view", elements: [ { type: "static_text", name: AnnotsString.IDS_REVIEW_OPTIONS_RETURN_HEAD }, { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: "button", name: AnnotsString.IDS_INVITE_ADDRESS_BOOK, item_id: "adrb" }, { type: "edit_text", item_id: "radr", alignment: "align_fill" } ] }/*, //Fix Bug # 1303211. Remove gap and remove the Display Drawing Markup Tools checkbox. { type: "gap", height: showReaderEnable ? 3 : 0 }, */ /*{ type: "check_box", name: AnnotsString.IDS_INVITE_PRESENT_COMMENTING_TOOLBAR, item_id: "pctb" },*/ // don't show this as send comment only appears on the main commenting toolbar /*{ type: "check_box", name: AnnotsString.IDS_INVITE_PRESENT_ADV_COMMENTING_TOOLBAR, item_id: "patb" }*/ //Fix Bug # 1303211. Remove gap and remove the Display Drawing Markup Tools checkbox. ].concat(showReaderEnable ? [ { type: "gap", height: 3 }, { type: "static_text", name: AnnotsString.IDS_INVITE_READER_ENABLE_H }, { type: "check_box", name: AnnotsString.IDS_INVITE_READER_ENABLE, item_id: "rden" } ] : []).concat(ANCreateTipElements((showReaderEnable && canReaderEnable ? AnnotsString.IDS_REVIEW_OPTIONS_REN_TIP : AnnotsString.IDS_REVIEW_OPTIONS_NREN_TIP), width) ).concat([ { type: "ok_cancel" } ]) } ] } ] } }); app.beginPriv(); data.result = app.execDialog(description); app.endPriv(); return data; } // why use snd2 in this reoutine, well using "send" does weird things. // why return "myok" because if I return "ok" the receiver actually gets "" function CBRunApproveDialog(title, text, dest, tip, cannedSubj, cannedMsg, docName, liveReturnAddr, data, bShowInitiatorEmail, bIsEnd) { var buttonsWidth = { max: [ { string_width: AnnotsString.IDS_CANCEL }, { string_width: AnnotsString.IDS_HELP }, { string_width: AnnotsString.IDS_SEND } ] }; var popupWidth = { max: [ { string_width: AnnotsString.IDS_APPROVAL_FINAL_COMPLETE_AND_EMAIL }, { string_width: AnnotsString.IDS_APPROVAL_FINAL_COMPLETE_ONLY }, 350 ] }; var width = 450; var description = ANTrustPropagateAll({ data: data, cannedMsg: cannedMsg, cannedSubj: cannedSubj, docName: docName, liveReturnAddr: liveReturnAddr, initialize: function(dialog) { this.dialog = dialog; dialog.load({tip1: "C_Info_Xl_N.png"}); if(!this.data.msg) this.data.msg = this.cannedMsg.replace(/%docname%/, this.docName); if(!this.data.subj) this.data.subj = this.cannedSubj.replace(/%docname%/, this.docName); if (typeof this.data.initiatorEmail == "undefined") this.data.initiatorEmail = false; if (typeof this.data.finalApprovalEmail == "undefined") this.data.finalApprovalEmail = true; dialog.load({"mesg": this.data.msg, "subj": this.data.subj, "1adr": this.data.addr, "2adr": this.data.ccaddr}); if(bShowInitiatorEmail) dialog.load({"cbx1": this.data.initiatorEmail}); if(bIsEnd) { var ctyp = {}; ctyp[AnnotsString.IDS_APPROVAL_FINAL_COMPLETE_AND_EMAIL] = (this.data.finalApprovalEmail)? 1 : -1; ctyp[AnnotsString.IDS_APPROVAL_FINAL_COMPLETE_ONLY] = (!this.data.finalApprovalEmail)? 2 : -2; dialog.load({"ctyp": ctyp}); this.ctyp(dialog); } dialog.focus("1adr"); }, snd2: function(dialog) { var o = dialog.store(); if (this.justOneEmail(o["1adr"]) || this.findSelectedIndex("ctyp") == 1) { this.commit(this.dialog); this.dialog.end("myok"); } else { app.alert(AnnotsString.IDS_EMAIL_ADDRESS_TO_FIELD_MSG); } }, cncl: function(dialog) { this.dialog.end("cncl"); }, justOneEmail: function (toString) { if (toString == "") return false; var split = toString.split(/\;/); var nNumAddrFound = 0; for(var i in split) { if(split[i]) { var addrMatch = split[i].match(/^\s*(\S(?:.*\S)?)\s*$/); if(addrMatch && addrMatch[1]) nNumAddrFound++; } } if (nNumAddrFound == 1) return true; else return false; }, findSelectedIndex: function(id) { var o = this.dialog.store()[id]; for(var i in o) { if(o[i] > 0) return o[i] - 1; } return -1; }, idle: function(dialog) { var o = dialog.store(); dialog.enable( {snd2: (o["1adr"] != "" || this.findSelectedIndex("ctyp") == 1)} ); }, commit: function(dialog) { var o = dialog.store(); this.data.msg = o["mesg"]; this.data.subj = o["subj"]; this.data.addr = o["1adr"]; this.data.ccaddr = o["2adr"]; this.data.initiatorEmail = o["cbx1"]; this.data.finalApprovalEmail = (this.findSelectedIndex("ctyp") == 0); }, toad: function(dialog) { app.beginPriv(); var addrs = app.mailGetAddrs({ cTo: dialog.store()["1adr"], cCC: dialog.store()["2adr"], bBcc: false }); app.endPriv(); if(addrs) { if (addrs[0]) dialog.load({"1adr" : addrs[0]}); if (addrs[1]) dialog.load({"2adr" : addrs[1]}); } }, ccad: function(dialog) { this.toad(dialog); }, ctyp: function(dialog) { var index = this.findSelectedIndex("ctyp"); if(index == 0) { dialog.load({"snd2": AnnotsString.IDS_SEND}); dialog.enable({"toad": true, "1adr": true, "ccad": true, "2adr": true, "subj": true, "mesg": true}); } else if(index == 1) { dialog.load({"snd2": AnnotsString.IDS_COMPLETE}); dialog.enable({"toad": false, "1adr": false, "ccad": false, "2adr": false, "subj": false, "mesg": false}); } }, //cbx1: function(dialog) //{ // var o = dialog.store(); // if (o["cbx1"]) // this.data.initiatorEmail = true; // else // this.data.initiatorEmail = false; //}, // XXX help description: { name: title, elements: [ { type: "view", align_children: "align_left", elements: ANCreateMLSEElementsFromArray(text.split(/\n|\r\n|\r/), width).concat( { type: "gap", height: 3 } ).concat( bIsEnd ? [ { type: "static_text", name: AnnotsString.IDS_APPROVAL_COMPLETION_TYPE_HEADING }, { type: "popup", item_id: "ctyp", alignment: "align_left", width: popupWidth, PopupEdit: false } ] : []).concat( { type: "static_text", name: dest, alignment: "align_fill" } ).concat( liveReturnAddr ? [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: app.addressBookAvailable ? "button" : "static_text", name: AnnotsString.IDS_GEN_ADDRESSEE_HEADING, item_id: "toad" }, { type: "edit_text", item_id: "1adr", alignment: "align_fill" } ] }, ] : [ { type: "static_text", name: AnnotsString.IDS_GEN_ADDRESSEE_HEADING }, { type: "static_text", item_id: "1adr", alignment: "align_fill" } ] ).concat( [ { type: "view", align_children: "align_row", alignment: "align_fill", elements: [ { type: app.addressBookAvailable ? "button" : "static_text", name: AnnotsString.IDS_GEN_CC_HEADING, item_id: "ccad" }, { type: "edit_text", item_id: "2adr", alignment: "align_fill" } ] }, ]).concat( [ { type: "static_text", name: AnnotsString.IDS_GEN_SUBJECT_HEADING }, { type: "edit_text", alignment: "align_fill", item_id: "subj" }, { type: "static_text", name: AnnotsString.IDS_GEN_MESSAGE_HEADING }, { type: "edit_text", alignment: "align_fill", multiline: true, height: { prod: [ { edit_text_height: [] }, 8 ] }, item_id: "mesg" } ]).concat( bShowInitiatorEmail ? [ { type: "gap", height: 1 }, { type: "check_box", item_id: "cbx1", //multiline: true, name: AnnotsString.IDS_EMAIL_APPROVAL_NOTIFY_INITIATOR }, ] : []).concat( ANCreateTipElements(tip, width) ).concat( // [ // { // type: "view", // align_children: "align_row", // alignment: "align_right", // elements: // [ // { // type: "ok_cancel_help", // ok_name: AnnotsString.IDS_SEND // } // ] // } // ] [ { type: "view", align_children: "align_right", alignment: "align_right", elements: [ { type: "view", align_children: "align_row", alignment: "align_right", elements: [ { type: "button", name: AnnotsString.IDS_SEND, item_id: "snd2", width: buttonsWidth }, { type: "button", name: AnnotsString.IDS_CANCEL, item_id: "cncl", width: buttonsWidth } ] } ] } ] ) } ] } }); app.beginPriv(); data.result = app.execDialog(description); app.endPriv(); return data; } InitAnWizard = app.trustedFunction(function() { IWEmailFormSteps[0].title = AnnotsString.IDS_SHARED_REVIEW_WIZARD_TITLE_FD; UploadFileSteps[0].title = AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF; UploadFileSteps[0].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; UploadFileSteps[1].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; UploadFileSteps[1].title = AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF; UploadFileSteps[2].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; UploadFileSteps[2].title = AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF; UploadFileSteps[3].heading = AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_UF; UploadFileSteps[3].title = AnnotsString.IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF; DocCenterLoginSteps[0].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; DocCenterLoginSteps[0].title = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LOGIN; DocCenterLoginSteps[1].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; DocCenterLoginSteps[1].title = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE; DocCenterLoginSteps[2].heading = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_HEADING; DocCenterLoginSteps[2].title = AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_CONFIRM_TITLE; SharedReviewDocCenterInitiator.oTaskSet.cTitle = AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE; SharedReviewWebDAVInitiator.oTaskSet.cTitle = AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE; SharedReviewAppleiDiskInitiator.oTaskSet.cTitle = AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE; SharedReviewSMBInitiator.oTaskSet.cTitle = AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE; SharedReviewSharepointInitiator.oTaskSet.cTitle = AnnotsString.IDS_SHARED_REVIEW_CREATE_WORKSPACE; if(typeof Collab != "undefined") { // really the width of PART of each panel //Initially we were usign the wizard width in the AlertWithHelp dialog. Now introducing a new width var. Collab.AlertWithHelpWidth = (app.platform == "WIN") ? 508 : 508; //We require a width=592, subtract 2*wizardMarginWidth. So, 592-(2*25)=542 Collab.wizardWidth = (app.platform == "WIN") ? 592 : 575; // really the height of PART of each panel // We require the wizard height to be 482. The row of buttons below is seperate, whose height is 54 (11+32+11). So 482-54=428 Collab.wizardHeight = 428; Collab.buttonRowMarginHeight = 11; Collab.buttonRowMarginWidth = 11; Collab.wizardMarginWidth = 25; Collab.marginWidth = 20; Collab.marginHeight = 20; Collab.tipIconWidth = 32; Collab.tipIconHeight = 32; Collab.navIconWidth = 12; Collab.navIconHeight = 12; app.beginPriv(); RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/WebDAV", SharedReviewWebDAVInitiator); //if (app.platform == "WIN") { RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint", SharedReviewSharepointInitiator); } if (app.platform == "MAC") { //dikumar: Removing support for initiating a shared review from mac using idisk //RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/iDisk", // SharedReviewAppleiDiskInitiator); } RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/SMB", SharedReviewSMBInitiator); RSS.addUI("urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com", SharedReviewDocCenterInitiator); app.endPriv(); } // Initialissation of global variables // }); /* For now, we'll let InitAnWizard be called when AnWizard.js loads. Loading EScript loads Annots anyways. For details see Bug#2698232 , 2710776. TODO A11, Clean up anwizard.js and Annots.js and wrap global references to Annots etc properly. */ InitAnWizard(); //console.println(AnnotsString.IDS_ANNOTS_JS_WIZ_BUILTIN); } catch(e) { console.println(e.extMessage); } /* Copyright Š˙ 2006-2007 Adobe Systems Incorporated Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ const ScriptBridgeUtils = { // -------------------------------------------------- // Public methods // -------------------------------------------------- // Convert an XML invoke string to a JavaScript Object with the following two properties // .method is the function name of the call to invoke // .args is the Array of argument JavaScript Objects xmlString2jsCall: function( xmlString ) { var xml = new XML( xmlString ); return { method:xml.@name, args:this.xml2jsArray( [], xml.arguments.children() ) }; }, // Convert the JavaScript Object to an XML String to be sent back to Flash jsResult2xmlString: function( value ) { return this.toXMLString( this.js2xml( value ) ); }, // Convert a JavaScript Object to an XML invoke String jsCall2xmlString: function() // takes argument list { var ret = <invoke/>; ret[ "@name" ] = arguments[0][0]; ret[ "@returntype" ] = "javascript"; if ( arguments[0] && arguments[0][0].length > 1 ) { ret.appendChild( <arguments/> ); for( var i = 1; i < arguments[0].length; ++i ) { ret[ "arguments" ].appendChild( this.js2xml( arguments[0][i] ) ); } } return this.toXMLString( ret ); }, // -------------------------------------------------- // Private methods // -------------------------------------------------- // Convert the XML Object into JavaScript Objects and append them to the provided Array xml2jsArray: function( targetArray, xmlNodeList ) { for each ( node in xmlNodeList ) { targetArray.push( this.xml2js( node ) ); } return targetArray; }, // Convert an XML Object to a JavaScript Object xml2js: function( requestXML ) { if ( requestXML == undefined ) { return ""; } if ( requestXML.nodeKind() != "element" ) { return ""; } switch( requestXML.name().toString() ) { case "property": return this.xml2js( requestXML.child( 0 ) ); case "string": return requestXML.toString(); case "number": return Number( requestXML.toString() ); case "true": return Boolean( true ); case "false": return Boolean( false ); case "array": return this.xml2jsArray( new Array(), requestXML.children() ); case "object": { var result = {}; var xmlPropertiesList = requestXML.children(); for each( node in xmlPropertiesList ) { if ( node.name().toString() != 'property' ) { throw new Error( "expected only property nodes" ); } var propName = node.@id.toString(); result[ propName ] = this.xml2js( node ); } return result; } default: break; } }, // Convert a JavaScript Object to an XML Object js2xml: function( value ) { var argType = typeof( arguments[0] ); var arg; if ( argType == "boolean" || argType == "undefined" || value == null ) { arg = new XML("<" + value + "/>"); } else { if ( argType == "object" ) { if ( value instanceof( Array ) ) { argType = "array"; } else if ( value instanceof( String ) ) { argType = "string"; } else if ( value instanceof( Date ) ) { argType = "date"; } } arg = new XML( "<" + argType + "/>" ); if ( argType == "object" || argType == "array" ) { for( var i in value ) { var prop = <property/>; prop[ "@id" ] = i; prop.appendChild( this.js2xml( value[i] ) ); arg.appendChild( prop ); } } else if ( argType == "date" ) { arg.appendChild( new XML( value.getTime() ) ); } else { arg.appendChild( value ); } } return arg; }, // Filter out whitespace characters because ActionScript treats them as parameters toXMLString: function( xml )//:String { var oldVal = XML.prettyPrinting; XML.prettyPrinting = false; var result = xml.toXMLString(); XML.prettyPrinting = oldVal; return result; } }; /******************************************* ADOBE CONFIDENTIAL NOTICE ***/ /* */ /* ADOBE CONFIDENTIAL */ /* ------------------ */ /* */ /* Copyright 2003-2006, Adobe Systems Incorporated, All Rights Reserved. */ /* */ /* NOTICE: All information contained herein is, and remains */ /* the property of Adobe Systems Incorporated and its suppliers, */ /* if any. The intellectual and technical concepts contained */ /* herein are proprietary to Adobe Systems Incorporated and its */ /* suppliers and may be covered by U.S. and Foreign Patents, patents */ /* in process, and are protected by trade secret or copyright law. */ /* Dissemination of this information or reproduction of this material */ /* is strictly forbidden unless prior written permission is obtained */ /* from Adobe Systems Incorporated. */ /* */ /******************************************* ADOBE CONFIDENTIAL NOTICE ***/ function InitializeFormsTrackerJS() { try { const cTableOddRowColor = "#FFFFFF"; const cTableEvenRowColor = "#F8F8F8"; const cTableHeaderColor = "#E4E4FF"; var myFormsTrackerDebugAlert = function(str) { //narinder - uncomment to turn on debugging //app.alert(str); }; var getString = function (i) { var rval = app.getString({cPlugInName:"Forms",cStringId:i}); if(rval == "") return "empty:"+i; return rval; }; if(typeof RSS != "undefined") { // RSS Namespace var fwNS = "http://ns.adobe.com/Acrobat/RSS/Forms/"; var inboxNS = "http://ns.adobe.com/Acrobat/RSS/Inbox/"; var ftNS = "urn://ns.adobe.com/Acrobat/FormsTracker/"; //HREFs and URLs var cFormsIveSentURL = "urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/MyForms.rss"; var cFormsIveSentFeedLink = "acrobat:Inbox?container=" + ftNS + "&selectFeed=" + cFormsIveSentURL; var cFormsIveReceivedURL = "urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/ParticipantForms.rss"; var cFormsIveReceivedFeedLink = "acrobat:Inbox?container=" + ftNS + "&selectFeed=" + cFormsIveReceivedURL; var cFormsSuperGroupURL = "urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/FormsSuperGroup.rss"; var cFormsSuperGroupLink = "acrobat:Inbox?container=" + ftNS + "&selectFeed=" + cFormsSuperGroupURL; // RSS Extensions var fwMethod = fwNS + ":method"; var fwDocID = fwNS + ":docID"; var fwRecipients = fwNS + ":recipients"; var fwNewResponses = fwNS + ":newResponses"; var fwResponses = fwNS + ":responses"; var fwExtraInfo = fwNS + ":extraInfo"; var fwDocTitle = fwNS + ":docTitle"; var fwDocLink = fwNS + ":docLink"; var fwTo = fwNS + ":to"; var fwCc = fwNS + ":cc"; var fwBcc = fwNS + ":bcc"; var fwIsOffline = fwNS + ":isOffline"; var fwIsInitiated = fwNS + ":isInitiated"; var fwIsOnline = fwNS + ":isOnline"; var fwLastSync = fwNS + ":lastSync"; var fwLatestVersion = fwNS + ":latestVersion"; var fwRemoteURL = fwNS + ":remoteURL"; var fwLocation = fwNS + ":location"; var fwFolder = fwNS + ":folder"; var fwServers = fwNS + ":serverReviews"; var fwHasConnected = fwNS + ":hasConnected"; var fwConnectionStatus = fwNS + ":connectionStatus"; var fwWorkspace = fwNS + ":workspace"; var inboxHidden = inboxNS + ":hidden"; //Shared Form workflow states var FORM_STATE_ACTIVE = "Active"; var FORM_STATE_ENDED = "Ended"; var FORM_STATE_SUSPENDED = "Suspended"; var FORM_STATE_CORRUPTED = "Corrupted"; } //Event Logging Category and Subcategory constants var EVENT_LOGGING_CATEGORY_TRACKER = "Tracker"; var EVENT_LOGGING_SUBCATEGORY_FORMS = "Forms"; var LogAVUMEvent = app.trustedFunction(function(category, subcategory, eventName) { var logEventParams = {}; logEventParams.cat = category; logEventParams.subcat = subcategory; logEventParams.evnt = eventName; app.beginPriv(); Collab.AVUMLogEventWrapper(logEventParams); app.endPriv(); }); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Global functions used by various context menus etc. in Forms Tracker /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var FormsTrackerAddNewFolder = app.trustedFunction(function(url) { var result; app.beginPriv(); var current = FormWorkflow.getFormWorkflowFolders(url); app.endPriv(); while(true) { // Query for a name app.beginPriv(); var folder = app.response(AnnotsString.IDS_REVIEW_PANEL_ADD_FOLDER, AnnotsString.IDS_REVIEW_PANEL_NEW_FOLDER); app.endPriv(); if(folder != undefined && folder != null) { if(folder.length < 1 || folder.length > 15) { app.beginPriv(); app.alert(AnnotsString.IDS_REVIEW_PANEL_FOLDER_LENGTH, 1, 0); app.endPriv(); } else { var bFound = false; if(current != undefined) { for(var i = 0; i < current.length && !bFound; i++) bFound = current[i] == folder; } if(bFound) { var msg = AnnotsString.IDS_REVIEW_PANEL_FOLDER_EXISTS; msg = msg.replace(/%s/g, folder); app.beginPriv(); app.alert(msg, 1, 0); // PSIRT-9216 // app.Priv(); looked like a typo which should instead have been app.endPriv(); // since app.Priv() was undefined the researcher has assigned app.Priv() to some arbitrary function // which then got executed at the next line , thus making it vulnerable. app.endPriv(); } else { app.beginPriv(); FormWorkflow.addFormWorkflowFolder(url, folder); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_FORMS, "CreateFolder"); app.endPriv(); result = folder; break; } } } else break; } return result; }); var FormsTrackerSetFormFolder = app.trustedFunction(function(url, docID, folder) { app.beginPriv(); FormWorkflow.setFormWorkflowFolder(url, docID, folder); app.endPriv(); }); var FormsTrackerRemoveFolder = app.trustedFunction(function(url, folder) { var msg; if(url == cFormsIveSentURL) msg = getString("IDS_SHAREDWF_ASK_DEL_FOLDER_DISTRIBUTED"); else msg = getString("IDS_SHAREDWF_ASK_DEL_FOLDER_RECEIVED"); msg = msg.replace(/%foldername%/g, folder); app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; var result = app.alert({cTitle:msgboxtitle, cMsg: msg, nIcon: 2, nType: 2}); app.endPriv(); if(result == 4) { app.beginPriv(); FormWorkflow.removeFormWorkflowFolder(url, folder); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_FORMS, "RemoveFolder"); app.endPriv(); } }); var FormsTrackerRemoveFolderWhileMultipleSelect = app.trustedFunction(function(url, folder) { app.beginPriv(); FormWorkflow.removeFormWorkflowFolder(url, folder); app.endPriv(); }); var RemoveMultipleSelectedForms = app.trustedFunction(function(bIsInitiated) { try { if(bIsInitiated) msg = getString("IDS_SHAREDWF_ASK_DEL_MULTIPLE_DISTRIBUTED"); else msg = getString("IDS_SHAREDWF_ASK_DEL_MULTIPLE_RECEIVED"); app.beginPriv(); var msgboxtitle = app.viewerType == "Reader"? AnnotsString.IDS_PRODUCT_NAME_READER : AnnotsString.IDS_PRODUCT_NAME_ACROBAT; var result = app.alert({cTitle:msgboxtitle, cMsg: msg, nIcon: 2, nType: 2}); app.endPriv(); if(result == 4) { app.beginPriv(); FormWorkflow.removeMultipleSelectedFormWorkflowsInTracker(); LogAVUMEvent(EVENT_LOGGING_CATEGORY_TRACKER, EVENT_LOGGING_SUBCATEGORY_FORMS, "RemoveMultiple"); app.endPriv(); return true; } return false; } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }); var SetFormFolderForMultipleForms = app.trustedFunction(function(feedURL, formIDs, folderName) { try { app.beginPriv(); FormWorkflow.setFormFolderForMultipleForms(feedURL, formIDs, folderName); app.endPriv(); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }); var FormsTrackerRemoveFormWhileMultipleSelect = app.trustedFunction(function(item) { var docID = item.Extension[fwDocID]; if(typeof docID != "undefined") { app.beginPriv(); FormWorkflow.unregisterFormsWorkflow(docID); app.endPriv(); return true; } else return false; }); var TrackerExpandSelection = app.trustedFunction(function() { app.beginPriv(); Collab.expandTrackerSelection(); app.endPriv(); }); var TrackerCanExpandSelection = app.trustedFunction(function(url) { app.beginPriv(); var canExpand = Collab.canExpandTrackerSelection; app.endPriv(); return canExpand; }); var TrackerCollapseSelection = app.trustedFunction(function() { app.beginPriv(); Collab.collapseTrackerSelection(); app.endPriv(); }); var TrackerCanCollapseSelection = app.trustedFunction(function(url) { app.beginPriv(); var canCollapse = Collab.canCollapseTrackerSelection; app.endPriv(); return canCollapse; }); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Forms Tracker UI /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// var oFormsTrackerUI = { createContext: app.trustedFunction(function() { var result = { //General strings cIveSent: getString("IDS_FORMS_TRACKER_MY_FORMS"), cNoIveSentForms: AnnotsString.IDS_TRACKER_NO_SENT_REVIEWS, cIveReceived: getString("IDS_FORMS_TRACKER_PARTICIPANT_FORMS"), cNoIveReceivedForms: AnnotsString.IDS_TRACKER_NO_SENT_REVIEWS, cFormsSuperGroup: getString("IDS_FORMS_TRACKER_FORMS_SUPER_GROUP_TITLE"), nbsp_placeholder: "NBSP_PLACEHOLDER", cViewResponsesLabel: getString("IDS_FORMS_TRACKER_VIEW_RESPONSES_LABEL"), cViewResponsesLink: getString("IDS_FORMS_TRACKER_VIEW_RESPONSES_LINK"), cDistributionMessage: getString("IDS_FORMS_TRACKER_DISTRIBUTION_MESSAGE"), cViewFormButtonLabel: getString("IDS_FORMS_TRACKER_VIEW_FORM"), cNotApplicable: AnnotsString.IDS_TRACKER_NOT_APPLICABLE, cClick: AnnotsString.IDS_TRACKER_CLICK, cHere: AnnotsString.IDS_TRACKER_HERE, cToResumeActive: AnnotsString.IDS_TRACKER_TO_RESUME_ACTIVE, cHowDoIFixThis: AnnotsString.IDS_TRACKER_HOW_DO_I_FIX_THIS, cNone: AnnotsString.IDS_TRACKER_CHANGES_NONE, cToChangeFileLocation: getString("IDS_FORMS_TRACKER_TO_CHANGE_FILE_LOCATION"), cChangesSinceLastViewed: getString("IDS_FORMS_TRACKER_DEF_LIST_CHANGES_SINCE_LAST_REVIEWED_RESPONSES"), cResponsesLabel: getString("IDS_FORMS_TRACKER_RESPONSES"), cSubmissionHistoryLabel: getString("IDS_FORMS_TRACKER_SUBMISSION_HISTORY"), cSentUsing: AnnotsString.IDS_SHARED_REVIEW_SENT_USING_SERVER, cEmailAttachment: getString("IDS_FORMS_TRACKER_EMAIL_ATTACHMENT"), cRespondedNo: getString("IDS_FORMS_TRACKER_RESPONDED_NO"), cRespondedYes: getString("IDS_FORMS_TRACKER_RESPONDED_YES"), cRespondedNA : getString("IDS_FORMS_TRACKER_RESPONDED_NA"), cNoSubmissionHistory: getString("IDS_FORMS_TRACKER_NO_SUBMISSION_HISTORY"), cAnonymousUser : getString("IDS_SHAREDWF_ANONYMOUS_USER"), cEditFileLocation: "(" + getString("IDS_FORMS_TRACKER_EDIT_FILE_LOCATION") + ")", cNewFormsReceivedSinceLastViewed: getString("IDS_FORMS_TRACKER_NUM_NEW_FORMS_RECVD"), cNoDistributedForms: getString("IDS_TRACKER_NO_DISTRIBUTED_FORMS"), cNoReceivedForms: getString("IDS_TRACKER_NO_RECEIVED_FORMS"), cNoFormsInFolder: getString("IDS_TRACKER_NO_FORMS_IN_FOLDER"), oWorkflowState: { "Active": AnnotsString.IDS_WORKFLOW_STATE_INPROGRESS, "Ended": getString("IDS_SHAREDWF_WORKFLOW_HAS_ENDED"), "Suspended": AnnotsString.IDS_WORKFLOW_STATE_SUSPENDED, "Corrupted": AnnotsString.IDS_WORKFLOW_STATE_CORRUPTED, }, //Table Column Header strings cTableHeaderFileName: AnnotsString.IDS_TRACKER_UBER_TABLE_HEADER_FILENAME, cTableHeaderRespondentsAndNew: getString("IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDENTS"), cTableHeaderTotalRecipients: getString("IDS_FORMS_TRACKER_TABLE_HEADER_TOTAL_RECIPIENTS"), cTableHeaderDistributedOn: getString("IDS_FORMS_TRACKER_TABLE_HEADER_DISTRIBUTED_ON"), cTableHeaderLastSubmittedOn: getString("IDS_FORMS_TRACKER_TABLE_HEADER_LAST_DATE_TIME_SUBMITTED"), cTableHeaderNumberOfResponsesReceived: getString("IDS_FORMS_TRACKER_TABLE_HEADER_NUM_RESPONSES_RECEIVED"), cTableHeaderEmail: AnnotsString.IDS_TABLE_HEADER_EMAIL, cTableHeaderNew: getString("IDS_FORMS_TRACKER_TABLE_HEADER_NEW"), cTableHeaderResponded: getString("IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDED"), cTableHeaderStatus: AnnotsString.IDS_TABLE_HEADER_STATUS, cTableHeaderRecipientName: getString("IDS_FORMS_TRACKER_TABLE_HEADER_RECIPIENT_NAME"), cTableHeaderLastResponseDateTime: getString("IDS_FORMS_TRACKER_TABLE_HEADER_LAST_RESPONSE_DATE_TIME"), cTableHeaderUnread: getString("IDS_FORMS_TRACKER_TABLE_HEADER_UNREAD"), cTableHeaderNumberOfResponses: getString("IDS_FORMS_TRACKER_TABLE_HEADER_NUM_RESPONSES"), cTableHeaderSubmittedDateTime: getString("IDS_FORMS_TRACKER_TABLE_HEADER_SUBMITTED_DATE_TIME"), cTableHeaderTitle: AnnotsString.IDS_TABLE_HEADER_TITLE, cTableHeaderReviewerType: AnnotsString.IDS_TABLE_HEADER_REVIEWER_TYPE, //Def List strings cDefListFormLocationProp: getString("IDS_FORMS_TRACKER_DEF_LIST_FORM_LOCATION"), cDefListResponsesLocationProp: getString("IDS_FORMS_TRACKER_DEF_LIST_RESPONSES_LOCATION"), cDefListStatusProp: AnnotsString.IDS_DEFINITION_LIST_STATUS, cDefListErrorProp: AnnotsString.IDS_DEFINITION_LIST_ERROR, cDefListFormHostProp: getString("IDS_FORMS_TRACKER_DEF_LIST_FORM_HOST"), cDefListAccessLevelProp: AnnotsString.IDS_DEFINITION_LIST_ACCESS_LEVEL, cDefListDistributedOnProp: getString("IDS_FORMS_TRACKER_DEF_LIST_DISTRIBUTED_ON"), cDefListReceivedOnProp: AnnotsString.IDS_DEFINITION_LIST_RECEIVED_ON, cDefListLastOpenedOnProp: getString("IDS_FORMS_TRACKER_DEF_LIST_LAST_OPENED"), cDefListDeadlineProp: AnnotsString.IDS_DEFINITION_LIST_DEADLINE, cDefListTotalNumberOfResponsesProp: getString("IDS_FORMS_TRACKER_DEF_LIST_TOTAL_NUM_OF_RESPONSES"), cDefListTotalRecipientsProp: getString("IDS_FORMS_TRACKER_DEF_LIST_TOTAL_NUM_OF_RECIPIENTS"), cDefListRecipientsRespondedProp: getString("IDS_FORMS_TRACKER_DEF_RECIPIENTS_RESPONDED"), cDefListRecipientsNotRespondedProp: getString("IDS_FORMS_TRACKER_DEF_RECIPIENTS_NOT_RESPONDED"), //Action strings cEndDataCollection: getString("IDS_FORMS_TRACKER_END_DATA_COLLECTION"), cOpenOriginalForm: getString("IDS_FORMS_TRACKER_OPEN_ORIGINAL_FORM"), cRemoveResponsesFromTracker: getString("IDS_FORMS_TRACKER_REMOVE_RESPONSES"), cRemoveFormFromTracker: getString("IDS_FORMS_TRACKER_REMOVE_FORM_FROM_TRACKER"), cAddRecipients: getString("IDS_FORMS_TRACKER_INVITE"), cEmailInitiator: AnnotsString.IDS_TRACKER_ACTION_EMAIL_INITIATOR, cEmailAllRecipients: getString("IDS_FORMS_TRACKER_EMAIL_ALL"), cEmailNonRespondents: getString("IDS_FORMS_TRACKER_EMAIL_NON_RESPONDENTS"), init: function(dialog) { }, currentFormWorkflow: { cFormWorkflowID: null, oFormWorkflowInfo: null, }, currentFormWorkflowsInFeed: { aFormWorkflowInfo: null, }, showMyFormsItemView: function(dialog, feed) { try { var L = function(s) { return getString(s); } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var extension = selection.Extension; //get the options for this view app.beginPriv(); var options = dialog.getOptions(); app.endPriv(); var bShownFromFIW = 0; if(options != undefined) { var optArr = options.split(','); for(var index = 0; index < optArr.length; index++) { var singleOpt = optArr[index]; var singleOptArr = singleOpt.split(':'); switch(singleOptArr[0]) { case 'landedFromFIW': bShownFromFIW = singleOptArr[1]; break; } } } var cFormWorkflowID = extension[fwDocID]; if(this.currentFormWorkflow.cFormWorkflowID != cFormWorkflowID) { this.currentFormWorkflow.cFormWorkflowID = cFormWorkflowID; app.beginPriv(); this.currentFormWorkflow.oFormWorkflowInfo = FormWorkflow.getFormWorkflowInfo(cFormWorkflowID); app.endPriv(); } var formsWorkflowInfo = this.currentFormWorkflow.oFormWorkflowInfo; var cFormWorkflowMethod = extension[fwMethod]; var bIsSharedForm = (cFormWorkflowMethod == "SharedForm"); var cVisibleSharedForm = bIsSharedForm ? "" : "display: none;"; var aRecipients = []; var oRecipients = formsWorkflowInfo.oRecipients; var nResponded = 0; var nTotalResponses = 0; for(var i in oRecipients) { //get the info of recipients that is to be shown in the recipients table aRecipients[aRecipients.length] = { cRecipientName: oRecipients[i].cName, cRecipientEmail: oRecipients[i].cEmail, cRecipientResponseFileLink: "acrobat:Forms?action=selectData&workflow=" + cFormWorkflowID + "&recipient=" + encodeURIComponent(oRecipients[i].cEmail), cRecipientLastResponseDateTime: oRecipients[i].cLastResponseDateTime, nRecipientLastResponseDateTime: oRecipients[i].nLastResponseDateTime, cRecipientUnreadResponses: bIsSharedForm ? ("" + oRecipients[i].nNewResponses) : "", cRecipientTotalResponses: "" + oRecipients[i].nResponses, }; //myFormsTrackerDebugAlert(cName + "\n" + cEmail + "\n" + cRecvdForm); nTotalResponses += oRecipients[i].nResponses; if(oRecipients[i].nResponses > 0) nResponded++; } var cFormWorkflowResponsesName = selection.Title; var cViewResponsesLink = LINK("acrobat", "Forms?action=openResponses&workflow=" + cFormWorkflowID); var cFormWorkflowOpenLink = LINK("acrobat", "Forms?action=openForm&workflow=" + cFormWorkflowID); var cFormWorkflowFilePath = formsWorkflowInfo.cFormLocation; var cResponsesFilePath = formsWorkflowInfo.cResponsesLocation; var cChangeResponsesLocationPath = LINK("acrobat", "Forms?action=changeResponsesLocation&workflow=" + cFormWorkflowID); var cFormWorkflowHost = formsWorkflowInfo.cFormHost; var cDistributedOn = formsWorkflowInfo.cDistributedOn; var cSentRecvdUsingServer = this.cSentUsing; cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%dateTimeSentRecvd%", cDistributedOn); if(bIsSharedForm) cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", cFormWorkflowHost); else cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", this.cEmailAttachment); var cFormWorkflowState = formsWorkflowInfo.cState; var bIsFormSuspended = false; if(bIsSharedForm) bIsFormSuspended = (cFormWorkflowState == FORM_STATE_SUSPENDED);//only a shared form can move to suspended state var bIsFormCorrupted = false; if(bIsSharedForm) bIsFormCorrupted = (cFormWorkflowState == FORM_STATE_CORRUPTED);//only a shared form can be in corrupted state var cClickHerePostString = ""; var cClickHereLink = ""; var cHowDoIFixThisLink = ""; var cVisibleClickHerePart = "display: none;";//dont display by default var cVisibleHowDoIFixThis = "display: none;";//dont display by default if(bIsFormSuspended) { cClickHereLink = "acrobat:Forms?action=restart&workflow=" + cFormWorkflowID; cClickHerePostString = this.cToResumeActive; cVisibleClickHerePart = ""; } else if(bIsFormCorrupted) { cHowDoIFixThisLink = "acrobat:Review?showHelpForCorruptedWorkflow"; cVisibleHowDoIFixThis = ""; } var cFormWorkflowsFileState = formsWorkflowInfo.cStateAsPerWorkflowsFile; //display status only for Shared Form var cVisibleStatus = bIsSharedForm ? "" : "display: none;"; var cFormWorkflowError = ""; if(bIsSharedForm) cFormWorkflowError = formsWorkflowInfo.cError; //display error only for Shared Form having error var cVisibleError = (!bIsSharedForm || cFormWorkflowError == "") ? "display: none;" : ""; if(cFormWorkflowError == "") cFormWorkflowError = this.nbsp_placeholder;//else the span tag is reduced to null leading to everything getting red var nTotalRecipients = formsWorkflowInfo.nRecipients; var cTotalRecipients = "" + nTotalRecipients; var cTotalResponses = "" + formsWorkflowInfo.nResponses; var cNewResponses = ""; var cNewFormsReceivedSinceLastViewed = ""; var cVisibleNewFormsReceivedSinceLastViewed = "display: none;";//dont display by default var cVisibleNoneSinceLastViewed = "";//display by default if(bIsSharedForm) { cNewResponses = "" + formsWorkflowInfo.nNewResponses; if(formsWorkflowInfo.nNewResponses > 0) { cVisibleNoneSinceLastViewed = "display: none;";//dont display this if there is some update to show cVisibleNewFormsReceivedSinceLastViewed = ""; cNewFormsReceivedSinceLastViewed = this.cNewFormsReceivedSinceLastViewed; cNewFormsReceivedSinceLastViewed = cNewFormsReceivedSinceLastViewed.replace("%num%", formsWorkflowInfo.nNewResponses); } } var nNewResponses = bIsSharedForm ? formsWorkflowInfo.nNewResponses : 0; var nNotResponded = nTotalRecipients - nResponded; var cRecipientsResponded; if(formsWorkflowInfo.bAllowAnonymous) cRecipientsResponded = "" + nTotalResponses; else cRecipientsResponded = "" + nResponded; if(bIsSharedForm) cRecipientsResponded += " (" + nNewResponses + ")"; var cRecipientsNotResponded = "" + nNotResponded; //Access Level strings var oAccessLevel = { "NonRestricted": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS_FD, "Restricted": AnnotsString.IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS_FD, }; var cAccessLevel = ""; var cVisibleAccessLevel = "display: none;"; if(bIsSharedForm) { cAccessLevel = formsWorkflowInfo.cAccessLevel; if(cAccessLevel == "NonRestricted" || cAccessLevel == "Restricted") { cAccessLevel = oAccessLevel[cAccessLevel]; cVisibleAccessLevel = ""; } } //since initiator ends the workflow, "Data Collection has ended" is never shown for initiator var cVisibleDataCollectionEndedSinceLastViewed = "display: none;"; var cDataCollectionEndedSinceLastViewed = ""; // var nNumNewFormsReceived = 0; if(bIsSharedForm) nNumNewFormsReceived = formsWorkflowInfo.nNewResponses; var bDataCollectionEnded = (cFormWorkflowsFileState == FORM_STATE_ENDED || cFormWorkflowState == FORM_STATE_ENDED) ? true : false; var cEmailAllRecipientsLink = LINK("acrobat", "Forms?action=emailAll&workflow=" + cFormWorkflowID); var cEmailNonRespondentsLink = LINK("acrobat", "Forms?action=emailNonRespondents&workflow=" + cFormWorkflowID); var cAddRecipientsLink = LINK("acrobat", "Forms?action=invite&workflow=" + cFormWorkflowID); var cRemoveResponsesFromTrackerLink = LINK("acrobat", "Forms?action=delete&workflow=" + cFormWorkflowID); var cEndDataCollectionLink = LINK("acrobat", "Forms?action=end&workflow=" + cFormWorkflowID); var cVisibleEndDataCollectionLink = "display:none";//dont display by default if(bIsSharedForm) { if(!bDataCollectionEnded) cVisibleEndDataCollectionLink = ""; } var cPDFIconForForm = (bIsSharedForm && bDataCollectionEnded) ? "ended-iconic" : "pdf-iconic"; var cDistributionMethod = formsWorkflowInfo.cDistributionMethod; //show "Add Recipients" if I am the distributor and the data collection has not ended and the form was not distributed using Manual Distribution var cVisibleAddRecipients = "display: none;";//dont display by default if((cDistributionMethod != "Manual") && (!bIsSharedForm || !bDataCollectionEnded)) cVisibleAddRecipients = ""; var cVisibleEmailRecipientsNotResponded = "";//display by default if(formsWorkflowInfo.bAllowAnonymous) cVisibleEmailRecipientsNotResponded = "display: none;"; var cVisibleRecipientsNotResponded = "";//display by default if(formsWorkflowInfo.bAllowAnonymous) cVisibleRecipientsNotResponded = "display: none;"; XML.setSettings({ignoreComments: false}); var group = extension[fwFolder]; var cTopArrowXHTML = null; var cSentRecvd = (feed.URL == cFormsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cFormsIveSentURL) ? cFormsIveSentFeedLink : cFormsIveReceivedFeedLink; var cFormName = selection.Title; //if group is not selected, then "Forms > I've Sent > filename" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cFormsSuperGroupLink}>{this.cFormsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > {cFormName} </div> } //there is a group(folder) as well else { var cGroupLink = "acrobat:Inbox?gotoLevel=1"; cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cFormsSuperGroupLink}>{this.cFormsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > <a class="blueLink" href={cGroupLink} style="unicode-bidi: embed;">{group}</a> > {cFormName} </div> } var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> <div id="pg_distributed_details" style="margin-left: 35px;"> <br /> <div style="margin-left: -6px;"> <table class="definitionListTableLarge"> <tr> <th><span class="dontWrap">{this.cDefListResponsesLocationProp}</span></th> <td>{cResponsesFilePath} {this.nbsp_placeholder}<a href={cChangeResponsesLocationPath}><span class="blueLink">{this.cEditFileLocation}</span></a></td> </tr> <tr style={cVisibleStatus}> <th><span class="dontWrap">{this.cDefListStatusProp}</span></th> <td><span class="dontWrap">{this.oWorkflowState[cFormWorkflowState]} <span style={cVisibleHowDoIFixThis}><a style="color:blue;" href={cHowDoIFixThisLink}>({this.cHowDoIFixThis})</a></span> <span style={cVisibleClickHerePart}>({this.cClick} <a style="color:blue;" href={cClickHereLink}>{this.cHere}</a> {cClickHerePostString})</span></span></td> </tr> <tr style={cVisibleError}> <th>{this.nbsp_placeholder}</th> <td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif" /><span style="color:red;">{cFormWorkflowError}</span></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListDistributedOnProp}</span></th> <td><span class="dontWrap">{cSentRecvdUsingServer}</span></td> </tr> <tr style={cVisibleAccessLevel}> <th><span class="dontWrap">{this.cDefListAccessLevelProp}</span></th> <td><span class="dontWrap">{cAccessLevel}</span></td> </tr> </table> </div> <div class="buttons"> <a style={cVisibleEndDataCollectionLink} href={cEndDataCollectionLink} class="stop-data-collection-iconic"><span class="blueLink">{this.cEndDataCollection}</span></a> <a href={cFormWorkflowOpenLink} class="open-original-form-iconic"><span class="blueLink">{this.cOpenOriginalForm}</span></a> </div> <br /> <div class="dottedLine">{this.nbsp_placeholder}</div> <br /> <div class="buttons"> <span class="responses-iconic" style="font-weight:bold; font-size:12;">{this.cResponsesLabel}</span> </div> <div style="margin-left: -6px;"> <table class="definitionListTableLarge"> <tr> <th><span class="dontWrap">{this.cDefListRecipientsRespondedProp}</span></th> <td><span class="dontWrap">{cRecipientsResponded}</span></td> </tr> <tr style={cVisibleRecipientsNotResponded}> <th><span class="dontWrap">{this.cDefListRecipientsNotRespondedProp}</span></th> <td><span class="dontWrap">{cRecipientsNotResponded}</span></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListTotalRecipientsProp}</span></th> <td><span class="dontWrap">{cTotalRecipients}</span></td> </tr> </table> </div> <div class="buttons"> <a href={cEmailAllRecipientsLink} class="email-all-iconic"><span class="blueLink">{this.cEmailAllRecipients}</span></a> <a style={cVisibleAddRecipients} href={cAddRecipientsLink} class="add-reviewer-iconic"><span class="blueLink">{this.cAddRecipients}</span></a> <a style={cVisibleEmailRecipientsNotResponded} href={cEmailNonRespondentsLink} class="email-recipients-not-respond-iconic"><span class="blueLink">{this.cEmailNonRespondents}</span></a> </div> <br /> </div> <div class="borderedDivDetailPage"> <table id="recipientList" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th>{this.cTableHeaderEmail}</th> <th>{this.cTableHeaderRecipientName}</th> <th><center>{this.cTableHeaderResponded}</center></th> <th><center>{this.cTableHeaderLastResponseDateTime}</center></th> </tr> </table> </div> </body> </html> var viewResponsesXHTML; if(bShownFromFIW) { viewResponsesXHTML = <div class="roundcont"> <div class="roundtop"> <img src="AdobeTracker/tl.gif" alt="" width="15" height="15" class="corner" style="display: none" /> </div> <div style="margin-left: 15px;"> <a class={cPDFIconForForm} title={cResponsesFilePath} href={cViewResponsesLink}><span class="blueLink" style="font-weight: bold; font-size: 12;">{this.cViewResponsesLabel}</span></a> <br /> <br /> <span style="margin-left: 30px; font-weight:bold; color: black;">{this.cDistributionMessage}</span> </div> <div class="roundbottom"> <img src="AdobeTracker/bl.gif" alt="" width="15" height="5" class="corner" style="display: none" /> </div> </div> } else { viewResponsesXHTML = <div class="buttons"> <a class={cPDFIconForForm} title={cResponsesFilePath} href={cViewResponsesLink}><span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;">{this.cViewResponsesLabel}</span></a> </div> } //get the reference to DIV with ID "pg_distributed_details" var topContent = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::div) { if(i.@id == "pg_distributed_details") { topContent = i; break; } } // topContent.prependChild(viewResponsesXHTML); var brXHTML = <br />; topContent.prependChild(brXHTML); //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //get the reference to TABLE with ID "recipientList" var tableXHTML = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "recipientList") { tableXHTML = i; break; } } // //Sorting functionality for Recipients table in Detailed View of a Form var isRecipientLesser = function(recipient1, recipient2) { if(recipient1.nRecipientLastResponseDateTime < recipient2.nRecipientLastResponseDateTime) { return 1; } else if(recipient1.nRecipientLastResponseDateTime == recipient2.nRecipientLastResponseDateTime) { //compare the email IDs - case-insensitive var emailID1 = recipient1.cRecipientEmail.toLowerCase(); var emailID2 = recipient2.cRecipientEmail.toLowerCase(); return (emailID1 > emailID2); } else { return 0; } }; // //sort recipients based on Last Response Date/Time and then on Email(alphabetical, case-insensitive) for(var current = 1; current < aRecipients.length; current++) { //save the current value var curVal = aRecipients[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //check if aRecipients[trav] < curVal if(isRecipientLesser(aRecipients[trav], curVal)) aRecipients[trav + 1] = aRecipients[trav]; else//if(aRecipients[trav] >= curVal) break; } if((trav + 1) != current) aRecipients[trav + 1] = curVal; } // var evenOddRow = false; //for all the recipients in this workflow, create a row <tr> and insert into tableXHTML for(var recipientIndex = 0; recipientIndex < aRecipients.length; recipientIndex++) { var curRecipient = aRecipients[recipientIndex]; //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var cResponded = this.cRespondedNo; var cRedOrBlack = "red"; if (formsWorkflowInfo.bAllowAnonymous && curRecipient.cRecipientName != this.cAnonymousUser) { // watson 1770293 cRedOrBlack = ""; cResponded = this.cRespondedNA; } else if(curRecipient.cRecipientTotalResponses > 0) { cRedOrBlack = ""; cResponded = this.cRespondedYes + " (" + curRecipient.cRecipientTotalResponses + ")"; } var recipientXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;">{curRecipient.cRecipientEmail}</td> <td><a href={curRecipient.cRecipientResponseFileLink}><span class="blueLink">{curRecipient.cRecipientName}</span></a></td> <td><center><span class={cRedOrBlack}>{cResponded}</span></center></td> <td><center>{curRecipient.cRecipientLastResponseDateTime}</center></td> </tr> tableXHTML.appendChild(recipientXHTML); } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); var replacedString = viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"); app.beginPriv(); Collab.saveTrackerHTML(replacedString); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, showSubmittedFormsItemView: function(dialog, feed) { try { var L = function(s) { return getString(s); } var LINK = function(scheme, s) { return scheme + ":" + s; } var selection = dialog.getSelection(); var extension = selection.Extension; var cFormWorkflowID = extension[fwDocID]; if(this.currentFormWorkflow.cFormWorkflowID != cFormWorkflowID) { this.currentFormWorkflow.cFormWorkflowID = cFormWorkflowID; app.beginPriv(); this.currentFormWorkflow.oFormWorkflowInfo = FormWorkflow.getFormWorkflowInfo(cFormWorkflowID); app.endPriv(); } var formsWorkflowInfo = this.currentFormWorkflow.oFormWorkflowInfo; var cFormWorkflowMethod = extension[fwMethod]; var bIsSharedForm = (cFormWorkflowMethod == "SharedForm"); var cVisibleSharedForm = bIsSharedForm ? "" : "display: none;"; var aSubmissions = []; var oSubmissions = formsWorkflowInfo.oSubmissions; //Submit Status Strings var oSubmitStatus = { "Successful": getString("IDS_FORMS_TRACKER_STATUS_SUCCESSFUL"), "Pending": getString("IDS_FORMS_TRACKER_STATUS_PENDING"), "Failed": getString("IDS_FORMS_TRACKER_STATUS_FAILED"), }; for(var i = 0; i < oSubmissions.length; i++) { //get the info of submissions that is to be shown in the submit history table aSubmissions[aSubmissions.length] = { cSubmitDateTime: oSubmissions[i].cSubmitDateTime, nSubmitDateTime: oSubmissions[i].nSubmitDateTime, cStatus: oSubmitStatus[oSubmissions[i].cStatus], }; } var cFormWorkflowFileName = selection.Title; var cViewFormLink = LINK("acrobat", "Forms?action=openForm&workflow=" + cFormWorkflowID); var cFormWorkflowFilePath = formsWorkflowInfo.cFormLocation; var bFormWorkflowIsSuspended = false; var cFormWorkflowState = this.oWorkflowState[formsWorkflowInfo.cState]; if(bIsSharedForm) { bFormWorkflowIsSuspended = formsWorkflowInfo.bIsSuspended; if(bFormWorkflowIsSuspended) cFormWorkflowState = this.oWorkflowState["Suspended"]; } var cVisibleResume = (bFormWorkflowIsSuspended == false) ? "display: none;" : ""; var cFormWorkflowResumeLink = LINK("acrobat", "Forms?action=restart&workflow=" + cFormWorkflowID); var cFormWorkflowsFileState = formsWorkflowInfo.cStateAsPerWorkflowsFile; var bDataCollectionEnded = (cFormWorkflowsFileState == FORM_STATE_ENDED || cFormWorkflowState == FORM_STATE_ENDED) ? true : false; var cPDFIconForForm = (bIsSharedForm && bDataCollectionEnded) ? "ended-iconic" : "pdf-iconic"; var cFormWorkflowError = ""; if(bIsSharedForm) cFormWorkflowError = formsWorkflowInfo.cError; //display error only for Shared Form having error var cVisibleError = (!bIsSharedForm || cFormWorkflowError == "") ? "display: none;" : ""; if(cFormWorkflowError == "") cFormWorkflowError = this.nbsp_placeholder;//else the span tag is reduced to null leading to everything getting red var cFormWorkflowHost = formsWorkflowInfo.cFormHost; var cReceivedOn = formsWorkflowInfo.cReceivedOn; var cSentRecvdUsingServer = this.cSentUsing; cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%dateTimeSentRecvd%", cReceivedOn); if(bIsSharedForm) cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", cFormWorkflowHost); else cSentRecvdUsingServer = cSentRecvdUsingServer.replace("%serverName%", this.cEmailAttachment); var cLastOpenedOn = formsWorkflowInfo.cLastOpenedOn; var cEmailInitiatorLink = LINK("acrobat", "Forms?action=emailInitiator&workflow=" + cFormWorkflowID); XML.setSettings({ignoreComments: false}); var group = extension[fwFolder]; var cTopArrowXHTML; var cSentRecvd = (feed.URL == cFormsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cFormsIveSentURL) ? cFormsIveSentFeedLink : cFormsIveReceivedFeedLink; var cFormName = selection.Title; //if group is not selected, then "Forms > I've Sent > filename" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cFormsSuperGroupLink}>{this.cFormsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > {cFormName} </div> } //there is a group(folder) as well else { var cGroupLink = "acrobat:Inbox?gotoLevel=1"; cTopArrowXHTML = <div class="bread_crumb"> <a class="blueLink" href={cFormsSuperGroupLink}>{this.cFormsSuperGroup}</a> > <a class="blueLink" href={cSentRecvdLink}>{cSentRecvd}</a> > <a class="blueLink" href={cGroupLink} style="unicode-bidi: embed;">{group}</a> > {cFormName} </div> } var cVisibleSubmissionHistoryTable = (aSubmissions.length == 0) ? "display: none;" : ""; var cVisibleNoSubmissionHistory = (aSubmissions.length == 0) ? "margin-left: 5px;" : "display: none; margin-left: 5px;"; var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> <div id="pg_sent_details" style="margin-left: 35px;"> <br /> <div class="buttons"> <a title={cFormWorkflowFilePath} href={cViewFormLink} class={cPDFIconForForm}><span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;">{this.cViewFormButtonLabel}</span></a> </div> <br /> <div style="margin-left: -6px;"> <table class="definitionListTableSmall"> <tr> <th><span class="dontWrap">{this.cDefListFormLocationProp}</span></th> <td><a style="color:#0000FF;" href={cViewFormLink}>{cFormWorkflowFilePath}</a></td> </tr> <tr style={cVisibleError}> <th>{this.nbsp_placeholder}</th> <td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif" /><span style="color:red;">{cFormWorkflowError}</span></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListReceivedOnProp}</span></th> <td><span class="dontWrap">{cSentRecvdUsingServer}</span></td> </tr> <tr> <th><span class="dontWrap">{this.cDefListLastOpenedOnProp}</span></th> <td><span class="dontWrap">{cLastOpenedOn}</span></td> </tr> </table> </div> <div class="dottedLine">{this.nbsp_placeholder}</div> <br /> <div class="buttons"> <span class="submission-history-iconic" style="font-weight:bold; font-size:12;">{this.cSubmissionHistoryLabel}</span> </div> <br /> <div class="buttons"> <a style="color:#0000FF;" href={cEmailInitiatorLink} class="email-initiator-iconic"><span class="blueLink">{this.cEmailInitiator}</span></a> </div> <br /> </div> <div class="borderedDivDetailPage"> <table style={cVisibleSubmissionHistoryTable} id="submitHistory" class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th>{this.cTableHeaderSubmittedDateTime}</th> <th style={cVisibleSharedForm}>{this.cTableHeaderStatus}</th> </tr> </table> <div style={cVisibleNoSubmissionHistory}> {this.cNoSubmissionHistory}<br /> </div> </div> </body> </html> //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { //myFormsTrackerDebugAlert("body found"); body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //get the reference to TABLE with ID "submitHistory" var tableXHTML = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::table) { if(i.@id == "submitHistory") { //myFormsTrackerDebugAlert("submitHistory found"); tableXHTML = i; break; } } // //sort submissions based on time for(var current = 1; current < aSubmissions.length; current++) { //save the current value var curVal = aSubmissions[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //check if aSubmissions[trav] < curVal if(aSubmissions[trav].nSubmitDateTime < curVal.nSubmitDateTime) aSubmissions[trav + 1] = aSubmissions[trav]; else//if(aSubmissions[trav] >= curVal) break; } if((trav + 1) != current) aSubmissions[trav + 1] = curVal; } // var evenOddRow = false; //for all the recipients in this workflow, create a row <tr> and insert into tableXHTML for(var index = 0; index < aSubmissions.length; index++) { var curSubmit = aSubmissions[index]; //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var recipientXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;">{curSubmit.cSubmitDateTime}</td> <td style={cVisibleSharedForm}>{curSubmit.cStatus}</td> </tr> tableXHTML.appendChild(recipientXHTML); } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); app.beginPriv(); Collab.saveTrackerHTML(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;")); app.endPriv(); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, showItemView: function(dialog) { try { var feed = dialog.getFeed(); //am i the distributor or a recipient var selection = dialog.getSelection(); var extension = selection.Extension; var isInitiated = extension[fwIsInitiated]; if(isInitiated) this.showMyFormsItemView(dialog, feed); else this.showSubmittedFormsItemView(dialog, feed); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, showMyFormsFeedView: function(dialog, feed) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } var extension = feed.Extension; var items = feed.Items; var group; XML.setSettings({ignoreComments: false}); if(dialog.isGroupSelection()) group = dialog.getSelection("Group"); //free up the old formworkflowinfo objects if(this.currentFormWorkflowsInFeed.aFormWorkflowInfo) { for(var i = 0; i < this.currentFormWorkflowsInFeed.aFormWorkflowInfo.length; i++) this.currentFormWorkflowsInFeed.aFormWorkflowInfo[i] = null; } this.currentFormWorkflowsInFeed.aFormWorkflowInfo = new Array(); var aFormsWorkflowList = []; for(var i in items) { var item = items[i]; var docID = item.Extension[fwDocID]; // Filter by group and hidden if(item.Extension[inboxHidden]) continue; if(group != undefined && item.Extension[fwFolder] != group) continue; var formsWorkflowInfo = null; app.beginPriv(); formsWorkflowInfo = FormWorkflow.getFormWorkflowInfo(docID); app.endPriv(); if(formsWorkflowInfo == null) continue; this.currentFormWorkflowsInFeed.aFormWorkflowInfo.push(formsWorkflowInfo); var bIsSharedForm = (item.Extension[fwMethod] == "SharedForm"); var nResponded = 0; var oRecipients = formsWorkflowInfo.oRecipients; var nTotalResponses = 0; for(var i in oRecipients) { if(oRecipients[i].nResponses > 0) { nTotalResponses += oRecipients[i].nResponses; nResponded++; } } var nNewResponses = bIsSharedForm ? formsWorkflowInfo.nNewResponses : 0; var cRecipientsResponded; if(formsWorkflowInfo.bAllowAnonymous) cRecipientsResponded = "" + nTotalResponses; else cRecipientsResponded = "" + nResponded; if(bIsSharedForm) cRecipientsResponded += " (" + nNewResponses + ")"; aFormsWorkflowList[aFormsWorkflowList.length] = { cFileName: item.Title, cFileLink: LINK("acrobat", "Inbox?container=" + ftNS + "&selectFeed=" + feed.URL + "#" + item.Guid), cFormWorkflowType: item.Extension[fwMethod], cDistributedOn: formsWorkflowInfo.cDistributedOn, nDistributedOn: formsWorkflowInfo.nDistributedOn, cRecipientsResponded: cRecipientsResponded, nRecipients: formsWorkflowInfo.nRecipients, } } var cSentRecvd = (feed.URL == cFormsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cFormsIveSentURL) ? cFormsIveSentFeedLink : cFormsIveReceivedFeedLink; var cNoFormsInFeed; if(group) cNoFormsInFeed = this.cNoFormsInFolder; else cNoFormsInFeed = (feed.URL == cFormsIveSentURL) ? this.cNoDistributedForms : this.cNoReceivedForms; var viewXHTML; if(aFormsWorkflowList.length == 0) { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div class="summary_page"> <span class="forms-distributed-iconic"><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <span> &#8226; {cNoFormsInFeed} </span> <br /> </div> </body> </html> } else { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div> <div id="mainDiv" class="summary_page"> <span class="forms-distributed-iconic"><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> </div> </body> </html> } var cTopArrowXHTML; //if group is not selected, then "Forms > I've Sent" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a href={cFormsSuperGroupLink}><span class="blueLink">{this.cFormsSuperGroup}</span></a> > {cSentRecvd} </div> } //there is a group(folder) as well else { cTopArrowXHTML = <div class="bread_crumb"> <a href={cFormsSuperGroupLink}><span class="blueLink">{this.cFormsSuperGroup}</span></a> > <a href={cSentRecvdLink}><span class="blueLink">{cSentRecvd}</span></a> > {group} </div> } //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // //prepend the Top Arrow XHTML as a child of body body.prependChild(cTopArrowXHTML); //create the table only if there are workflows if(aFormsWorkflowList.length > 0) { //get the reference to DIV with ID "mainDiv" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // //create a table and add as child of mainDiv var tableXHTML = <table class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderDistributedOn}</th> <th><center>{this.cTableHeaderRespondentsAndNew}</center></th> <th><center>{this.cTableHeaderTotalRecipients}</center></th> </tr> </table> // borderedDiv.appendChild(tableXHTML); //sort forms based on Sent time for(var current = 1; current < aFormsWorkflowList.length; current++) { //save the current value var curVal = aFormsWorkflowList[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //check if aFormsWorkflowList[trav] < curVal if(aFormsWorkflowList[trav].nDistributedOn < curVal.nDistributedOn) aFormsWorkflowList[trav + 1] = aFormsWorkflowList[trav]; else//if(aFormsWorkflowList[trav] >= curVal) break; } if((trav + 1) != current) aFormsWorkflowList[trav + 1] = curVal; } // var evenOddRow = false; //for all the Forms in this Feed, create a row <tr> and insert into tableXHTML for(var formIndex = 0; formIndex < aFormsWorkflowList.length; formIndex++) { var curForm = aFormsWorkflowList[formIndex]; //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var formXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curForm.cFileLink}><span class="blueLink">{curForm.cFileName}</span></a></td> <td>{curForm.cDistributedOn}</td> <td><center>{curForm.cRecipientsResponded}</center></td> <td><center>{curForm.nRecipients}</center></td> </tr> tableXHTML.appendChild(formXHTML); } } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, showSubmittedFormsFeedView: function(dialog, feed) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } var extension = feed.Extension; var items = feed.Items; var group; XML.setSettings({ignoreComments: false}); if(dialog.isGroupSelection()) group = dialog.getSelection("Group"); //free up the old formworkflowinfo objects if(this.currentFormWorkflowsInFeed.aFormWorkflowInfo) { for(var i = 0; i < this.currentFormWorkflowsInFeed.aFormWorkflowInfo.length; i++) this.currentFormWorkflowsInFeed.aFormWorkflowInfo[i] = null; } this.currentFormWorkflowsInFeed.aFormWorkflowInfo = new Array(); var aFormsWorkflowList = []; for(var i in items) { var item = items[i]; var docID = item.Extension[fwDocID]; // Filter by group and hidden if(item.Extension[inboxHidden]) continue; if(group != undefined && item.Extension[fwFolder] != group) continue; var formsWorkflowInfo = null; app.beginPriv(); formsWorkflowInfo = FormWorkflow.getFormWorkflowInfo(docID); app.endPriv(); if(formsWorkflowInfo == null) continue; this.currentFormWorkflowsInFeed.aFormWorkflowInfo.push(formsWorkflowInfo); aFormsWorkflowList[aFormsWorkflowList.length] = { cFileName: item.Title, cFileLink: LINK("acrobat", "Inbox?container=" + ftNS + "&selectFeed=" + feed.URL + "#" + item.Guid), cFormWorkflowType: item.Extension[fwMethod], cLastSubmittedOn: formsWorkflowInfo.cLastSubmittedOn, nReceivedOn: formsWorkflowInfo.nReceivedOn, } } var cSentRecvd = (feed.URL == cFormsIveSentURL) ? this.cIveSent : this.cIveReceived; var cSentRecvdLink = (feed.URL == cFormsIveSentURL) ? cFormsIveSentFeedLink : cFormsIveReceivedFeedLink; var cNoFormsInFeed; if(group) cNoFormsInFeed = this.cNoFormsInFolder; else cNoFormsInFeed = (feed.URL == cFormsIveSentURL) ? this.cNoDistributedForms : this.cNoReceivedForms; var viewXHTML; if(aFormsWorkflowList.length == 0) { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div> <div class="summary_page"> <span class="forms-received-iconic"><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <span> &#8226; {cNoFormsInFeed} </span> <br /> </div> </div> </body> </html> } else { viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body id="body"> <div id="mainDiv" class="summary_page"> <span class="forms-received-iconic"><span style="font-weight:bold;">{cSentRecvd}</span></span> <br /> <br /> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> </body> </html> } var cTopArrowXHTML; //if group is not selected, then "Forms > I've Sent" if(group == undefined) { cTopArrowXHTML = <div class="bread_crumb"> <a href={cFormsSuperGroupLink}><span class="blueLink">{this.cFormsSuperGroup}</span></a> > {cSentRecvd} </div> } //there is a group(folder) as well else { cTopArrowXHTML = <div class="bread_crumb"> <a href={cFormsSuperGroupLink}><span class="blueLink">{this.cFormsSuperGroup}</span></a> > <a href={cSentRecvdLink}><span class="blueLink">{cSentRecvd}</span></a> > {group} </div> } //get the reference to BODY with ID "body" var body = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::body) { if(i.@id == "body") { body = i; break; } } // body.prependChild(cTopArrowXHTML);//prepend the Top Arrow XHTML as a child of body //create the table only if there are workflows if(aFormsWorkflowList.length > 0) { //get the reference to DIV with ID "mainDiv" var borderedDiv = null; var xhtml = new Namespace("http://www.w3.org/1999/xhtml"); for each(var i in viewXHTML..xhtml::div) { if(i.@id == "borderedDivID") { borderedDiv = i; break; } } // //create a table and add as child of mainDiv var tableXHTML = <table class="borderedTable" cellpadding="15" cellspacing="0"> <tr bgcolor={cTableHeaderColor}> <th style="padding-left: 10px;">{this.cTableHeaderFileName}</th> <th>{this.cTableHeaderLastSubmittedOn}</th> </tr> </table> // borderedDiv.appendChild(tableXHTML); //sort forms based on Received time for(var current = 1; current < aFormsWorkflowList.length; current++) { //save the current value var curVal = aFormsWorkflowList[current]; // var trav = current - 1; for(; trav >= 0; trav--) { //check if aFormsWorkflowList[trav] < curVal if(aFormsWorkflowList[trav].nReceivedOn < curVal.nReceivedOn) aFormsWorkflowList[trav + 1] = aFormsWorkflowList[trav]; else//if(aFormsWorkflowList[trav] >= curVal) break; } if((trav + 1) != current) aFormsWorkflowList[trav + 1] = curVal; } // var evenOddRow = false; //for all the Forms in this Feed, create a row <tr> and insert into tableXHTML for(var formIndex = 0; formIndex < aFormsWorkflowList.length; formIndex++) { var curForm = aFormsWorkflowList[formIndex]; //create color string evenOddRow = !evenOddRow; var cRowColor = evenOddRow ? cTableOddRowColor : cTableEvenRowColor; var formXHTML = <tr bgcolor={cRowColor}> <td style="padding-left: 10px;"><a href={curForm.cFileLink}><span class="blueLink">{curForm.cFileName}</span></a></td> <td>{curForm.cLastSubmittedOn}</td> </tr> tableXHTML.appendChild(formXHTML); } } var stm = util.streamFromString(viewXHTML.toXMLString().replace(/NBSP_PLACEHOLDER/g, "&nbsp;"), "utf-8"); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, showFeedView: function(dialog, feed) { try { if(feed.URL == cFormsIveSentURL) this.showMyFormsFeedView(dialog, feed); else this.showSubmittedFormsFeedView(dialog, feed); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, //OK onSelectionChanged: function(dialog) { var myFormsURN = "urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/MyForms.rss" try { if(dialog.isItemSelection()) this.showItemView(dialog); else if(dialog.isFeedSelection() || dialog.isGroupSelection()) { var feed = dialog.getFeed(); this.showFeedView(dialog, feed); } } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, //OK handleLink: function(dialog, url) { if(url.indexOf("acrobat:internal?") == 0) { var params = url.split("?")[1].split("&"); for(var i in params) { var a = params[i].split("="); switch(a[0]) { case "mailto": app.mailMsg({bUI: true, cTo: unescape(a[1])}); break; } } } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] }, }; app.beginPriv(); result.showItemView = app.trustedFunction(result.showItemView); result.showFeedView = app.trustedFunction(result.showFeedView); result.showMyFormsFeedView = app.trustedFunction(result.showMyFormsFeedView); result.showSubmittedFormsFeedView = app.trustedFunction(result.showSubmittedFormsFeedView); result.showMyFormsItemView = app.trustedFunction(result.showMyFormsItemView); result.showSubmittedFormsItemView = app.trustedFunction(result.showSubmittedFormsItemView); app.endPriv(); return result; }), getGroupContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_FOLDER, onExecute: function(selection, doc) { FormsTrackerRemoveFolder(selection.feed.URL, this.group); }, group: selection.group }; return result; }, getFeedTip: function(selection) { return selection.feed.Description; }, getItemTip: function(selection) { //check if we are the initiator var bIsInitiated = selection.item.Extension[fwIsInitiated]; var formWorkflowType = bIsInitiated ? getString("IDS_FORMS_TRACKER_DISTRIBUTED_FORM_OF") : getString("IDS_FORMS_TRACKER_RECEIVED_FORM_OF"); var item = selection.item; var title = item.Title; return formWorkflowType.replace(/{title}/, title); }, getGroupTip: function(selection) { //check if we are the initiator var bIsInitiated = (selection.feed.URL == cFormsIveSentURL) ? true : false; if(bIsInitiated) return getString("IDS_FORMS_TRACKER_MY_FORMS_DESC"); else return getString("IDS_FORMS_TRACKER_PARTICIPANT_FORMS_DESC"); }, getFeedContextMenu: function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "CreateNewFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_NEW_FOLDER, onExecute: function(selection, doc) { var url = selection.feed.URL; FormsTrackerAddNewFolder(url); }, }; return result; }, getMultipleSelectContextMenu: app.trustedFunction(function(selection) { var result = new Array; result[result.length] = { cName: "Remove", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED, onExecute: function(selection, doc) { var bIsInitiated = (selection[0].feed.URL == cFormsIveSentURL) ? true : false; var bHasEBF = false; if(bIsInitiated) { //check if there is any EBF in the selected items for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var formType = extension[fwMethod]; if(formType != "SharedForm") { bHasEBF = true; break; } } } } RemoveMultipleSelectedForms(bIsInitiated && !bHasEBF); } }; result[result.length] = { bSeparator: true }; result[result.length] = { cName: "MoveToFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_MOVE_TO_FOLDER, oSubMenu: [ { cName: "None", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_FOLDER_NONE, onExecute: function(selection, doc) { var formIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var formID = extension[fwDocID]; formIDs[formIDs.length] = formID; } } SetFormFolderForMultipleForms(selection[0].feed.URL, formIDs, ""); } }, { bSeparator: true }, ] }; var sendToMenu = result[result.length - 1].oSubMenu; app.beginPriv(); var folders = FormWorkflow.getFormWorkflowFolders(selection[0].feed.URL);//the feed URL for the first selected item works here app.endPriv(); for(var i in folders) { var origFolderName = folders[i]; if(app.platform == "WIN" || app.platform == "MAC") { folders[i] = folders[i].replace("&", "&&");//escape actual ampersand } else if (app.platform == "UNIX") { folders[i] = folders[i].replace("&", "_");//for underline folders[i] = folders[i].replace("_", "__");//escape actual underscore } sendToMenu[sendToMenu.length] = { cName: origFolderName, cDisplayName: folders[i], onExecute: function(selection, doc) { var formIDs = new Array; for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var formID = extension[fwDocID]; formIDs[formIDs.length] = formID; } } SetFormFolderForMultipleForms(selection[0].feed.URL, formIDs, this.cName); } }; } return result; }), getItemContextMenu: app.trustedFunction(function(selection) { var result = new Array; //Open result[result.length] = { cName: "OpenForm", cDisplayName: AnnotsString.IDS_ATTACHLAUNCH_OPEN, onExecute: function(selection) { app.launchURL(selection.item.Link); } }; //Separator result[result.length] = { bSeparator: true }; //End Data Collection if(!app.viewerType.match(/Reader/))//End Data Collection should not be accessible in Reader { result[result.length] = { cName: "EndDataCollection", cDisplayName: getString("IDS_FORMS_TRACKER_END_DATA_COLLECTION_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=end&workflow=" + docID); }, onEnabled: function(selection) { //check if we are the distributor var bIsInitiated = selection.item.Extension[fwIsInitiated]; if(!bIsInitiated) return false; //check if it is a shared form workflow var formType = selection.item.Extension[fwMethod]; var bIsSharedForm = (formType == "SharedForm"); if(!bIsSharedForm) return false; //check if the form workflow's state is not "end" var docID = selection.item.Extension[fwDocID]; app.beginPriv(); var formsWorkflowInfo = FormWorkflow.getFormWorkflowInfo(docID); app.endPriv(); var cFormWorkflowState = formsWorkflowInfo.cState; var cFormWorkflowsFileState = formsWorkflowInfo.cStateAsPerWorkflowsFile; var bDataCollectionEnded = (cFormWorkflowsFileState == FORM_STATE_ENDED || cFormWorkflowState == FORM_STATE_ENDED); return !bDataCollectionEnded; } }; app.beginPriv(); result[result.length - 1].onEnabled = app.trustedFunction(result[result.length - 1].onEnabled); app.endPriv(); } //Remove Responses from Tracker result[result.length] = { cName: "RemoveResponses", cDisplayName: getString("IDS_FORMS_TRACKER_REMOVE_RESPONSES_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=delete&workflow=" + docID); }, onEnabled: function(selection) { //check if we are the distributor var isInitiated = selection.item.Extension[fwIsInitiated]; return isInitiated; } }; //Remove Form from Tracker result[result.length] = { cName: "RemoveForm", cDisplayName: getString("IDS_FORMS_TRACKER_REMOVE_FORM_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=removeForm&workflow=" + docID); }, onEnabled: function(selection) { //check if we are the submitter var isInitiated = selection.item.Extension[fwIsInitiated]; return !isInitiated; } }; //Separator result[result.length] = { bSeparator: true }; //Email Initiator result[result.length] = { cName: "EmailInitiator", cDisplayName: getString("IDS_FORMS_TRACKER_EMAIL_INITIATOR_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=emailInitiator&workflow=" + docID); }, onEnabled: function(selection, doc) { var isInitiated = selection.item.Extension[fwIsInitiated]; return (typeof isInitiated == "undefined" || !isInitiated); } }; //Email All Recipients result[result.length] = { cName: "EmailReviewers", cDisplayName: getString("IDS_FORMS_TRACKER_EMAIL_ALL_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=emailAll&workflow=" + docID); }, onEnabled: function(selection, doc) { var isInitiated = selection.item.Extension[fwIsInitiated]; return isInitiated; } }; //Add Recipients result[result.length] = { cName: "Invite", cDisplayName: getString("IDS_FORMS_TRACKER_INVITE_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=invite&workflow=" + docID); }, onEnabled: function(selection, doc) { var isInitiated = selection.item.Extension[fwIsInitiated]; if(!isInitiated) return false; var formType = selection.item.Extension[fwMethod]; var bIsSharedForm = (formType == "SharedForm"); if(!bIsSharedForm) return true; var cFormWorkflowID = selection.item.Extension[fwDocID]; app.beginPriv(); var formsWorkflowInfo = FormWorkflow.getFormWorkflowInfo(cFormWorkflowID); app.endPriv(); var cDistributionMethod = formsWorkflowInfo.cDistributionMethod; if(cDistributionMethod == "Manual") return false; var cFormWorkflowState = formsWorkflowInfo.cState; var cFormWorkflowsFileState = formsWorkflowInfo.cStateAsPerWorkflowsFile; var bDataCollectionEnded = (cFormWorkflowsFileState == FORM_STATE_ENDED || cFormWorkflowState == FORM_STATE_ENDED) ? true : false; return !bDataCollectionEnded; } }; app.beginPriv(); result[result.length - 1].onEnabled = app.trustedFunction(result[result.length - 1].onEnabled); app.endPriv(); //Email non-respondents result[result.length] = { cName: "EmailNonRespondents", cDisplayName: getString("IDS_FORMS_TRACKER_EMAIL_NON_RESPONDENTS_MENU"), onExecute: function(selection, doc) { var docID = selection.item.Extension[fwDocID]; if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=emailNonRespondents&workflow=" + docID); }, onEnabled: function(selection, doc) { var isInitiated = selection.item.Extension[fwIsInitiated]; if(!isInitiated) return false; var cFormWorkflowID = selection.item.Extension[fwDocID]; app.beginPriv(); var formsWorkflowInfo = FormWorkflow.getFormWorkflowInfo(cFormWorkflowID); app.endPriv(); return !(formsWorkflowInfo.bAllowAnonymous); } }; app.beginPriv(); result[result.length - 1].onEnabled = app.trustedFunction(result[result.length - 1].onEnabled); app.endPriv(); //Separator result[result.length] = { bSeparator: true }; if(!app.viewerType.match(/Reader/))//Convert to PDF shall not be accessible in Reader { result[result.length] = { cName: "ConvertToPDF", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_PDF_FROM_TRACKER_DETAILS, onExecute: function(selection) { app.launchURL("acrobat:Review?convertToPDF"); } }; //Separator result[result.length] = { bSeparator: true }; } result[result.length] = { cName: "CreateNewFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_CREATE_NEW_FOLDER, onExecute: function(selection, doc) { var url = selection.feed.URL; FormsTrackerAddNewFolder(url); }, }; result[result.length] = { cName: "MoveToFolder", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_MOVE_TO_FOLDER, oSubMenu: [ { cName: "None", cDisplayName: AnnotsString.IDS_REVIEW_PANEL_FOLDER_NONE, onExecute: function(selection, doc) { var ext = selection.item.Extension; // Add the item to the folder FormsTrackerSetFormFolder(selection.feed.URL, ext[fwDocID], ""); } }, { bSeparator: true }, ] }; var sendToMenu = result[result.length - 1].oSubMenu; app.beginPriv(); var folders = FormWorkflow.getFormWorkflowFolders(selection.feed.URL); app.endPriv(); for(var i in folders) { var origFolderName = folders[i]; if(app.platform == "WIN" || app.platform == "MAC") { folders[i] = folders[i].replace("&", "&&");//escape actual ampersand } else if (app.platform == "UNIX") { folders[i] = folders[i].replace("&", "_");//for underline folders[i] = folders[i].replace("_", "__");//escape actual underscore } sendToMenu[sendToMenu.length] = { cName: origFolderName, cDisplayName: folders[i], onExecute: function(selection, doc) { var item = selection.item; var feed = selection.feed; var ext = item.Extension; FormsTrackerSetFormFolder(selection.feed.URL, ext[fwDocID], this.cName); } }; } return result; }), supportsMultipleSelection: function() { return true; }, isCompatibleForMultipleSelectionWith: function(driverURL) { if(driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/FormsSuperGroup" || driverURL == "urn://ns.adobe.com/Acrobat/Tracker/UI/FormsTracker") return true; else return false; }, canDeleteFeed: function(selection) { return false; }, canDeleteFeedWhileMultipleSelect: function(selection) { return false; }, canDeleteItem: function(selection) { return true; }, onDeleteItem: function(selection) { var feed = selection.feed; var docID = selection.item.Extension[fwDocID]; var isInitiated = selection.item.Extension[fwIsInitiated]; if(isInitiated) { if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=delete&workflow=" + docID); } else { if(typeof docID != "undefined") app.launchURL("acrobat:Forms?action=removeForm&workflow=" + docID); } }, canDeleteItemWhileMultipleSelect: function(selection) { return true; }, onDeleteItemWhileMultipleSelect: function(selection) { return FormsTrackerRemoveFormWhileMultipleSelect(selection.item); }, onDeleteAllMultipleSelected: function(selection) { //check if we are the initiator var aFeedURL = selection[0].feed.URL.split(/#/); var bIsInitiated = (aFeedURL[0] == cFormsIveSentURL) ? true : false; var bHasEBF = false; if(bIsInitiated) { //check if there is any EBR or BBR in the selected items for(var i = 0; i < selection.length; i++) { var type = selection[i].type; if(type == "item") { var item = selection[i].item; var extension = item.Extension; var formType = extension[fwMethod]; if(formType != "SharedForm") { bHasEBF = true; break; } } } } return RemoveMultipleSelectedForms(bIsInitiated && !bHasEBF); }, canDeleteGroup: function(selection) { return true; }, onDeleteGroup: function(selection) { var url = selection.feed.URL; var group = selection.group; if(typeof group != "undefined") { FormsTrackerRemoveFolder(url, group); return true; } else return false; }, canDeleteGroupWhileMultipleSelect: function(selection) { return true; }, onDeleteGroupWhileMultipleSelect: function(selection) { var url = selection.feed.URL; var group = selection.group; if(typeof group != "undefined") { FormsTrackerRemoveFolderWhileMultipleSelect(url, group); return true; } else return false; }, canChangeGroups: function() { return true; }, canModifyItemGroup: function(selection, src, dst) { return true; }, modifyItemGroup: function(selection, src, dst) { var item = selection.item; var feed = selection.feed; var ext = item.Extension; app.beginPriv(); var folders = FormWorkflow.getFormWorkflowFolders(feed.URL); app.endPriv(); if(dst.length == 0 && src.length != 0) { FormWorkflow.setFormWorkflowFolder(feed.URL, ext[fwDocID], ""); return; } for(var i in dst) { var newFolder = null; for(var j in folders) { if(dst[i] == folders[j]) newFolder = folders[j]; } if(newFolder != null) { FormWorkflow.setFormWorkflowFolder(feed.URL, ext[fwDocID], newFolder); break; } } } }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Forms Super Group UI var oFormsSuperGroupUI = { createContext: function() { var result = { //General strings cIveSent: getString("IDS_FORMS_TRACKER_MY_FORMS"), cIveReceived: getString("IDS_FORMS_TRACKER_PARTICIPANT_FORMS"), cFormsSuperGroup: getString("IDS_FULL_NAME"), onSelectionChanged: function(dialog) { this.showEmptyView(dialog); }, showEmptyView: function(dialog) { try { var LINK = function(scheme, s) { return scheme + ":" + s; } XML.setSettings({ignoreComments: false}); var isReader = app.viewerType == "Reader"; //do not display Distributed Forms Link in Reader var cVisibleMyForms = isReader ? "display:none" : ""; var viewXHTML = <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="bread_crumb"> {this.cFormsSuperGroup} &gt; </div> <div class="super_group_page"> <span class="forms-super-iconic"><span style="font-weight:bold;">{this.cFormsSuperGroup}</span></span> <br /> <br /> <p style="line-height:25px;"> <span style={cVisibleMyForms}>&#8226; <a href={cFormsIveSentFeedLink}><span class="blueLink">{this.cIveSent}</span></a> <br /></span> <span>&#8226; <a href={cFormsIveReceivedFeedLink}><span class="blueLink">{this.cIveReceived}</span></a> <br /></span> </p> </div> </body> </html> var stm = util.streamFromString(viewXHTML.toXMLString(), "utf-8"); dialog.load({"html": stm}); } catch(e) { console.println("EXCEPTION: " + e); console.println(e.stack); myFormsTrackerDebugAlert("EXCEPTION: " + e); myFormsTrackerDebugAlert(e.stack); } }, // The Dialog Description description: { name: "Panel", elements: // Child Element Array [ { type: "view", align: "align_center", align_children: "fill", elements: // Child Element Array [ { type: "html_view", item_id: "html" } ] } ] } }; return result; }, getGroupContextMenu: app.trustedFunction(function(selection) { var result = new Array; result[result.length] = { cName: "Expand", cDisplayName: AnnotsString.IDS_PANEL_EXPAND, onExecute: function(selection, doc) { TrackerExpandSelection(); }, onEnabled: function(selection, doc) { return TrackerCanExpandSelection(selection.feed.URL); } }; result[result.length] = { cName: "Collapse", cDisplayName: AnnotsString.IDS_PANEL_COLLAPSE, onExecute: function(selection, doc) { TrackerCollapseSelection(); }, onEnabled: function(selection, doc) { return TrackerCanCollapseSelection(selection.feed.URL); } }; return result; }), canDeleteFeed: function(selection) { return false; }, canDeleteItem: function(selection) { return false; }, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// app.beginPriv(); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/FormsSuperGroup", oFormsSuperGroupUI); RSS.addUI("urn://ns.adobe.com/Acrobat/Tracker/UI/FormsTracker", oFormsTrackerUI); app.endPriv(); } catch(e) { console.println(e.extMessage); } } // ADOBE SYSTEMS INCORPORATED // Copyright 2003 Adobe Systems Incorporated // All Rights Reserved // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. // If you have received this file from a source other than Adobe, then your use, // modification, or distribution of it requires the prior written permission of Adobe. // media.js - Adobe Acrobat multimedia support // The app and app.media properties and methods in this file are part of the public Acrobat // Multimedia API and may be used in your PDF JavaScript, EXCEPT where the name includes "priv" // or is otherwise noted as private. DO NOT USE any of these private properties or methods in // a PDF file, or YOUR PDF WILL BREAK in a future version of Acrobat. // Greetings and thanks from the Acrobat Multimedia development team: // Dylan Ashe - Multimedia Framework and QuickTime // Michael Geary - JavaScript, Windows Media, Flash // Scott Grant - User Interface, Authoring, Sound, PDF File Access // Vivek Hebbar - Windows Built-in Player and Authoring // Liz McQuarrie - RealOne Player and Browsers // Ed Rowe - Project Lead and Mr. PDF // Jason Beique, Paul Herrin, Renato Maschion, Jason Reuer, Xintai Chang - QA and Developer Tech // entire initialization in this function function InitializeMultimediaJS() { try { // Multimedia version number app.media.version = 7.0; // Set app.media.trace = true to enable method and event tracing in this code. // Note: app.media.trace is for testing only and will change in future versions. app.media.trace = false; // The app.media.* constants below are passed back and forth between C++ and JavaScript code. // Always use these symbolic definitions instead of hard coded values, e.g. // settings.windowType = app.media.windowType.floating; /* NOT settings.windowType = 2; */ // PDF files may be opened under both newer and older versions of Acrobat. // Future versions of Acrobat may add new values to these lists. Your JavaScript code should // gracefully handle any values it encounters beyond those listed here. // Similarly, if you write JavaScript code for a future version of Acrobat, that code should // check app.media.version before it depends on new app.media.* constant values added in // that version. The lists below are marked to indicate which versions support which constants. // Values for settings.layout app.media.layout = { meet: 1, // scale to fit all content, preserve aspect, no clipping, background fill slice: 2, // scale to fill window, preserve aspect, clip X or Y as needed fill: 3, // scale X and Y separately to fill window scroll: 4, // natural size with scrolling hidden: 5, // natural size with clipping standard: 6 // use player's default settings // End 6.0 values } // Values for settings.windowType app.media.windowType = { docked: 1, floating: 2, fullScreen: 3 // End 6.0 values } // Values for settings.monitorType app.media.monitorType = { document: 1, nonDocument: 2, primary: 3, bestColor: 4, largest: 5, tallest: 6, widest: 7 // End 6.0 values } // Values for settings.floating.align app.media.align = { topLeft: 1, topCenter: 2, topRight: 3, centerLeft: 4, center: 5, centerRight: 6, bottomLeft: 7, bottomCenter: 8, bottomRight: 9 // End 6.0 values } // Values for settings.floating.canResize app.media.canResize = { no: 1, keepRatio: 2, yes: 3 // End 6.0 values } // Values for settings.floating.over app.media.over = { pageWindow: 1, appWindow: 2, desktop: 3, monitor: 4 // End 6.0 values } // Values for settings.floating.ifOffScreen app.media.ifOffScreen = { allow: 1, forceOnScreen: 2, cancel: 3 // End 6.0 values } // Default value for settings.visible app.media.defaultVisible = true; // Values for rendition.type app.media.renditionType = { unknown: 0, // rendition type not recognized by Acrobat media: 1, selector: 2 // End 6.0 values } // Values for event.media.code in Status event app.media.status = { // event.media.text contains: clear: 1, // empty string - clears any message message: 2, // general message contacting: 3, // hostname being contacted buffering: 4, // percent complete init: 5, // name of the player being initialized seeking: 6 // nothing // End 6.0 values } // Values for event.media.closeReason in Close event app.media.closeReason = { general: 1, error: 2, done: 3, stop: 4, play: 5, uiGeneral: 6, uiScreen: 7, uiEdit: 8, docClose: 9, docSave: 10, docChange: 11 // End 6.0 values } // Values for player.open() return value app.media.openCode = { success: 0, failGeneral: 1, failSecurityWindow: 2, failPlayerMixed: 3, failPlayerSecurityPrompt: 4, failPlayerNotFound: 5, failPlayerMimeType: 6, failPlayerSecurity: 7, failPlayerData: 8 // End 6.0 values } // Values for Error.raiseSystem app.media.raiseSystem = { fileError: 10 } // Values for Error.raiseCode app.media.raiseCode = { fileNotFound: 17, fileOpenFailed: 18 } // In a PDF event, these event.name values indicate page-level actions. app.media.pageEventNames = { Open: true, Close: true, InView: true, OutView: true } // Create and return a MediaPlayer without opening it. Explicit values can be provided for all // the arguments listed below. If this function is called from a rendition action, it will get // the annot, rendition, and doc values from the event object if they are not explicitly provided. // Returns player, or null on failure. Does not throw exceptions. // Any failures are reported to user, and result in null being returned. // Events may be fired as a result of closing an existing player (see below). // Unless noStockEvents is true, stock event handlers are added to the returned player, // and will be added to the annot (if present) when player.open() is called later. // player = app.media.createPlayer({ // doc: Doc, /* Required if both annot and rendition are omitted, e.g. for URL playback */ // annot: ScreenAnnot, /* Required for docked playback unless it is found in the Event object // or settings.page is provided. The new player is associated with the annot. If a player // was already associated with the annot, it is stopped and closed. */ // rendition: MediaRendition or RenditionList, /* Required unless rendition found in Event, // or URL is present */ // URL: String, /* Either URL or rendition is required, with URL taking precedence */ // mimeType: string, /* Optional, ignored unless URL is present. If URL is present, either // mimeType or settings.players, as returned by app.media.getPlayers(), is required */ // settings: MediaSettings, /* Optional, overrides the rendition settings */ // events: EventListener, /* Optional (if stock events are used, added after stock events) */ // noStockEvents: Boolean, /* Optional, default = false, use stock events or not */ // fromUser: Boolean, /* Optional, default depends on Event object */ // showAltText: Boolean, /* Optional, default = true */ // showEmptyAltText: Boolean /* Optional, default= ! fromUser */ // }); app.media.createPlayer = function( args ) { try { return app.media.priv.createPlayer( app.media.argsDWIM( args ) ); } catch( e ) { app.media.alert( 'Exception', args, { error: e } ); return null; } } // Create, open, and return a MediaPlayer. See app.media.createPlayer() for argument details // and other information. // This method fires several events which may include Open, Ready, Play and Focus. // Returns player, or null on failure. Does not throw exceptions. // Any failures are reported to user. app.media.openPlayer = function( args ) { var player = null; try { // Do our own DWIM here to make sure args.doc is set in case of error args = app.media.argsDWIM( args ); player = app.media.createPlayer( args ); if( player ) { var result = player.open(); if( result.code != app.media.openCode.success ) { player = null; app.media.alert( 'Open', args, { code: result.code } ); } else if( player.visible ) player.setFocus(); // fires Focus event } } catch( e ) { player = null; app.media.alert( 'Exception', args, { error: e } ); } return player; } // Open a new media player using the current event or explicit args as in app.media.createPlayer(). // If an annot is provided or found in event object, and there is already a player open for that // annot, then start or resume playback on that player. // See app.media.openPlayer for argument details and other information. // Returns player, or null on failure. Does not throw exceptions. // Any failures are reported to user. app.media.startPlayer = function( args ) { try { args = app.media.argsDWIM( args ); var player = args.annot && args.annot.player; if( player && player.isOpen ) player.play(); // already opened, resume play else player = app.media.openPlayer( args ); // open a new player return player; } catch( e ) { app.media.alert( 'Exception', args, { error: e } ); return null; } }, // app.media.Events constructor and prototype // The Events constructor, events.add, and events.remove methods each takes any number of // arguments, where each argument can be either an event listener object or a previously // constructed app.media.Events object. The constructor and add() method add each listener // object to the Events object, and the remove() method removes listener objects. // An event listener object is a collection of event methods and optional custom properties or // methods. Any method whose name matches /^on[A-Z]/ or /^after[A-Z]/ is an event method. Custom // methods and properties in an event listener should use names that do not match these case // sensitive patterns. // When an event listener method is called, 'this' is the event listener object. The event // listener can have custom properties like any other object. If an event listener is nested // inside another function (such as a constructor), then the event methods can also directly // access any variables defined in the parent function, even when the event method is called // after the parent function returns. // The same event listener object may be added into more than one Events object. The object is // not copied; each Events object has a reference to the original event listener object, so any // properties of the listener object are shared by every Events object it is added to. // Implementation note: // An app.media.Events object has a listeners property which is a object containing // onVariousEvent and afterVariousEvent properties. Each of these properties is an array of // references to event listener objects which contain the event methods. // So, for example, after this call: // var events = new app.media.Events({ onPlay: function(e){} }); // events.listeners.onPlay[0] is a reference to a new { onPlay: function(e){} } object, and // events.listeners.onPlay[0].onPlay is a reference to the onPlay method. app.media.Events = function() { this.listeners = {}; // start with empty listeners object this.dispatching = 0; // not currently dispatching any events this.removed = {}; // listener names that need delayed removal this.privAddRemove( arguments, this.privAdd ); // add any event listener object arguments } app.media.Events.prototype = { // Add any number of event listener objects or other app.media.Events objects. // events.add() may be called inside an event listener method, and any new listeners that are // added for the current event will be called for that same event. // If the same listener object is added twice, the second add is ignored. // Listeners for a given event (e.g. onClose) are called in the order in which they were added. // events.add( event listener or app.media.Events object(s) ) add: function() { this.privAddRemove( arguments, this.privAdd ); }, // Remove any number of event listener objects or other app.media.Events objects. // events.remove() may be called inside an event listener method, to remove the current listener // or any other. // events.remove( event listener or app.media.Events object(s) ) remove: function() { this.privAddRemove( arguments, this.privRemove ); }, // Private method for events.add() and events.remove(). // Loop through all the listener methods in each argument and call doAddRemove for every one. privAddRemove: function( args, doAddRemove ) { for( var i = 0; i < args.length; i++ ) // for each event listener object argument in passed array { var events = args[i]; if( events.listeners ) { // It's an app.media.Events object, add or remove every listener in each array for( var name in events.listeners ) { var array = events.listeners[name]; for( var j = 0; j < array.length; j++ ) { doAddRemove.call( this, array[j], name ); } } } else { // It's an event listener object, add or remove each method for( var name in events ) { // Only interested in onFoo and afterFoo methods, not custom properties if( name.search(/^on[A-Z]/) == 0 || name.search(/^after[A-Z]/) == 0 ) { doAddRemove.call( this, events, name ); } } } } this.privSetDispatch(); // Add or remove the dispatch() method as needed }, // Private method for events.add(). // Adds a reference to a listener object into events.listeners[name] // Does nothing if listener already added. privAdd: function( listener, name ) { if( typeof(listener) != "object" || typeof(listener[name]) != "function" ) return; // not a valid object and method var array = this.listeners[name]; // get our existing event listener array if( ! array ) { this.listeners[name] = [ listener ]; // no array yet, add array with one listener object } else // we have a listener array, append listener to it if it's not already present { for( var i = 0; i < array.length; i++ ) { if( array[i] === listener ) return; // already present, don't add another } array[i] = listener; // append listener to array } }, // Private method for events.remove(). // Removes a listener object reference from events.listeners[name] privRemove: function( listener, name ) { var array = this.listeners[name]; // existing event listener array if( ! array ) return; // no listeners with this name for( var i = 0; i < array.length; i++ ) // Look for the listener object in the array { if( array[i] === listener ) { // Found the listener in the array, decide what to do with it if( this.dispatching ) // Can't remove while dispatching, mark for later removal array[i] = null, this.removed[name] = this.needCleanup = true; else if( array.length > 1 ) array.splice( i, 1 ); // Remove listener from array else delete this.listeners[name]; // Last one, remove array entirely return; // Listener is already in the array } } }, // Private function for events.add(), events.remove() and events.privCleanup(). // Sets or deletes the dispatch method depending on whether there are any event listeners. privSetDispatch: function() { for( var name in this.listeners ) // are there any listeners? { this.dispatch = this.privDispatch; // found a listener, set the dispatch method return; } delete this.dispatch; // no listeners, remove the dispatch method }, // events.privDispatch() is a private method that contains the code for events.dispatch(). // To dispatch an event, C++ code calls events.dispatch(), only if that method exists. // The rest of the event dispatching machinery is implemented in JavaScript. // We turn event dispatching on and off dynamically by setting and removing the events.dispatch // property, which is a reference to events.privDispatch(). // If you call events.dispatch() directly from JavaScript, event.target.doc or event.media.doc // must match the current document. // You can implement your own event dispatcher from scratch by providing an events object // with a dispatch method that takes an event argument as this method does. // This function is reentrant. privDispatch: function( event ) { if( !event.media ) event.media = {}; // PDF events may have spaces in their names, so make a copy of event.name with spaces removed event.media.id = event.name.replace( / /, '' ); // Use doc and events properties in either event.target or in the event object itself if( event.target ) { event.media.doc = event.target.doc; event.media.events = event.target.events; } ++this.dispatching; // if this.dispatching > 0, events.remove() will use deferred removal try { // First call immediate (onFoo) listener methods this.privDispatchNow( 'on', event ); // may reenter this function // Turn stopDispatch off in case an immediate listener turned it on delete event.stopDispatch; // If there are any deferred (afterFoo) listeners, post event to queue, // but don't bother if an immediate listener stopped all dispatching if( ! event.stopAllDispatch ) if( this.listeners[ 'afterEveryEvent' ] || this.listeners[ 'after' + event.media.id ] ) app.media.priv.postEvent( event ); } catch( e ) { app.media.priv.trace( 'di throw: ' + e.message ); } --this.dispatching; // If any event listeners were marked for removal while we were dispatching events, // and we are done with any nested dispatch calls, then clean up the listener arrays. if( this.needCleanup && ! this.dispatching ) this.privCleanup(); }, // Private method for events.dispatch(). // Clean up any event listener arrays that have had entries marked for removal. // Each event name that needs to be cleaned up has an entry in this.removed. // Each listener that is to be removed has been set to null. privCleanup: function() { for( var name in this.removed ) { var array = this.listeners[name]; for( var i = 0; i < array.length; i++ ) { if( ! array[i] ) array.splice( i--, 1 ); // Remove listener from array and back up index } if( array.length == 0 ) delete this.listeners[name]; // Remove listener array if it's now empty } this.removed = {}; this.privSetDispatch(); // Remove the dispatch method if there are no more listeners delete this.needCleanup; }, // Private method for events.dispatch(). // Immediately dispatch a single event to all listeners for that event. // prefix is 'on' or 'after', and event is the event object. // Calls both EveryEvent listener methods and any specific listener methods for the event. // This function is reentrant. privDispatchNow: function( prefix, event ) { this.privCallMethods( event, prefix + 'EveryEvent' ); // may reenter this function this.privCallMethods( event, prefix + event.media.id ); // may reenter this function }, // Private method for events.dispatch(). // Loop through the events.listeners[name] array and call each event listener method found // there, with 'this' as the event listener object that contains the method. // If new listeners are added while dispatching, they will also be called. // This function is reentrant. privCallMethods: function( event, name ) { var array = this.listeners[name]; if( array ) { // Call each listener method in the array for( var i = 0; i < array.length; i++ ) { if( event.stopDispatch || event.stopAllDispatch ) break; var listener = array[i]; if( listener ) // listener is null if removed while dispatching listener[name]( event ); // may reenter this function } } }, } // end app.media.Events.prototype // A simple event queue. // app.media.priv.postEvent(event) and app.media.priv.dispatchQueuedEvents() use // doc.media.priv.queue to manage a per-doc event queue. // This private method has the same restrictions on calling it as app.media.Events.privDispatch(). app.media.priv.postEvent = function( event ) { var doc = event.media.doc; var p = doc.media.priv; var q = p.queue; if( ! q ) q = p.queue = {}; if( ! q.list ) q.list = []; q.list.push( event ); if( ! q.timer ) { // no disp while modal dlg up q.timer = app.setTimeOut( 'app.media.priv.dispatchPostedEvents(this);', 1, false ); q.timer.media = { doc: doc }; // allow access to doc from timer obj } } // Called from the short timer set by app.media.priv.postEvent() to dispatch all posted events. app.media.priv.dispatchPostedEvents = function( doc ) { try { // If doc already closed, bail! Closing doc does NOT unregister timeouts! // They may or may not fire depending on whether they are GCed before getting fired. if( doc.closed ) return; // Grab and delete queue--any new event queued while dispatching will be dispatched later var q = doc.media.priv.queue; var list = q.list; delete q.list; delete q.timer; if( list && list.length ) for( var i = 0; i < list.length; i++ ) { // Stop dispatching "after" events if the doc is closed, checked here in case an // event method closes the doc. Do not check in privCallMethods--an event method // that closes the doc should set event.stopDispatchAll. if( doc.closed ) return; var e = list[i]; if( e.media.events ) e.media.events.privDispatchNow( "after", e ); } } catch( e ) { app.media.priv.trace( 'dpe throw: ' + e.message ); } } // app.media.Markers constructor and prototype app.media.Markers = function( player ) { this.player = player; } app.media.Markers.prototype = { // Finds a marker by name, index number, time, or frame. // Index numbers are not in any guaranteed order. // If a time or frame is given, returns the nearest marker at or before that location. // Returns null if no matching marker is found. // // marker = markers.get( cName ); // marker = markers.get({ name: cName }); // marker = markers.get({ index: nIndex }); // marker = markers.get({ time: nSeconds }); // marker = markers.get({ frame: nFrame }); get: function( m ) { if( ! this.privByIndex ) this.player.privLoadMarkers(); var retMarker = null; if( this.privByIndex.length > 0 ) { switch( typeof(m) ) { case 'string': retMarker = this.privByName[m]; break; case 'object': retMarker = ( m.name !== undefined ? this.privByName[ m.name ] : m.index !== undefined ? this.privByIndex[ m.index ] : m.time !== undefined ? this.privFind( 'time', m.time ) : m.frame !== undefined ? this.privFind( 'frame', m.frame ) : undefined ); break; } } if( retMarker === undefined ) retMarker = null; return retMarker; }, // Private method for markers.get() to find a marker by time or frame. privFind: function( prop, value ) { if( value < 0 ) return; // negative time or frame not allowed var array = this.privByIndex; var length = array.length; // Search for nearest marker <= passed value; does not assume any sort order. var nearIdx; var nearDist = Infinity; for( var i = 0; i < length; i++ ) { // Test for undefined in case some markers have time and some have frame var v = array[i][prop]; if( v !== undefined ) { var dist = ( value - v ); if( dist >= 0 && dist < nearDist ) { // have a new "nearest marker <= value" nearIdx = i; nearDist = dist; } } } if( nearIdx !== undefined ) return array[ nearIdx ]; }, } // end app.media.Markers.prototype // app.Monitors constructor and prototype app.Monitors = function() { this.length = 0; } app.Monitors.prototype = { // monitors.clear() clear: function() { while( this.length > 0 ) delete this[ --this.length ]; }, // monitors.push( value ) // Appends a reference to a monitor object to the array. push: function( value ) { this[ this.length++ ] = value; }, // monitors = monitors.select( monitorType, doc ) // Filter a Monitors array based on an app.media.monitorType value as used in PDF. // doc is required if monitorType is app.media.monitorType.document or // app.media.monitorType.nonDocument, otherwise it is ignored. // Returns new array of references to the selected monitor objects. select: function( monitorType, doc ) { switch( monitorType ) { default: case app.media.monitorType.document: return this.document(doc).primary(); case app.media.monitorType.nonDocument: return this.nonDocument(doc).primary(); case app.media.monitorType.primary: return this.primary(); case app.media.monitorType.bestColor: return this.bestColor().primary(); case app.media.monitorType.largest: return this.largest().primary(); case app.media.monitorType.tallest: return this.tallest().primary(); case app.media.monitorType.widest: return this.widest().primary(); } }, // monitors.filter( ranker, minRank ) // Returns a Monitors array containing the monitors that score the highest rank according to // the ranker function. The ranker function takes a Monitor parameter and returns a numeric or // boolean rank for it (or any type that can be converted to a number). // A numeric rank may be any finite value. // If minRank is not specified, the array returned always contains at least one element (unless // the original array was already empty). // If minRank is specified but the final rank is less, the array returned is empty. // If multiple monitors tie for the highest rank, the returned array contains those monitors in // the same order as the original array. filter: function( ranker, minRank ) { var r = new app.Monitors; var rank = ( minRank != undefined ? minRank : -Infinity ); for( var i = 0; i < this.length; i++ ) { // Rank the next Monitor object var m = this[i]; var mRank = ranker( m ); // If it outranks the best previous ranking, clear the result list. // If it's the same rank, add it to the result list. if( mRank >= rank ) { if( mRank > rank ) r.clear(); // new outranks old, clear result array r.push( m ); // append new result to any same-ranked results rank = mRank; // save new rank } } return r; }, // monitors.bestColor( minColor ) // Returns a Monitors array containing the monitor(s) that have the greatest color depth. // Returns empty array if minColor is specified and no monitor in the array has a color depth of // at least minColor bits. bestColor: function( minColor ) { return this.filter( function( m ) { return m.colorDepth; }, minColor ); }, // monitors.bestFit( width, height, bRequire ) // Returns a Monitors array containing the monitor(s) that have at least the specified width and // height with the least amount of excess area. If all monitors are smaller than the specified // width and height, then returns an empty array if bRequire is true, or an array of the largest // available monitors if bRequire is false. bestFit: function( width, height, bRequire ) { var tiny = -1000000000; var area = ( width * height ); return this.filter( function( m ) { var mWidth = m.rect[2] - m.rect[0]; var mHeight = m.rect[3] - m.rect[1]; // Rank lowest if it doesn't fit at all, else rank by least excess area return( width > mWidth || height > mHeight ? tiny : area - ( mWidth * mHeight ) ); }, bRequire ? ( tiny + 1 ) : tiny ); }, // monitors.desktop() // Returns a Monitors array with a single Monitor that represents the entire virtual desktop: // rect = the union of all Monitor.rect values // workRect = the union of all the workRect values (may include parts of monitors that are // outside their workRects). // colorDepth = the least color depth of any monitor // isPrimary = (not present) desktop: function() { if( ! this.length ) return []; var r = { rect: [0,0,0,0], workRect: [0,0,0,0], colorDepth: Number.MAX_VALUE }; for( var i = 0; i < this.length; i++ ) { var m = this[i]; r.rect = app.media.priv.rectUnion( r.rect, m.rect ); r.workRect = app.media.priv.rectUnion( r.workRect, m.workRect ); r.colorDepth = Math.min( r.colorDepth, m.colorDepth ); } var result = new app.Monitors; result.push( r ); return result; }, // monitors.document( doc, bRequire ) // Returns a Monitors array containing the monitor(s) that display the greatest amount of the // specified document. // If bRequire is true, returns empty array if the document does not appear on any monitor. // If bRequire is false and document does not appear on any monitor, returns array containing // all monitors. document: function( doc, bRequire ) { return this.mostOverlap( doc.outerDocWindowRect, bRequire ? 1 : undefined ); }, // monitors.largest( minArea ) // Returns a Monitors array containing the monitor(s) with the greatest area. // Returns empty array if minArea is specified and the greatest area is less than that. largest: function( minArea ) { return this.filter( function( m ) { return app.media.priv.rectArea( m.rect ); }, minArea ); }, // monitors.leastOverlap( rect, maxOverlapArea ) // Returns a Monitors array containing the monitor(s) which have the least area overlapping rect. // Returns empty array if maxOverlapArea is specified and all monitors overlap rect by a greater // amount. leastOverlap: function( rect, maxOverlapArea ) { if( maxOverlapArea !== undefined ) // if undefined must stay undefined (-undefined is NAN) maxOverlapArea = -maxOverlapArea; return this.filter( function( m ) { return -app.media.priv.rectIntersectArea( m.rect, rect ); }, maxOverlapArea ); }, // monitors.mostOverlap( rect, minOverlapArea ) // Returns a Monitors array containing the monitor(s) which have the most area overlapping rect. // Returns empty array if minOverlapArea is specified and there is no monitor with at least that // much overlap. mostOverlap: function( rect, minOverlapArea ) { return this.filter( function( m ) { return app.media.priv.rectIntersectArea( m.rect, rect ); }, minOverlapArea ); }, // monitors.nonDocument( doc, bRequire ) // Returns a Monitors array containing the monitor(s) that display none of, or the least amount // of the specified document. // If parts of the document appear on every monitor, then returns empty array if bRequire is true // or a copy of the original monitors array if bRequire is false. nonDocument: function( doc, bRequire ) { return this.leastOverlap( doc.outerDocWindowRect, bRequire ? 0 : undefined ); }, // monitors.primary() // Returns a Monitors array containing at most one entry, the primary monitor. primary: function() { return this.filter( function( m ) { return m.isPrimary; }, 1 ); }, // monitors.secondary() // Returns a Monitors array containing all secondary (non-primary) monitors. secondary: function() { return this.filter( function( m ) { return ! m.isPrimary; }, 1 ); }, // monitors.tallest( minHeight ) // Returns a Monitors array containing the monitor(s) with the greatest height. tallest: function( minHeight ) { return this.filter( function( m ) { return m.rect[3] - m.rect[1]; }, minHeight ); }, // monitors.widest( minWidth ) // Returns a Monitors array containing the monitor(s) with the greatest width. widest: function( minWidth ) { return this.filter( function( m ) { return m.rect[2] - m.rect[0]; }, minWidth ); }, } // end app.Monitors.prototype // app.media.Players constructor and prototype app.media.Players = function() { this.length = 0; } app.media.Players.prototype = { // Players.clear() clear: function() { while( this.length > 0 ) delete this[ --this.length ]; }, // Players.push( value ) // Appends a reference to a Player object to the array. push: function( value ) { this[ this.length++ ] = value; }, // players = Players.select( args ) // Filters a Players array based on any of the PlayerInfo properties. // The array is not in any particular order. // The object argument lists the properties to filter on. // String properties (id, name, version) can use either strings or regular expressions. // Example: get all players with 'QuickTime' in the id: // var p = app.media.getPlayers().select({ id: /QuickTime/ }); // All specified properties must be present and must match exactly (or must pass regex match). // If no properties are specified, all Players in the array will be present in the returned array. // If no players in the array match the search criteria, returns an empty Players array. select: function( args ) { var r = new app.media.Players; for( var i = 0; i < this.length; i++ ) { var info = this[i]; // Get the PlayerInfo object var ok = true; for( var prop in args ) // check each property that the caller passed in { if( !( prop in info ) ) return []; // unknown selection property, probably future PDF version, give up // Handle either a regular expression or a string, number, or boolean comparison if( args[prop].exec ? args[prop].exec(info[prop]) == null : args[prop] != info[prop] ) { ok = false; break; } } if( ok ) r.push( info ); // passed all tests, append reference to PlayerInfo } return r; }, } // end app.media.Players.prototype // app.media.MediaPlayer constructor and prototype app.media.MediaPlayer = function() { } app.media.MediaPlayer.prototype = { // MediaPlayer.open() open: function() { var ret; var priv = this.doc.media.priv; if( ! priv.players ) priv.players = []; priv.players.push( this ); try { // Add stock annot events and cross-references only if we open the movie if( this.annot ) { app.media.priv.AddStockEventsHelper( this.annot, app.media.getAnnotStockEvents( this.settings.windowType ) ); this.annot.player = this; } ret = this.privOpen.apply( this, arguments ); if( ret.code != app.media.openCode.success ) app.media.removeStockEvents( this ); } catch( e ) { app.media.removeStockEvents( this ); this.privOnClose(); throw e; } return ret; }, // MediaPlayer.privOnClose() privOnClose: function() { // Delete this player from open players array var players = this.doc.media.priv.players; for( i = 0; i < players.length; i++ ) { if( players[i] == this ) { players.splice( i, 1 ); return; } } }, } // end app.media.MediaPlayer.prototype // Determine whether any media playback is allowed and return true if it is. // If playback is not allowed, then alert the user and return false. // bCanPlay = app.media.canPlayOrAlert({ doc: Doc }); app.media.canPlayOrAlert = function( args ) { var canPlay = args.doc.media.canPlay; if( canPlay.yes ) return true; // Playback is allowed app.media.alert( 'CannotPlay', args, { canPlay: canPlay } ); return false; } // Return a settings object to play a rendition, if all playback requirements are met. // Otherwise return settings to "play" alt text, if showAltText and showEmptyAltText allow and // alt text is available, or else return null. // settings = app.media.getRenditionSettings({ // doc: Doc, // settings: MediaSettings, /* Optional, shallow-copied into returned settings */ // rendition: MediaRendition or RenditionList, // showAltText: Boolean, /* Optional, default = false */ // showEmptyAltText: boolean, /* Optional, default = false */ // fromUser: boolean /* Optional, default = false */ // }); app.media.getRenditionSettings = function( args ) { var settings; var selection = args.rendition.select( true ); if( selection.rendition ) { try { // Get playback settings from rendition - throws on failure, never returns null settings = selection.rendition.getPlaySettings( true ); settings.players = selection.players; app.media.priv.copyProps( args.settings, settings ); // copy the user's settings return settings; } catch( e ) { // FNF or open failure? Rethrow the exception unless we can handle it here if( e.name != "RaiseError" ) throw e; if( e.raiseSystem != app.media.raiseSystem.fileError ) throw e; if( e.raiseCode != app.media.raiseCode.fileNotFound && e.raiseCode != app.media.raiseCode.fileOpenFailed ) throw e; app.media.alert( 'FileNotFound', args, { fileName: selection.rendition.fileName } ); } } else // no rendition in selection { app.media.alert( 'SelectFailed', args, { selection: selection } ); } // Did we fail after finding a rendition? If so, use its alt text if allowed return app.media.getAltTextSettings( args, selection ); } // Return the first media rendition in a rendition list, or null if there is no match. app.media.getFirstRendition = function( list ) { for( var i = 0; i < list.length; i++ ) { if( list[i].rendition.type == app.media.renditionType.media ) return list[i].rendition; } return null; } // Return a settings object with a data property to play a URL. // Any properties in args.settings are shallow-copied into the returned settings object. // settings = app.media.getURLSettings({ // URL: String, /* required */ // mimeType: String, /* optional */ // settings: MediaSettings /* optional */ // }); app.media.getURLSettings = function( args ) { // Get a data object for the URL and MIME type var settings = { data: app.media.getURLData( args.URL, args.mimeType ) } app.media.priv.copyProps( args.settings, settings ); // copy the user's settings return settings; } // Return an alt text settings object for a selection, or null if there's no alt text available, // or if alt text should not be used in this situation. // Arguments are the same as app.media.getRenditionSettings(). // Any properties in args.settings are shallow-copied into the returned settings object. app.media.getAltTextSettings = function( args, selection ) { if( ! args.showAltText ) return null; var rendition = selection.rendition || app.media.getFirstRendition( selection.rejects ); if( ! rendition ) return null; settings = rendition.getPlaySettings( false ); app.media.priv.copyProps( args.settings, settings ); // copy the user's settings // Use alt text only when docked (compute default windowType first if needed) if( ! settings.windowType ) settings.windowType = app.media.priv.computeDefaultWindowType( args, settings ); if( settings.windowType != app.media.windowType.docked ) return null; // Get the alt text, or default text if none specified and showEmptyAltText is true var text = rendition.altText; if( text.length == 0 ) { if( ! args.showEmptyAltText ) return null; text = app.media.priv.getString( "IDS_ERROR_NO_ALT_TEXT_SPECIFIED" ); } settings.data = app.media.getAltTextData( text ); settings.players = [ app.media.priv.altTextPlayerID ]; return settings; } // Add the standard event listeners to a player. // If annot is specified, set up so when the player is opened, the annot will have its standard // event listeners attached. The player.annot and annot.player cross-references will be // installed at the same time. // The player must have a settings property. In the settings property, windowType and visible // are the only values used here. The visible property may be modified here and restored later // in the afterReady listener. app.media.addStockEvents = function( player, annot ) { if( player.stockEvents ) return; // already added stock events app.media.priv.AddStockEventsHelper( player, app.media.getPlayerStockEvents( player.settings ) ); if( annot ) { // remember that annot needs stock events attached when player is opened player.annot = annot; } } // Private function to add stock events to an object. Saves a reference to the original stock // events in object.stockEvents for later removal. object.stockEvents must not be modified after // it is saved here, or removal will not work correctly. app.media.priv.AddStockEventsHelper = function( object, events ) { object.stockEvents = events; if( ! object.events ) object.events = new app.media.Events; object.events.add( events ) } // Remove the standard event listeners and cross-references from a player and its associated annot. // Does nothing if no stock events (never added or already removed). app.media.removeStockEvents = function( player ) { if( ! player || ! player.stockEvents ) return; function removeProps( object ) { if( object.events ) { object.events.remove( object.stockEvents ); delete object.stockEvents; } } removeProps( player ); if( player.annot ) { if( player.annot.stockEvents ) removeProps( player.annot ); delete player.annot.player; delete player.annot; } } // Return floating window rect for a doc, floating params, monitor to play on, and // optional array containing the dimensions [l,r,t,b] of any additional controller UI. // NOTE: this method is called from both JS and C++ code, so do not change its signature // without great care! app.media.computeFloatWinRect = function( doc, floating, whichMonitor, uiSize ) { // Figure out rect in virtual desktop space that we are positioning relative to var overRect; switch( floating.over ) { default: case app.media.over.pageWindow: overRect = doc.pageWindowRect; break; case app.media.over.appWindow: // Inner more consistent placement because no borders etc. overRect = doc.innerAppWindowRect; break; case app.media.over.desktop: overRect = app.monitors.desktop()[0].rect; break; case app.media.over.monitor: overRect = app.monitors.select( whichMonitor, doc )[0].workRect; break; } // Get the border sizes for this window var border = app.media.getWindowBorderSize( floating ); // Align floating window with overRect according to align, using the // floating window rect plus the border sizes rect = app.media.priv.rectAlign( overRect, floating.align, floating.width + border[0] + border[2], floating.height + border[1] + border[3] ); // Grow the rect by the UI size (if any) if( uiSize ) rect = app.media.priv.rectGrow( rect, uiSize ); return rect; } // Return a new instance of the standard player events for the given settings. // In the settings property, windowType and visible are the only values used here. // The settings.visible property may be modified here, and restored later in an afterReady event. // If you call this method directly and there is an annot associated with the player, you must // set player.annot and annot.player as shown in addStockEvents(). app.media.getPlayerStockEvents = function( settings ) { var events = new app.media.Events; if( app.media.trace ) events.add( app.media.getPlayerTraceEvents() ); events.add( { onClose: function( e ) { var annot = e.target.annot; app.media.removeStockEvents( e.target ); // must do this before setFocus call below if( annot ) { annot.extFocusRect = null; // If docked screen had focus when closed, and further playback is allowed, // put focus back on annot if( e.media.hadFocus && e.target.settings.windowType == app.media.windowType.docked && e.media.doc.media.canPlay.yes ) { // Allow async setFocus since we're in event method // Does not fire stock annot Focus event because stock events removed above annot.setFocus( true ); } } }, afterDone: function( e ) { e.target.close( app.media.closeReason.done ); // fires Close and may fire Blur }, afterError: function( e ) { app.media.alert( 'PlayerError', e.target.args, { errorText: e.media.text } ); e.target.close( app.media.closeReason.error ); // fires Close and may fire Blur }, afterEscape: function( e ) { e.target.close( app.media.closeReason.uiScreen ); // fires Close and may fire Blur } }); // Add player event listeners for specific window types switch( settings.windowType ) { case app.media.windowType.docked: { events.add( { onGetRect: function( e ) { if( e.target.annot ) { // Get the annot's rectangle and expand it to include any // visible media player user interface. Return this rectangle in // the event object, and also use it as the annot's focus rect. e.target.annot.extFocusRect = e.media.rect = app.media.priv.rectGrow( e.target.annot.innerDeviceRect, e.target.uiSize ); } }, onBlur: function( e ) { if( e.target.annot ) e.target.annot.alwaysShowFocus = false; }, onFocus: function( e ) { if( e.target.annot ) e.target.annot.alwaysShowFocus = true; } }); } break; case app.media.windowType.floating: { // Need either a rect or a width and height if ( !settings.floating.rect && ( !settings.floating.width || !settings.floating.height ) ) app.media.priv.throwBadArgs(); // throw exception if( settings.visible === undefined ) settings.visible = app.media.defaultVisible; if( settings.visible ) { // Hide floating window while it's being created, then show it after the // controller dimensions are available settings.visible = false; events.add( { afterReady: function( e ) { var floating = e.target.settings.floating; var rect = floating.rect; // take user-provided rect, or calculate one if( ! rect ) { rect = app.media.computeFloatWinRect( e.media.doc, floating, e.target.settings.monitorType, e.target.uiSize ); } else { // Grow passed rect by UI size rect = app.media.priv.rectGrow( rect, e.target.uiSize ); } // Are we supposed to move the window onscreen if it is offscreen? if( floating.ifOffScreen == app.media.ifOffScreen.forceOnScreen ) { // Make sure window rect is totally onscreen, NOP if onscreen already rect = app.media.constrainRectToScreen( rect, app.media.priv.rectAnchorPt( rect, floating.align ) ); } // Set the outer rect e.target.outerRect = rect; // Show the window and give it the focus e.target.visible = true; e.target.setFocus(); // fires Focus event } }); } } break; } return events; } // Return a new instance of the debug trace event listeners for a player. app.media.getPlayerTraceEvents = function() { return new app.media.Events( { onEveryEvent: function( e ) { if( e.media.id != 'GetRect' ) // cannot trace inside onGetRect, it can hang Acrobat app.media.priv.trace( 'player event: on' + e.media.id ); }, afterEveryEvent: function( e ) { app.media.priv.trace( 'player event: after' + e.media.id ); }, onScript: function( e ) { app.media.priv.trace( "player onScript('" + e.media.command + "','" + e.media.param + "')" ); }, afterScript: function( e ) { app.media.priv.trace( "player afterScript('" + e.media.command + "','" + e.media.param + "')" ); }, onStatus: function( e ) { app.media.priv.trace( "player onStatus: " + ( e.media.progress >= 0 ? e.media.progress + "/" + e.media.total + ", " : "" ) + " status code: " + e.media.code + ": '" + e.media.text + "'" ); }, afterStatus: function( e ) { app.media.priv.trace( "player afterStatus: " + ( e.media.progress >= 0 ? e.media.progress + "/" + e.media.total + ", " : "" ) + " status code: " + e.media.code + ": '" + e.media.text + "'" ); } }); } // Return a new instance of the standard annot events: // For a docked player, handle Focus and Blur to give the player the focus instead of the annot. // For any type of player, close the player on Destroy. app.media.getAnnotStockEvents = function( windowType ) { var events = new app.media.Events; if( app.media.trace ) events.add( app.media.getAnnotTraceEvents() ); events.add( { onDestroy: function( e ) { if( e.target.player ) { // NOP if not open // fires Close and possibly other events e.target.player.close( app.media.closeReason.docChange ); } }, } ); if( windowType == app.media.windowType.docked ) { events.add( { onFocus: function( e ) { // If player is open, give it the focus. This event could be fired while doing // UI inside player.open() or the like. if( e.target.player.isOpen ) { e.target.player.setFocus(); // fires Focus for player and Blur for annot } // Prevent any action from being fired for the Focus event, since focus // has already been removed inside setFocus(). If setFocus() not called, // we're in the process of some sort of UI and we don't want random actions // firing either. e.stopDispatch = true; }, onBlur: function( e ) { // As with the Focus event, prevent any action from being fired for the Blur event. // This also prevents anybody after us from seeing onBlur before onFocus because // of our setFocus() call within onFocus. e.stopDispatch = true; } }); } return events; } // Return a new instance of the debug trace event listeners for an annot. app.media.getAnnotTraceEvents = function() { return new app.media.Events( { onEveryEvent: function( e ) { app.media.priv.trace( 'annot event: on' + e.media.id ); }, afterEveryEvent: function( e ) { app.media.priv.trace( 'annot event: after' + e.media.id ); } }); } // Make a shallow copy of args and run our "Do What I Mean" logic on it, to fill in default values // used in app.media.createPlayer(). The original args object is not modified, and changes made // later to the copy do not affect the original. Objects inside args are shared between the // original and the copy, and changes made inside these objects are visible from both args objects. // If args.annot or args.rendition are not defined, gets them from current event object. // If args.doc is not defined, gets it from args.annot or args.rendition. // Throws exception on failure. app.media.argsDWIM = function( args ) { if( args && args.privDWIM ) return args; // already did a DWIM copy args = app.media.priv.copyProps( args ); args.privDWIM = true; // Use annot and rendition passed in parameters, or get them from event object if( event && event.action ) { if( ! args.annot ) args.annot = event.action.annot; // TODO: it'd be nice to verify type of annot here... if( ! args.rendition ) args.rendition = event.action.rendition; } // Get doc from rendition or annot if args.doc not provided if( ! args.doc ) { if( args.rendition && args.annot ) if( args.rendition.doc != args.annot.doc ) app.media.priv.throwBadArgs(); if( args.rendition ) args.doc = args.rendition.doc; else if( args.annot ) args.doc = args.annot.doc; } // If fromUser is not specified, use !! to set it to true or false based on event name if( args.fromUser === undefined ) args.fromUser = !!( event && event.name && ! app.media.pageEventNames[event.name] ); if( args.showAltText === undefined ) args.showAltText = true; if( args.showEmptyAltText === undefined ) args.showEmptyAltText = ! args.fromUser; return args; } // Private function for app.media.priv.createPlayer(). app.media.priv.createPlayer = function( args ) { app.media.priv.trace( "app.media.priv.createPlayer" ); if( ! args.doc ) app.media.priv.throwBadArgs(); // doc is required if( ! app.media.canPlayOrAlert( args ) ) return null; // playback is not allowed, user has been notified if( args.annot && args.annot.player ) { args.annot.player.close( app.media.closeReason.play ); // fires events // args.annot.player presumably is null now, unless onClose didn't null it out. // Cannot create new player in onClose so shouldn't have any issues there } var player = args.doc.media.newPlayer({ args: args }); // Get a settings object for either a URL or a rendition, whichever was provided // URL wins if both present. player.settings = args.URL ? app.media.getURLSettings( args ) : args.rendition ? app.media.getRenditionSettings( args ) : app.media.priv.throwBadArgs(); // need either rendition or URL if( ! player.settings ) return null; // user has been notified already // If no windowType, compute default value if( ! player.settings.windowType ) player.settings.windowType = app.media.priv.computeDefaultWindowType( args, player.settings ); // If windowType couldn't be computed, throw if( ! player.settings.windowType ) app.media.priv.throwBadArgs(); switch( player.settings.windowType ) { case app.media.windowType.docked: { if( player.settings.page === undefined ) { if( ! args.annot ) app.media.priv.throwBadArgs(); // need either an annot or a page number player.settings.page = args.annot.page; } } break; case app.media.windowType.fullScreen: { player.settings.monitor = app.monitors.select( player.settings.monitorType, args.doc ); } break; } // Add any stock events to the player (and set up to add them to the annot later if needed). // Even if the player is never opened, no need to remove them since they won't get used. if( ! args.noStockEvents ) app.media.addStockEvents( player, args.annot ); if( args.events ) { if( ! player.events ) player.events = new app.media.Events; player.events.add( args.events ); // Add caller's custom events } return player; } // Private function to get default windowType: // docked if there is an annot, // floating if there is no annot and there is a floating settings obj, // undefined otherwise app.media.priv.computeDefaultWindowType = function( args, settings ) { var retWT; if( args.annot ) retWT = app.media.windowType.docked; else if( settings.floating ) retWT = app.media.windowType.floating; return retWT; } // Handle an alert, given an alert type name such as 'Open' and one or more object arguments. // These are merged together into one alert object and passed to an alerter dispatch method: // alerter.dispatch(alert) // The alert object contains these properties: // type: one of the following names (required): // 'CannotPlay', 'Exception', 'FileNotFound', 'Open', 'PlayerError', 'SelectFailed' // doc: Doc (required) // fromUser: boolean (optional) // canPlay: (CanPlay object, required for CannotPlay alert) // error: { message: String } ( required for Exception alert) // errorText: String (required for PlayerError alert) // fileName: String (required for FileNotFound alert) // selection: MediaSelection (required for SelectFailed alert) // The alert object may also contain extraneous properties which the alert function should ignore. // // If a.alerter exists, we call a.alerter.dispatch() if that method is found. If a.alerter does // not exist, or if a.alerter.dispatch() returns false, we call a.doc.media.alerter.dispatch() // if it exists. If that method does not exist or returns false, then we finally call // a.doc.media.stockAlerter.dispatch(). app.media.alert = function( type ) { // Merge the arguments following type into the alert object, then add type last var a = {}; for( var i = 1; i < arguments.length; i++ ) app.media.priv.copyProps( arguments[i], a ); a.type = type; // Set the stock doc alerter if it is not already set if( !( 'stockAlerter' in a.doc.media ) ) a.doc.media.stockAlerter = new app.media.Alerter; // Dispatch to player alerter, doc alerter, or stock alerter, until one returns true dispatch( a.alerter ) || dispatch( a.doc.media.alerter ) || dispatch( a.doc.media.stockAlerter ); // Local function to call a dispatch method and return true to stop or false to continue function dispatch( alerter ) { // Continue dispatching if no alerter object if( alerter === undefined ) return false; // Otherwise continue dispatching only if alerter.dispatch() returns false return( alerter == null || typeof alerter != 'object' || typeof alerter.dispatch != 'function' || alerter.dispatch( a ) !== false ); } } // app.media.Alerter constructor and prototype // If an alert is the result of a user-triggered event, always show alert with no checkbox. // If not user triggered, include a "don't show again" checkbox and save its state in this.skip, // but don't show the alert at all if this.skip is already true. // this.skip is kept separately for each document, and shared by all alerts for that document, // but a custom alerter could handle this differently. app.media.Alerter = function() { this.skip = false; // true if the "don't alert again" checkbox is checked } app.media.Alerter.prototype = { // Dispatch an alert and return true (or no value) if handled, false if not handled dispatch: function( a ) { // If alert is not from a user action, skip it if user has checked the "don't alert" box if( ! a.fromUser && this.skip ) return; var skip; // new state of the skip flag switch( a.type ) { case 'CannotPlay': if( a.canPlay.canShowUI ) // only if UI allowed { if( a.canPlay.no.authoring ) // Playback is not allowed while authoring skip = privOK( "IDS_PLAYBACK_DISALLOWED_WHILE_AUTHORING" ); else if( a.canPlay.no.security ) // User prefs say "no multimedia" skip = privOK( "IDS_PLAYBACK_DISALLOWED_CONFIGURATION" ); else ; // can't get here now, but should put up generic error just in case } break; case 'Exception': // Exceptions use a plain alert with no "skip" checkbox app.alert( a.error.message ); break; case 'FileNotFound': skip = app.media.alertFileNotFound( a.doc, a.fileName, ! a.fromUser ); break; case 'Open': // TODO - show UI here, except if already shown (e.g. for failPlayerSecurityPrompt) // may want more info from open (e.g. to tell us if UI was shown already) break; case 'PlayerError': skip = privOK( "IDS_JS_PLAYBACK_ERROR", a.errorText ); break; case 'SelectFailed': skip = app.media.alertSelectFailed( a.doc, a.selection.rejects, ! a.fromUser, a.fromUser ); break; } if( ! a.fromUser && skip ) this.skip = true; return true; // no further processing // Local function to display an "OK" alert with optional "don't alert again" checkbox. // Return checkbox result value, or undefined if no checkbox. function privOK( idMsg, strAppend ) { var o = { cMsg: app.media.priv.getString(idMsg) + ( strAppend || '' ), nIcon: 0, nType: 0, oDoc: a.doc }; if( ! a.fromUser ) o.oCheckbox = { cMsg: app.media.priv.getString("IDS_DONOT_SHOW_AGAIN_DOC"), bInitialValue: false }; app.alert( o ); if( o.oCheckbox ) return o.oCheckbox.bAfterValue; } }, } // end app.media.Alerter.prototype // Prototype for doc.media app.media.priv.docMediaProto = { // Return an array of all the currently open media players getOpenPlayers: function() { var players = this.adbeDoc.media.priv.players; return players ? players.slice(0) : []; }, } // end app.media.priv.docMediaProto // Debugging code app.media.priv.dumpObject = function( obj, str, bValues ) { if( ! str ) str = ""; else str += " "; str += "(" + obj + ") [" + typeof(obj) + "]\n"; for( var prop in obj ) str += " " + prop + ( bValues ? ": " + obj[prop] : "" ) + "\n"; app.media.priv.trace( str ); } app.media.priv.dumpNames = function( obj, str ) { app.media.priv.dumpObject( obj, str, false ); } app.media.priv.dumpValues = function( obj, str ) { app.media.priv.dumpObject( obj, str, true ); } app.media.priv.dumpArray = function( array, str ) { if( ! str ) str = ""; else str += " "; str += "(" + array + ") [" + typeof(array) + "]\n{ "; /* if( array.length ) app.alert( "has length" ); else app.alert( "no length" ); */ for( var i = 0; i < array.length; i++ ) str += array[i] + ( i < array.length - 1 ? ", " : " }" ); app.media.priv.trace( str ); } app.media.priv.trace = function( str ) { if( app.media.trace ) console.println( str ); } // Private function called in a rendition action. Alerts on failure. app.media.priv.stopAnnotPlayer = function() { try { annot = event.action.annot; if( annot.player ) annot.player.close( app.media.closeReason.stop ); // fires Close event, may fire Blur } catch( e ) { app.alert( e.message ); } } // Private function called in a rendition action. NOP if already paused. Alerts on failure. app.media.priv.pauseAnnotPlayer = function() { try { annot = event.action.annot; if( annot.player ) annot.player.pause(); } catch( e ) { app.alert( e.message ); } } // Private function called in a rendition action. NOP if not paused. Alerts on failure. app.media.priv.resumeAnnotPlayer = function() { try { annot = event.action.annot; if( annot.player ) annot.player.play(); } catch( e ) { app.alert( e.message ); } } // Enumerate and copy properties from one object to another object or to a new object, and // return the resulting object. This is a shallow copy: any objects referenced by the from // object will now be referenced by both the from and to objects. app.media.priv.copyProps = function( from, to ) { if( ! to ) to = {}; if( from ) { for( var name in from ) to[name] = from[name]; } return to; } // Rectangle utility functions // Tables used by rectAlign to map app.media.align values to window positioning multipliers. // see app.media.align.* un tl tc tr cl c cr bl bc br app.media.priv.xPosTable = [ 0.5, 0.0, 0.5, 1.0, 0.0, 0.5, 1.0, 0.0, 0.5, 1.0 ]; app.media.priv.yPosTable = [ 0.5, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5, 1.0, 1.0, 1.0 ]; // Given an app.media.align value and a desired width and height, return a rectangle // aligned with rect according to the align value. app.media.priv.rectAlign = function( rect, align, width, height ) { if( ! align ) align = app.media.align.center; var x = rect[0] + ( rect[2] - rect[0] - width ) * app.media.priv.xPosTable[align]; var y = rect[1] + ( rect[3] - rect[1] - height ) * app.media.priv.yPosTable[align]; return [ x, y, x + width, y + height ]; } // Given an app.media.align value and a rect, return an anchor point app.media.priv.rectAnchorPt = function( rect, align ) { if( ! align ) align = app.media.align.center; var x = rect[0] + ( ( rect[2] - rect[0] ) * app.media.priv.xPosTable[align] ); var y = rect[1] + ( ( rect[3] - rect[1] ) * app.media.priv.yPosTable[align] ); return [ x, y ]; } // Returns the area of a rectangle. If rect is empty, 0 is returned. app.media.priv.rectArea = function( rect ) { if( app.media.priv.rectIsEmpty( rect ) ) // empty rect might be [10,10,0,0] so cannot just do the math return 0; else return ( rect[2] - rect[0] ) * ( rect[3] - rect[1] ); } // Returns rect grown by size, an array of four values giving the amount to grow each edge. // Returned rect is a new object, input rect is not modified. app.media.priv.rectGrow = function( rect, size ) { return [ rect[0] - size[0], rect[1] - size[1], rect[2] + size[2], rect[3] + size[3] ]; } // Returns the intersection of two rectangles. // If either input rect is empty, or there is no intersection, [0,0,0,0] is returned. // Returned rect is a new object, input rects are not modified. app.media.priv.rectIntersect = function( rectA, rectB ) { var newRect; if( app.media.priv.rectIsEmpty(rectA) || app.media.priv.rectIsEmpty(rectB) ) { newRect = [ 0, 0, 0, 0 ]; } else { newRect = [ Math.max( rectA[0], rectB[0] ), Math.max( rectA[1], rectB[1] ), Math.min( rectA[2], rectB[2] ), Math.min( rectA[3], rectB[3] ) ]; if( app.media.priv.rectIsEmpty( newRect ) ) newRect = [ 0, 0, 0, 0 ]; } return newRect; } // Take the intersection of two rectangles and return its area. app.media.priv.rectIntersectArea = function( rectA, rectB ) { return app.media.priv.rectArea( app.media.priv.rectIntersect( rectA, rectB ) ); } // Is a rectangle empty? app.media.priv.rectIsEmpty = function( rect ) { return ! rect || rect[0] >= rect[2] || rect[1] >= rect[3]; } // Returns new object that contains same values (not custom values) as input rect. app.media.priv.rectCopy = function( rect ) { return [ rect[0], rect[1], rect[2], rect[3] ]; } // Returns the union of two rectangles. // Returned rect is a new object, input rects are not modified. app.media.priv.rectUnion = function( rectA, rectB ) { return( app.media.priv.rectIsEmpty(rectA) ? app.media.priv.rectCopy( rectB ) : app.media.priv.rectIsEmpty(rectB) ? app.media.priv.rectCopy( rectA ) : [ Math.min( rectA[0], rectB[0] ), Math.min( rectA[1], rectB[1] ), Math.max( rectA[2], rectB[2] ), Math.max( rectA[3], rectB[3] ) ] ); } // Get a resource string app.media.priv.getString = function( idString ) { return app.getString( 'Multimedia', idString ); } // Return a value or a default if the value is undefined app.media.priv.valueOr = function( value, def ) { return value !== undefined ? value : def; } // Private constants app.media.priv.altTextPlayerID = 'vnd.adobe.swname:ADBE_AltText'; //console.println( app.media.priv.getString('IDS_JS_STARTUP') ); // End of try block for entire file } catch( e ) { console.println( e.extMessage ); } } // end of InitializeMultimediaJS // End of media.js try { /* Bug#1736493:- Search for Additional Services under Comments menu has been removed. This global function is being exposed unnecessarily. Commenting it. */ /* SPSearchForServices = app.trustedFunction(function() { var dialog = ANTrustPropagateAll( { serviceType: "acrobatSRV", client: ["local.", ""], // Domains to search in services: {}, domains: {}, resourceContext: "SOAP", committing: false, types: { "RSS": SOAPString.IDS_JS_SERVICES_FEED, "UI": SOAPString.IDS_JS_SERVICES_UI, }, description: { name: "$$$/Dialogs/SearchForServices", elements: [ { type: "view", align_children: "align_left", elements: [ { type: "cluster", name: "$$$/Dialogs/SearchForServices/ClusterTitle", elements: [ { type: "static_text", name: "$$$/Dialogs/SearchForServices/PleaseSelect" }, { type: "list_box", item_id: "sele", width: 300, height: 200 }, { type: "static_text", item_id: "srvt", wrap_name: true, width: 300, height: 40 } ] }, { type: "ok_cancel" } ] } ] }, updateServices: function() { this.dialog.load({ sele: this.services }); }, addServices: function(services) { for(var i in services) { var service = services[i]; this.services[service.name] = -1; this.domains[service.name] = service.domain; } this.updateServices(); }, removeServices: function(services) { for(var i in services) { var service = services[i]; delete this.services[service.name]; delete this.domains[service.name]; } this.updateServices(); }, initialize: function(dialog) { dialog.enable({"ok": false}); this.dialog = dialog; app.beginPriv(); this.query = SOAP.queryServices(this.serviceType, this, this.client); app.endPriv(); }, validate: function(dialog) { return true; }, commit: function(dialog) { this.committing = true; var sele = dialog.store()["sele"]; for(var i in sele) { if(sele[i] > 0) { app.beginPriv(); this.resolver = SOAP.resolveService(this.serviceType, this.domains[i], i, this); app.endPriv(); break; } } }, destroy: function(dialog) { if(typeof this.query != "undefined") { this.query.stop(); this.query = null; } }, resolve: function(name, service) { try { var type = service.feedType; if(type == undefined) type = service.type; if(this.committing) { var url = "http://" + service.target + ":" + service.port + "/" + service.path; app.beginPriv(); RSS.addFeed({ cURL: url, cType: type }); app.endPriv(); if(type == "RSS") app.launchURL("acrobat:Inbox?show"); } else { this.dialog.load({"srvt": this.types[type]}); } } catch(e) { console.println("EXCEPTION: " + e); } }, "sele": function(dialog) { if(this.resolver != undefined) { this.resolver.stop(); this.resolver = undefined; } var sele = dialog.store()["sele"]; for(var i in sele) { if(sele[i] > 0) { app.beginPriv(); this.resolver = SOAP.resolveService(this.serviceType, this.domains[i], i, this); app.endPriv(); this.dialog.enable({"ok": true}); return; } } dialog.enable({"ok": false}); } }); app.beginPriv(); dialog.resolve = app.trustedFunction(dialog.resolve); app.execDialog(dialog); app.endPriv(); }); // SPSearchForServices Function commented */ SOAP.stripNS = function (p, ns) { if(typeof p == "object") { if(p.length == undefined) { var result = {}; for(var i in p) { var key = i; var offset = i.indexOf(ns); if(offset == 0) key = i.slice(ns.length); result[key] = SOAP.stripNS(p[i], ns); } p = result; } else for(var i = 0; i < p.length; i++) p[i] = SOAP.stripNS(p[i], ns); } return p; } // stripNS // ///////////////////////////////////////////// // Dynamic Network Configurable Collab Driver ///////////////////////////////////////////// // DynamicAnnotStore = app.trustedFunction(function(doc, user, settings) { this.doc = doc; this.user = user; this.settings = settings; this.driver = null; var e; try { app.beginPriv(); // Add a temporary JS Feed RSS.addFeed(this.settings, true, false, "JS"); // Update Synchronously RSS.update(this.settings, false); // Get the feed contents var script = RSS.getContents(this.settings); app.endPriv(); if(typeof script != "undefined") { (function(s){ return eval(s) })(script); this.driver.init(doc, user, settings); } else console.println("Didn't Load driver " + settings); } catch(e) { app.endPriv(); this.driver = null; console.println("EXCEPTION: " + e); } this.enumerate = function(sorted) { if(typeof this.driver != "undefined") return this.driver.enumerate(sorted); else return null; } this.complete = function(toComplete) { if(typeof this.driver != "undefined") return this.driver.complete(toComplete); else return false; } this.getDocInfo = function() { if(typeof this.driver != "undefined") return this.driver.getDocInfo(); else return null; } this.update = function(toDelete, toAdd, toUpdate) { if(typeof this.driver != "undefined") return this.driver.update(toDelete, toAdd, toUpdate); else return false; } }); const SOAPMessageStyle = { JS: "JS", XML: "XML", Message: "Message" }; const SOAPVersion = { version_1_1: "1.1", version_1_2: "1.2" }; const StreamDigest = { MD5: "MD5", SHA1: "SHA1" }; const ServiceDiscovery = { local: "local", DNS: "" }; const SOAPRequestStyle = { SOAP: "SOAP", RawPost: "RawPost" }; if(typeof SOAP != "undefined") { if(typeof RSS != "undefined") Collab.addAnnotStore("CONFIG", SOAPString.IDS_COLLABSTORE_DYNAMIC, {create: function(doc, user, settings){ return (settings && settings != "") ? new DynamicAnnotStore(doc, user, settings) : null; }}); } } catch(e) { console.println(e.extMessage); } byteCodeToolg퀀€€€€€€€ € € € €€€€€€€€€€€€"€$€(€*€,€.€0€7€;€=€T€t€€Œ€”€˘€Ś€Ë€Ó€Ř€Ű€Ţ€1€3€8€L€N€P€T€U€V€X€Z€\€^€_€`€a€b€c€d€e€f€g€h€i€n€o€p€q€r€s€t€u€v€w€x€y€z€{€|€}€~€€€ƒ…†€Œ€€‘€’€“”€•€–€—€˜€Ť€ľ€ˇ€Āɀ̀ЀԀՁű˙€€.€5€6€7€MŽ€X€\€a€d€g†;5Q;5Q;5Q;5Q;5Q;5Q;5Q;5Q;5  Q;5  Q;5  Q=  Q=Q=Q=Q=QXLQXxQX†QXĹQXăQ;ä=äRQ;ä=ä= ä=!äRQ;ä=#äR"Q;ä=%ä=&ä='äR$Q;ä=)äR(Q;ä=+äR*Q;ä=-äR,Q;ä=/äR.Q;ä=1ä=2ä=3ä=4ä=5ä=6äR0Q;ä=8ä=9ä=:ä=6äR7Q;ä=<äR;Q;ä=>äR=Qn?;@äRo?;?;B6A;?;D6C;?;ä=äR6E;?;ä=Gä>äR6F;?;ä=Gä?äR6H;?;ä=Gä<äR6I;?;ä=Gä<äR6J;?;ä=Gä<äR6K;?;ä=Mä?ä>ä>äR6L;?;ä=Mä>ä?ä>äR6N;?;ä=Mä>ä>ä?äR6O;?;ä=Qä?ä>ä>ä>äR6P;?;ä=Qä>ä?ä>ä>äR6R;?;ä=Qä>ä>ä?ä>äR6S;@äRTQ;T=V6U;T=X6W;T=Z6Y;T=\6[;T=^6];T=`6_;T=b6a;T=d6c;T=f6e;T=h6g;T=j6i;T=l6k;T=m6m;T=o6n;T=q6p;T=s6r;@äRtQ;t=v6u;t=x6w;t=z6y;t=|6{;t=~6};@äRQ;=6€;=ƒ6‚;=…6„;=‡6†;=‰6ˆ;=‹6Š;@äRŒQ;Œ=Ž6;Œ=6{;Œ=‘6;Œ=“6’;@äR”Q;”=•6Ž;”=—6–;”=™6˜;”=›6š;”=6œ;”=Ÿ6ž;”=Ą6 ;@äR˘Q;˘>6Ł;˘?6¤;˘×6Ľ;@äRŚQ;Ś=¨6§;Ś=Ş6Š;Ś=Ź6Ť;Ś=Ž6­;Ś=°6Ż;Ś=˛6ą;Ś=´6ł;Ś=ś6ľ;Ś=¸6ˇ;Ś=ş6š;Ś=ź6ť;Ś=ž6˝;Ś=Ŕ6ż;Ś=Â6Á;Ś=Ä6Ă;Ś=Ć6Ĺ;Ś=Č6Ç;Ś=Ę6É;@äRËQ;Ë>6Ě;Ë?6Í;Ë×6Î;Ë×6Ď;Ë×6Đ;Ë×6Ń;Ë×6Ň;@äRÓQ;Ó>6Ô;Ó?6Ő;Ó×6Ö;Ó×6×;@äRŘQ;Ř>6Ů;Ř?6Ú;@äRŰQ;Ű>6Ł;Ű?6¤;Ű×6Ü;Ű×6Ý;@äRŢQ;Ţ=ŕ6ß;Ţ=â6á;Ţ=ä6ă;Ţ=ć6ĺ;Ţ=č6ç;Ţ=ę6é;Ţ=ě6ë;Ţ=î6í;Ţ=đ6ď;ŢZ ;Ţ5ß`;Ţ5á`;Ţ5ă`;Ţ5ĺ`;Ţ5ç`;Ţ5é`;Ţ5ë`;Ţ5í`;Ţ5ď`\6ń;Ţ=ó6ň;Ţ=ő6ô;Ţ=÷6ö;Ţ=ů6ř;Ţ=ű6ú;Ţ=ý6ü;Ţ=˙6ţ;Ţ=6;Ţ=6;Ţ=6;Ţ=6;Ţ=6;Ţ=6 ;Ţ= 6 ;Ţ= 6 ;Ţ=6;Ţ=6;Ţ=6;Ţ=ş6š;Ţ=6;Ţ=6;Ţ=6;Ţ=6;Ţ=6;Ţ=6;Ţ=!6 ;Ţ=#6";Ţ=%6$;Ţ='6&;Ţ=)6(;ŢZ;Ţ5ň`;Ţ5ô`;Ţ5ö`;Ţ5ř`;Ţ5ú`;Ţ5ü`;Ţ5ţ`;Ţ5`;Ţ5`;Ţ5` ;Ţ5 ` ;Ţ5 ` ;Ţ5 ` ;Ţ5` ;Ţ5`;Ţ5`;Ţ5š`;Ţ5`;Ţ5`;Ţ5`;Ţ5`;Ţ5`;Ţ5`;Ţ5 `;Ţ5"`;Ţ5$`;Ţ5&`;Ţ5(`\6*;Ţ×˙6+;Ţ>6,;Ţ?6-;Ţ×6.;Ţ×6/;Ţ×60Y=2]2\1QY=4]5=6]7\3Q;@äR8Q;8=:69;8=<6;;8=>6=;8=@6?;8=B6A;8=D6C;8=F6E;8=G6G;8=I6H;8=K6J;@äRLQ;L=M6M;@äRNQ;N‚6O;QäRPQ;P ¸R ä=Sä:;QäRTQ;T ¸R ä;5 ä={ä:;QäRUQ;U ¸R ä;5ä={ä:;QäRVQ;V ¸R ä=Wä:;QäRXQ;X ¸R ä=Yä:;QäRZQ;Z ¸R ä=[ä={ä:9]â]ä;ä:\Q9]â]ä;ä:^Q9]â]ä;"ä:_Q9]â]ä;$ä:`Q9]â]ä;(ä:aQ9]â]ä;*ä:bQ9]â]ä;,ä:cQ9]â]ä;.ä:dQ9]â]ä;0ä:eQ9]â]ä;7ä:fQ9]â]ä;;ä:gQ9]â]ä;=ä:hQ9]â]ä;5 ¸j ä ä:ä:iQ      !"#$%&'()*+,-./0123456789>Ć:vŠ:Q;k ¸l äˆ:5mä:dž>nQ?oQ×pQ×qQ×rQ×sQ×tQ>uQ?vQ×wQ×xQ×yQ×zQ×{Q×|Q?}Q>~Q=€Q=‚Q=„ƒQn…‚;o…Qn†‚ä:o‰?@=‚A ¸Ž ä:=ŒQ=‚B ¸Ž ä:=QZ‚C`‚D`‚E`‚F`‚G`‚H`‚I`\‘QZ‚J`‚K`‚L`‚M`‚N`‚O`‚P`\’QZ;o`;q`;t`;r`\“QQRSTUV;‡'=ˆˇn”;Š ¸‹ ä‚Wä:o”Q?•Q×–Q×—QXYZ[\]Y‚^]™‚_]š‚`]›\˜Qabcdefghijklmnnœ;Š ¸‹ ä‚oä:oœpqrstuvwxyn;Š ¸‹ ä‚zä:onž;Š ¸‹ ä‚{ä:ožnŸ;Š ¸‹ ä‚|ä:oŸn ;Š ¸‹ ä‚}ä:o nĄ;Š ¸‹ ä‚~ä:oĄn˘;Š ¸‹ ä‚ä:o˘nŁ;Š ¸‹ 䂀ä:oŁn¤;Š ¸‹ 䂁ä:o¤nĽ;Š ¸‹ 䂂ä:oĽnŚ‚ƒoŚ„…n§;Š ¸‹ 䂆ä:o§‡ˆ‰Šn¨;Š ¸‹ 䂋ä:o¨nŠ;Š ¸‹ 䂌ä:oŠnŞ;Š ¸‹ 䂍ä:oŞ>ƎvŠŽQ;k ¸l 䈎5mä:dž‘’“”ZY=Ź]­‚•]Ž=4]Ż;°5ą]˛=4]łC]´\`\ŤQZY=Ź]­‚–]Ž=4]Ż;°5ś]˛=4]łC]´\`\ľQZ Y=¸]­‚—]Ž;°5ą]˛=4]łC]´\`Y=š]­‚˜]Ž;°5ş]Ż;°5ą]˛=4]łC]´\`Y=ť]­‚™]Ž;°5ş]Ż;°5ą]˛=4]łC]´\`Y=ź]­‚š]Ž;°5˝]Ż;°5ą]˛C]´\`Y=ž]­‚›]Ž;°5˝]Ż;°5ą]˛C]´\`Y=ż]­‚œ]Ž;°5˝]Ż;°5ą]˛C]´\`Y=Ŕ]­‚]Ž;°5Á]Ż;°5ą]˛=4]łC]´\`Y=Â]­‚ž]Ž;°5ş]Ż;°5ą]˛=4]łC]´\`Y=Ă]­‚Ÿ]Ž=4]Ż;°5ą]˛=4]łC]´\`Y=Ź]­‚ ]Ž=4]Ż;°5ą]˛=4]łC]´\` \ˇQZ Y=¸]­‚Ą]Ž;°5Ĺ]Ż;°5ś]˛=4]łC]´\`Y=š]­‚˘]Ž;°5Ć]Ż;°5ś]˛=4]łC]´\`Y=ť]­‚Ł]Ž;°5Ć]Ż;°5ś]˛=4]łC]´\`Y=ź]­‚¤]Ž;°5˝]Ż;°5ś]˛C]´\`Y=ž]­‚Ľ]Ž;°5˝]Ż;°5ś]˛C]´\`Y=ż]­‚Ś]Ž;°5˝]Ż;°5ś]˛C]´\`Y=Ç]­‚§]Ž;°5Ć]Ż;°5ś]˛=4]łC]´\`Y=Ŕ]­‚¨]Ž;°5Č]Ż;°5ś]˛=4]łC]´\`Y=Â]­‚Š]Ž;°5Ć]Ż;°5ś]˛=4]łC]´\`Y=Ă]­‚Ş]Ž=4]Ż;°5ś]˛=4]łC]´\` Y=Ź]­‚Ť]Ž=4]Ż;°5ś]˛=4]łC]´\` \ÄQZY=ź]­‚Ź]Ž;°5˝]Ż;°5Ę]˛C]´\`Y=ž]­‚­]Ž;°5˝]Ż;°5Ę]˛C]´\`Y=ż]­‚Ž]Ž;°5˝]Ż;°5Ę]˛C]´\`Y=Ë]­‚Ż]Ž;°5Ě]Ż;°5Ę]˛C]´\`Y=Ź]­‚°]Ž=4]Ż;°5Ę]˛=4]łC]´\`\ÉQZY=ź]­‚ą]Ž;°5˝]Ż;°5Î]˛C]´\`Y=ž]­‚˛]Ž;°5˝]Ż;°5Î]˛C]´\`Y=ż]­‚ł]Ž;°5˝]Ż;°5Î]˛C]´\`Y=Ë]­‚´]Ž;°5Ď]Ż;°5Î]˛C]´\`\ÍQZY=ź]­‚ľ]Ž;°5˝]Ż;°5Ń]˛C]´\`Y=ž]­‚ś]Ž;°5˝]Ż;°5Ň]˛C]´\`Y=ż]­‚ˇ]Ž;°5˝]Ż;°5Ó]˛C]´\`\ĐQZY=ž]­‚¸]Ž;°5˝]Ż;°5Ň]˛C]´\`Y=ż]­‚š]Ž;°5˝]Ż;°5Ó]˛C]´\`\ÔQşZY‚ť]Ž;°5Ö]Ż;°5×]˛;Š5Ř ¸Ů ä=Úä:@;°5Ű;°5Ü]ł\`Y‚ź]Ž;°5Ý]Ż;°5Ţ]˛;°5ß]ł;°5ŕ]á\`Y‚˝]Ž;°5â]Ż;°5ă]˛;°5ä]ł;°5ĺ]á\`Y‚ž]Ž;°5ć]Ż;°5ç]˛;°5č]ł\`\ŐQ;‡'=ˆ 1;‡;Š5ę=ë XüXü6é;‡;Š5ę=ë XPX?6ě;‡XŹ6í;‡× 6î;‡× 6ď;‡×6đ;‡×6ń;‡×6ň;‡× 6ó;‡× 6ô;‡× 6ő;‡× 6öżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃn÷‚Ňo÷nř‚Óořnů‚Ôoůnú‚Őoún¸‚Öo¸n˂×oËŘŮÚŰÜÝnű@oűQŢßŕnü;Š ¸ý ä‚áä:oüâăänš‚ĺošnţ‚ćoţnŔ‚çoŔnǂčoÇn‚éoÂnÂęoĂën˙;°5o˙Qn=4oQn;äRoQěnŹ‚íoŹn‚îon‚ďon‚đonź‚ńoźn‚ňoónż‚ôożn‚őon ;Š ¸‹ ä‚öä:o n ;Š ¸‹ ä‚÷ä:o n ;Š ¸‹ ä‚řä:o n ;Š ¸‹ ä‚ůä:o n ;Š ¸‹ ä‚úä:o n‚űon‚üon‚ýon‚ţon‚˙on‚on;Š ¸‹ ä‚ä:on;Š ¸‹ ä‚ä:onť‚oťn;Š ¸‹ ä‚ä:on;Š ¸‹ ä‚ä:on;Š ¸‹ ä‚ä:on‚o   n‚ o Y‚]‚]Y;°5]‚] ‚]!‚]"‚]#‚]$‚]%‚]&ZY‚]'‚](‚])\`\]*Y\]+\],‚]-\QY‚]/‚]0‚ ]1‚!]2‚"]‚#]3‚$]4Y;°5]‚%] ‚&]!‚']"‚(]#‚)]$‚*]%‚+]&ZY‚,]'‚-](‚.])\`Y‚/]'‚0](‚1])\`\]*Y\]+\],‚2]-\.QY‚3]/‚4]0‚5]1‚6]2‚7]‚8]3‚9]4Y;°5]‚:] ‚;]!‚<]"‚=]#‚>]$‚?]%‚@]&ZY‚A]'‚B](‚C])\`Y‚D]'‚E](‚F])\`\]*Y\]+\],‚G]-\5QY‚H]/‚I]0‚J]1‚K]2‚L]‚M]3‚N]4Y;°5]‚O] ‚P]!‚Q]"‚R]#‚S]$‚T]%‚U]&ZY‚V]'‚W](‚X])\`Y‚Y]'‚Z](‚[])\`\]*Y\]+\],‚\]-\6QY‚]]/‚^]0‚_]1‚`]2‚a]‚b]3‚c]4Y;°5]‚d] ‚e]!‚f]"‚g]#‚h]$‚i]%‚j]&ZY‚k]'‚l](‚m])\`Y‚n]'‚o](‚p])\`\]*Y\]+\],‚q]8‚r]-\7Q;Š ¸9 ä:;: ¸; ä=<ä;.ä:;: ¸; ä==ä;7ä:;Š5ę=>;: ¸; ä=?ä;6ä:;: ¸; ä=@ä;ä:;Š ¸A ä:snB;Š ¸‹ ä‚tä:oBnC;Š ¸‹ ä‚uä:oCnD;Š ¸‹ ä‚vä:oDwxnE‚yoEnF;Š ¸‹ ä‚zä:oFnG‚{oGnH;Š ¸‹ ä‚|ä:oH}nI;Š ¸‹ ä‚~ä:oInJ;Š ¸‹ ä‚ä:oJnK;Š ¸‹ ä‚€ä:oK‚ƒnL;Š ¸‹ ä‚„ä:oL9LâLä:>Ć…vŠ…Q;k ¸l 䈅5mä:ÇY‚†]N‚‡]O‚ˆ]P‚‰]Q‚Š]R‚‹]S‚Œ]T\MQ†;U‚6VnW;Š ¸‹ 䂐ä:oWY=Y]Y=Z]Z=[][\XQY=]]^=_]`\\QY=b]b=c]c\aQY=e]e=4]f\dQY=U]U=h]h\gQ;U'=ˆI;:'=ˆ8;‡ ¸i ä=jä;k5läY‚‘]ô\ä:>Ć’vŠ’Q;k ¸l 䈒5mä:ǘˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆˆ•ˆ•ˆ•ˆ•ˆ!ˆ•ˆ•ˆ•ˆ•ˆ'ˆ*ˆ/ˆ2ˆ7ˆ:ˆ=ˆ@ˆCˆLˆRˆUˆ€ľˆ€Čˆ€Đˆ€Ůˆ€ŕˆ€ęˆ€đˆ€ˆ€ˆ€ˆ€ˆ€#ˆ€iˆ•ˆ•ˆ€zˆ€~ˆ€­ˆ•ˆ•ˆ•ˆ•ˆ•ˆ€̈•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ€÷ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ•ˆ€ˆ€Mˆ€Sˆ€\ˆ€nˆ€€ˆ€ ,ˆ€ ˆ•ˆ•ˆ€ Fˆ€%čˆ€%ôˆ€&ˆ€&Pˆ€&Ťˆ€&Ԉ€&őˆ€'ˆ€'툝€8ąˆ€LĄˆ•ˆ•ˆ€o<ˆ€oˆ€q*ˆ€rЈ€tŁˆ€Óˆʘ€‚wˆ €ˆ ˜€—Yˆ€—`ˆ€—fˆ€—lˆ€—rˆ˜ ™ААААААААААИːːːː˘!ɐɐɐɐɘ'—Ď˜*—––Ď˜/—Ď˜2—––Ď˜7—Ď˜:—Ď˜=—Ď˜@—Ď˜C—––žH––Ď˜L—–––Ď˜R—Ď˜U—Ď˜[|€¤ŐĐĐŰÝÝááááááăăăĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĚĚÍĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĚĚÍÍÍÍÍĐĚĚÍÍĐĚĚ˜€А̐̐͐͐ĐĐĐĐĐĐĐĐĐĐÉřřŐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐÉřřřřęřęăÍĚĚÍÍÍÖŕĐĐĐĐĐĐĐĐĐĐĐĐĐĐĐ˜€­Đ×ĐâĐâĐ×Đ×ĐÝ€Ěڐڐڐڐڐڐڐڐڐڐڐڐ𐐝€杀÷€€!€.€Q€\€f€p€œ€ޝ€ĝ€r€J€V€š€¤€ł€͝€ٝ€ő€€F€K€P€V€[€`€u€€ŝ€ů€ €€)€X€m€Š€›€ʝ€杀 €€.€;€[€d€k€‚€Ł€ϝ€ڝ€ç}€đАˆŕ€{–ˆ‘——ȐȐȐȐȐ——ȐȐȐȐȐȐ——ËËËĐ˜€И€ˆĚ•€'ˆᘀ3€E€M֘€Q̐Ö˜€W̘€\”ɐɐɐɐɘ€fɐИ€n”ɐɐɐɐɘ€xɐИ€€ď€—€­€ľ€ҝ€ 0€ *ˆĚ•á˜€ —ȐȐ€ ❀ ô€ € € 3€ F•ĘĘŃ˜€ N€ ]€ i€ †€ ›€ °€ ɝ€ Н€ ,€ 3€ h€ |€ € ‰€ ’ᘀ ˘€ ń€i€€˜€­€ˇ€݀͝€ €rᘀĄá˜€ᘀ ᘀᘀŚá˜€ᘀ ᘀ\ᘀÇИ€ڕ€㐐ᘀU€Z€a€´€şá˜€ᘀ%áx€%†Đˆŕ€{–ˆ‘€%Ą€%ź€%ĝ€%ӝ€%؝€%萔•ĘĘĘĎĘŇ˜€%ô”•ĘĘĘĎĘŇ˜€&”•ĘĘĎĘË•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĘĎĘË•ĘĘĘĎĘŇ˜€&P”•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĎĎĘË•ĘĘĘĎĘË•ĘĘĘĎĘŇ˜€&Ť”•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĘĎĘŇ˜€&Ԑ”•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎŇ˜€&ő”•ĘĘĎĎË•ĘĘĎĎË•ĘĘĎĎŇ˜€'”•ĘĘĎĎË•ĘĘĎĎŇ˜€' €'퐔•ĘĎĎÝ•ĎÔ•ĘĎĎĎÔ•ĘĎĎĎÔ•ĘĎĎŰ˜€(ˆĚ•ˆŐ֐ˆŐ֘€(ˆΐˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐€(-€(7€(Z€(y€(†€(¨€(˝€(Ɲ€(͝€)€)Ż€)ż€)ϝ€)؝€)÷€*€€*ô€+z€/ˇˆИ€0ôˆИ€1™ˆИ€2 ˆИ€2żˆИ€3ΈИ€5N€5¤€5Ż€7&€7ڐ€8€8ąĚ€8ŝ€8֝€90ᘀ9C€9N€<,€<6ˆИ€?ëˆИ€A&ˆИ€GéˆИ€HaˆИ€JíˆИ€Lg€LĄŐĐŐ€LąˆИ€RXˆИ€SîˆИ€U8ˆИ€UzˆИ€WˆИ€WΝ€\ˆˆИ€]ˆИ€_ˆˆᘀ`ˆᘀ`ˆᘀ`(ˆᘀ`Vˆᘀ`…ˆИ€e(ˆИ€eoˆИ€eňˆИ€f ˆИ€fŤˆИ€fľˆᘀh{ˆᘀix€i‘ˆИ€jœˆᘀk6ˆᘀk ˆᘀlCˆИ€m€mD€mq€mˆИ€m­€nJ€o€o+€o<•Ę˜€oCʘ€oI•ĎĘĘĘĘĘ˜€oYʘ€o^ʘ€od”•Ę˜€oqʘ€ov՘€ozѐŃ˜€o•Ę˜€o—Ę˜€oœĘ˜€oĄĘ˜€oĽĘ˜€oŞĘ˜€pśĘ˜€p˝•ĎĘĘĘĘĘ˜€pÍʘ€pŇʘ€pؔ•Ę˜€píʐϐ•Ę˜€q ʘ€q՘€qѐŃ˜€q*•Ę˜€q1ʘ€q6ʘ€q;ʘ€q@ʘ€qEʘ€rdʘ€rk•ĎĘĘĘĘĘ˜€r{ʘ€r€Ę˜€r†”•Ę˜€ršĘĎ•Ę˜€r°Ę˜€rľŐ˜€ršŃŃ˜€rА•Ę˜€r×ʘ€rÜʘ€ráʘ€rćʘ€rëʘ€t+ʘ€t3•ĎĘĘĘĘĘ˜€tCʘ€tHʘ€tQ”•Ę˜€tkʐϐ•Ę˜€t†Ę˜€t‹Ő˜€tŃŃ˜€tŁ•Ę˜€tŞĘ˜€tŻĘ˜€t´Ę˜€tšĘ˜€tžĘ˜€wʘ€w•ĎĘĘĘĘĘ˜€w'ʘ€w,ʘ€w3”•Ę˜€wGʐϐ•Ę˜€w]ʘ€wb՘€wfѐĘ˜€w~ј€wˆѐˆӐʐˆӐʐĐ•˜€wˆӐʐˆݐˆѐ€w˝á˜€x3ᘀy+ᘀz €z;€{7Đ˜€{‰á˜€|:И€}pᘀ}ł€}ěᘀ~&ᘀ~bᘀ~ţ€€€#€dᘀ˝Ďx•Đˆŕ€{–ˆ˜€Ó€Üʘ€ăʘ€éʘ€ţʘ€‚ʘ€‚&ʘ€‚[ј€Óˆ˜€‚w˜€Œüˆ˜€˜€–8ˆ˜€–<™€–ýИ€—ᘀ—Y•ĘĘŃ•ĘŃ•ĘŃ•ĘŃ•ĘŃˆĚ•ˆĚ•ˆސŐx•Đˆŕ€{–ˆIDS_GREATER_THAN EScriptString IDS_GT_AND_LT IDS_LESS_THANIDS_INVALID_MONTHIDS_INVALID_DATEIDS_INVALID_DATE2IDS_INVALID_VALUEIDS_AMIDS_PMIDS_MONTH_INFOIDS_STARTUP_CONSOLE_MSGIDS_MEIJI_ABBREVMIDS_TAISHO_ABBREVTIDS_SHOWA_ABBREVSIDS_HEISEI_ABBREVHIDS_REIWA_ABBREVRIDS_MEIJI_ABBREV_LONGIDS_TAISHO_ABBREV_LONGIDS_SHOWA_ABBREV_LONGIDS_HEISEI_ABBREV_LONGIDS_REIWA_ABBREV_LONGRE_NUMBER_ENTRY_DOT_SEPArray[+-]?\d*\.?\d*RE_NUMBER_COMMIT_DOT_SEP[+-]?\d+(\.\d+)? [+-]?\.\d+ [+-]?\d+\.RE_NUMBER_ENTRY_COMMA_SEP [+-]?\d*,?\d*RE_NUMBER_COMMIT_COMMA_SEP[+-]?\d+([.,]\d+)? [+-]?[.,]\d+ [+-]?\d+[.,] RE_ZIP_ENTRY\d{0,5} RE_ZIP_COMMIT\d{5} RE_ZIP4_ENTRY\d{0,5}(\.|[- ])?\d{0,4}RE_ZIP4_COMMIT\d{5}(\.|[- ])?\d{4}RE_PHONE_ENTRY)\d{0,3}(\.|[- ])?\d{0,3}(\.|[- ])?\d{0,4} \(\d{0,3}-\(\d{0,3}\)(\.|[- ])?\d{0,3}(\.|[- ])?\d{0,4}+\(\d{0,3}(\.|[- ])?\d{0,3}(\.|[- ])?\d{0,4}+\d{0,3}\)(\.|[- ])?\d{0,3}(\.|[- ])?\d{0,4}011(\.|[- \d])*RE_PHONE_COMMIT\d{3}(\.|[- ])?\d{4}#\d{3}(\.|[- ])?\d{3}(\.|[- ])?\d{4}'\(\d{3}\)(\.|[- ])?\d{3}(\.|[- ])?\d{4} RE_SSN_ENTRY)\d{0,3}(\.|[- ])?\d{0,2}(\.|[- ])?\d{0,4} RE_SSN_COMMIT#\d{3}(\.|[- ])?\d{2}(\.|[- ])?\d{4}colorObjectequal ColorEqualconvert ColorConvert transparentblackGwhitedkGraygrayltGrayredRGBgreenbluecyanCMYKmagentayellowfontTimes Times-RomanTimesB Times-BoldTimesI Times-ItalicTimesBITimes-BoldItalicHelv HelveticaHelvBHelvetica-BoldHelvIHelvetica-ObliqueHelvBIHelvetica-BoldObliqueCourCourierCourB Courier-BoldCourICourier-ObliqueCourBICourier-BoldObliqueSymbolZapfD ZapfDingbatsKaGoHeiseiKakuGo-W5-UniJIS-UCS2-HKaMiHeiseiMin-W3-UniJIS-UCS2-Hborderssolidddashedbbevelediinsetu underlinestylechcheckcrcrossdidiamondcicircleststarsqsquare highlightnnoneinvertppushooutlinezoomtypeNoVaryfitWFitWidthfitH FitHeightfitPFitPagefitVFitVisibleWidthpref PreferredrefW ReflowWidthcursorvisiblehiddendelaytransblindsHBlindsHorizontalblindsVBlindsVerticalboxIBoxInboxOBoxOutdissolveDissolveglitterD GlitterDownglitterR GlitterRight glitterRDGlitterRightDownrandomRandomreplaceReplacesplitHISplitHorizontalInsplitHOSplitHorizontalOutsplitVISplitVerticalInsplitVOSplitVerticalOutwipeDWipeDownwipeLWipeLeftwipeR WipeRightwipeUWipeUppositiontextOnlyiconOnly iconTextV textIconV iconTextH textIconHoverlay scaleWhenalwaysnevertooBigtooSmallscaleHow proportional anamorphicdisplaynoPrintnoView permissiondocumentDocumentpagePagelinkLinkbookmarkBookmark thumbnail ThumbnailannotAnnotformForm signature SignatureefEFobjectallAllcreateCreateremoveDeletemodifyModifycopyCopy accessible AccessibleselectSelectopenOpensecureSecureprint PrintHigh printHighprintLowQualityPrintLowprintLowfillInFillInrotateRotatecropCrop summarize SummarizeinsertInsertreorderReorderfullSaveFullSave canImportImport canExportExportanyAny unknownOpr UnknownOprsubmitStandaloneSubmitStandalone spawnTemplate SpawnTemplateonlineOnline summaryView SummaryViewbarcodePlaintextBarcodePlaintext operationdeniedgranted unknownObjectunknownOperationnapendingsubmitFormUsageRightsRMA fileSystemdefaultCHTTPWebDAVencodingromanUS-ASCII unicodeUTF8utf-8 unicodeUTF16utf-16unicodeUTF16BEutf-16BEunicodeUTF16LEutf-16LEjapanese Shift-JIStraditionalChineseBig5BigFivesimplifiedChineseGBKkoreanUHC requirementsEnableJavaScriptsHostContainerDisclosurePolicySameOriginPolicyAFDigitsRegExpRegExpcompile\d+ AFPMRegExp AFAMRegExpAFTimeLongRegExp\d{1,2}:\d{1,2}:\d{1,2}AFTimeShortRegExp\d{1,2}:\d{1,2}AFTimeGarbageRegExp'\d{1,2}:\d{1,2}(:\d{1,2})?(\s)*(am|pm)?AFNumberDotSepEntryRegExpAFBuildRegExpsAFNumberDotSepCommitRegExpAFNumberCommaSepEntryRegExpAFNumberCommaSepCommitRegExpAFZipEntryRegExpAFZipCommitRegExpAFZip4EntryRegExpAFZip4CommitRegExpAFPhoneEntryRegExpAFPhoneCommitRegExpAFSSNEntryRegExpAFSSNCommitRegExpAFMonthsRegExpsplitconsoleprintln extMessage ANSB_None ANSB_PageANSB_Seq ANSB_Author ANSB_ModDate ANSB_Type ANSB_SubjectANFB_ShouldPrintANFB_ShouldViewANFB_ShouldEditANFB_ShouldAppearInPanelANFB_ShouldSummarizeANFB_ShouldExportANFB_ShouldCollaborateANFB_ShouldNoneIPV6TypeIPV4TypecTableOddRowColor#FFFFFFcTableEvenRowColor#F8F8F8cTableHeaderColor#E4E4FFmyReviewTrackerDebugAlertgetFormsStringCollab undefinedANTrustPropagateAllapptrustedFunctionCBCanDoReviewWorkflowCheckExpr(toSource())CBCanDoWorkflowCheckExprAPRANsumsANsumsCL ANsumorderCBAutoConfigCommentRepositoryCBFNiceTableName CBFNiceDBName CBFDBPerDoc CBannotdataFileAttachmentSoundStampANVerifyCommentsDoIdentityDialogANStartApprovalANSendForApprovalANSendForBrowserReviewANSendForReviewANSendCommentsToAuthorANSendApprovalToAuthorEnabledANProxyAuthenticateResourceANAuthenticateResource TestHSShare ANShareFile2SetHTTPMethods SetRSSMethods InitAnnot IWEmailStepsIWEmailStepDescriptionnamecreatorheading AnnotsString!IDS_SHARED_REVIEW_WIZARD_TITLE_SRtitletextnoStepsIWEmailFormSteps!IDS_SHARED_REVIEW_WIZARD_TITLE_FDIWSteps IWBrowseDocIWDistributionServer,IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_SRIWIdentityDialogIWSharedReviewDocCenterLogin$IDS_SHARED_REVIEW_DOC_CENTER_HEADINGIWSharedReviewDocCenterCreateID$IWSharedReviewDocCenterCreateConfirmIWNewInternalServer1IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADING_SRIWDistributeStepDescriptionIWSaveProfileStepDescription IWFDSteps)IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING,IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADING_FDIWSubmitButton1IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADING_FDShareFileSteps*IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_SFIWBrowseAnyDoc,IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_SFUploadFileSteps*IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UF,IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_UFDocCenterLoginSteps"IDS_SHARED_REVIEW_DOC_CENTER_LOGIN+IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE3IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_CONFIRM_TITLEDocCenterSignupSteps OldSRIWsteps.IDS_SHARED_REVIEW_GETTING_STARTED_STEP_HEADING,IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TITLE viewerTypematch Exchange-Pro/IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TEXT_PRO/IDS_SHARED_REVIEW_GETTING_STARTED_STEP_TEXT_STD+IDS_SHARED_REVIEW_DISTRIBUTION_STEP_HEADING)IDS_SHARED_REVIEW_DISTRIBUTION_STEP_TITLE(IDS_SHARED_REVIEW_DISTRIBUTION_STEP_TEXT"IDS_SHARED_REVIEW_DISTRIBUTION_TIPtip*IDS_SHARED_REVIEW_SEND_INVITE_STEP_HEADING(IDS_SHARED_REVIEW_SEND_INVITE_STEP_TITLE'IDS_SHARED_REVIEW_SEND_INVITE_STEP_TEXT&IDS_SHARED_REVIEW_SEND_INVITE_STEP_TIP+IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_TITLE-IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_HEADING*IDS_SHARED_REVIEW_PREVIEW_INVITE_STEP_TEXTAlertWithHelpWidthplatformWIN wizardWidth wizardHeightbuttonRowMarginHeightbuttonRowMarginWidthwizardMarginWidth marginWidth marginHeight tipIconWidth tipIconHeight navIconWidth navIconHeightCBCreateInviteStepDescription%CBCreateInviteStepDescriptionApproval%CBCreateSendInvitationStepDescriptionIWBrowseDocStepCommitWorkfilesAtDocCenter longFileNametrustPropagatorFunctionIWShowSharepointWorkspace deadlineDate'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINEinternalDeadlineDateobjectDeadlineDateDate%CBCreateGettingStartedStepDescriptionCBSharedReviewInviteReviewers%IWSharedReviewDocCenterServicesDialog-IWSharedReviewDocCenterEligibilityErrorDialog'CBSharedReviewDistributeStepDescription CBSharedReviewCompleteAutomationshowChooseSubsiteconnectSubsitecreateDocumentLibrary createLibraryCBSharedReviewCompleteCBFormDistributionEmailCompleteCBFormDistributionComplete)CBSharedReviewSelectServerTypeDescription,CBSharedReviewConfigureServerStepDescriptiongetFolderNameRemovedPathCBSharedReviewStatusDialogANIdentityDialogCBSharedReviewSecurityDialogCBSharedReviewIfOfflineDialogCBSharedReviewCloseDialogCBCreateUploadStepDescriptiongetAlwaysUseServerValueSharedReviewDocCenterInitiatorcanInitiateWorkflowisDocCenterWorkflow"IDS_SHARED_REVIEW_CREATE_WORKSPACEcTitleonBeginEnumerationonEndEnumerationonEnumerateFileonEnumerateCollectiononCreateCollection onPutFileonErrorrunTask onSuccess onFailureaTasksdataoTaskSetgetWorkspaceCreatorSharedReviewWebDAVInitiatorgetInitiateNamegetInitiateDefaultNamegetInitiateAddServergetInitiateDescriptiongetWorkflowInitiatorConfiggetWorkflowInitiatorSourceSharedReviewAppleiDiskInitiatorSharedReviewSMBInitiatorSharedReviewSharepointInitiatorrunWorkflowInitiator beginPrivRSSaddUI4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV8urn://ns.adobe.com/Collaboration/SharedReview/SharepointMAC1urn://ns.adobe.com/Collaboration/SharedReview/SMB9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comendPrivANSendForSharedReviewANRunSharedReviewEmailStepANSendForFormDistributionIWShareFileConfirmDialog ANShareFileCBShareFileCompleteANDocCenterLoginANDocCenterSignup CBBBRInit CBBBRInvite InitAnWizardScriptBridgeUtilsxmlString2jsCalljsResult2xmlStringjsCall2xmlString xml2jsArrayxml2jsjs2xml toXMLStringSOAPstripNSDynamicAnnotStoreSOAPMessageStyleJSXMLMessage SOAPVersion1.1 version_1_11.2 version_1_2 StreamDigestMD5SHA1ServiceDiscoverylocalDNSSOAPRequestStyleRawPost addAnnotStoreCONFIG SOAPStringIDS_COLLABSTORE_DYNAMIC˙˙˙˙ ColorConvert5šZ2oColor cColorspaceoOutŇ -[ TWQTx=y=yÎ=yzT>7=D;ä=ä<T?7<T×7<T×7äRWQkT>7=[;ä=ä?; ¸ ä?ä<T?7<T×7<T×7T×7ä:äRWQMT>7=0;ä=äT?7äT?7äT?7äRWQ‘T>7=;ä=ä?; ¸ ä?äT?7T×7ä:ä?; ¸ ä?äT×7T×7ä:ä?; ¸ ä?äT×7T×7ä:äRWQT>7=,;ä=ä>ä>ä>ä?T?7äRWQET>7=5;ä=ä?T?7ä?T×7ä?T×7ä>äRWQVŸ_c€&‘m im qmʘ`˜cË?•ˆ˙Ë•ˆݐůP•Ë+•ˆëË•ˆďăęP•Ë'•ˆçË•ˆđPyˆŒ GRGBCMYKArrayMathmin333333Ó?ázŽGáâ?)\Âő(ź?333333Ó?ázŽGáâ?)\Âő(ź?˙˙˙˙ ColorEqualďštc1c2 nComponentsiD˝|T>7=(; ¸ äTäT>7ä:UQ#; ¸ äTäT>7ä:UQT>7T>7B>WQT>7x=y=y=yz%?WQ×WQ×WQ?WQ(mTV7TV7BV# ?WQQăVV˙˙˙ÔC˜Ë#•ˆ㐐ˆސË•ˆš€Š•eD‘m •m •mʘ€ˆ•P•ˆ–P•ˆ–P•ˆ$(1–ˆ™€˜Ď•ˆš€˜ˆ#̘€š˜€˜ˆΘ€žˆŠ GcolorconvertRGBCMYKť1˙˙˙˙ÁÄš <( cContainerURLcDocURL isSameOrigin URL1Parts URL2Parts lcaseScheme1]/í5 BWQ†; ¸ äTä:WQ; ¸ äTä:WQV5;E>QV5Ů>E)QV5;EQV5Ů>%V5;E>QV5Ů>E)QV5;EQV5Ů>ÔV5 ¸ ä:WQVV5 ¸ ä:HE-QV5 ¸ ä:V5 ¸ ä:HtV=DQV=DQV= HV5 ;HEQV5 ;HDQV5 V5  CWQĆvWQÇV•‘ŘŘ˙Í•˙Í•×˙ €–畐ů•ˆ}€ Ę€{ž€ĽˆŒutilcrackURLcScheme undefinedlengthcHost toLowerCasehttphttpsftpnPort˙˙˙˙eŚ˙˙˙˙AFBuildRegExpsš< arrayretValit8ě9ş;äRWQVTŮ6Q>WQEmVV;äR8QVV7 ¸ äTV7ä=ä:QV# ?WQQăVTŮ˙˙˙˛VÎˆѐˆ$E9S–ˆ™€ˆҐˆᘀÁˆ$̘€ʀÁˆӘ€ƈŒArraylengthRegExpcompilei)S˙˙˙˙ AFExactMatch˘š4 rePatternssStringitó==?ÚVQTŮ E,QT ¸ äTä:EQ;5TC>WQGmTV7 ¸ äTä:EQ;5T V?V# ?WQQăVTŮ˙˙˙°>”ˆő•ˆ’ˆ$G;U–ˆë•ˆž€ŕˆ%̘€☀ŕˆ ÓˆŠ lengthtestRegExp lastMatchJU˙˙˙˙ AFExtractNumsÇš 8stringnumsW?Ać;äRWQT ¸ ä>ä:=DQT ¸ ä>ä:==TUQDmV Ů# ?… 6QQVVŮ?;58Q;5UQă; ¸ äTä:˙˙˙ŤVŮ? V@Îň•ˆ͐(Z•ˆ™€אˆِˆΘ€îˆۘ€óʍ”ˆŠ ArraycharAt.,0lengthRegExp lastMatch rightContextAFDigitsRegExptestWZ˙˙˙˙ AFMakeNumber¸š 5stringtypearrayjoinedA^C÷ T'WQV= TV=@9âäTä:WQVrV ¸ ä=ä:WQT ¸ ä=ä:>=VWQVT ¸ ä=ä:> ×˙?@ˆ ȐÉ•ˆ”É•ˆ’Öm•ŘÖ•ˆ͐ˆŮԐˆŠ numberstring AFExtractNumsjoin.indexOf-.0.-˙˙˙˙AFExtractRegExpbš! rePatternstringretValzC]E;äRWQT ¸ äTä:?V×6QV>;5;58QV?;58QV@˜€ΐŇ•ˆːˆېˆАˆ”ˆŠ ArraytestlengthRegExp leftContext rightContext lastMatch˙˙˙˙AFMakeArrayFromListQšstringtypereSep}E3F!T'WQV=;;äRWQV ¸ ä=ä:QT ¸ äVä:Tˆ ȐÉ•ÎˆՐˆӐˆŒstringRegExpcompile,[ ]?split˙˙˙˙ AFExtractTimeŰšKstringpminfoMFŮH.=WQVQ9âä;äTä:WQVV?7WQV>7UQ9âä;äTä:WQVV>7UQ9âä;äTä:WQVV? 7V8QV9âä;äTä:WQVV? 7V8QV@˜€3ɐ”ˆܐ •ˆɐˆɐˆܐ •ˆɐˆܐ •ˆÉp“ˆ”ˆܐ •ˆÉp“ˆ”ˆŠ AFExtractRegExp AFPMRegExp AFAMRegExpAFTimeLongRegExpAFTimeShortRegExp˙˙˙˙AFGetMonthIndexWšstringmonthreresultőH“JQ;äT=ä=äRWQV ¸ ä;5ä:WQTE QV ?V?7>ŢÝĚȐˆŠ RegExp \[(\d+)\]iexec EScriptStringIDS_MONTH_INFO˙˙˙˙ AFMatchMonthfš- stringitŹJĘK\>WQIm;V7 ¸ äTä:9âä;5ä:V# ?WQQăV;Ů˙˙˙Ź>ˆ$I=Y–ˆŮ•ˆژ€`ˆ-̘€b˜€`ˆՐˆŠ AFMonthsRegExptestAFGetMonthIndexRegExp lastMatchlength Y˙˙˙˙AFGetMonthStringUš indexmonthreresultçK8Mf;ä=T=äRWQV ¸ ä;5ä:WQV V?7;5ŢÝ  –ˆˈ'RegExp(\w+)\[\]exec EScriptStringIDS_MONTH_INFOIDS_INVALID_MONTH˙˙˙˙ AFParseTimešŠ#stringdatepmamnumshourminutessecondsPM€Qp VQVQ9âäTä:WQT ;äRUQVQVQVQT  T; ¸ äTä:EQT;5 @V @VŮ×DQVŮ×@; ¸ äTä:CWQ BWQ; ¸ äTä:CWQ BWQ; äV>7äRWQVV× V× WQ"VV× V× WQV?7WQVŮ×V×7WQ >WQT ¸ äVä:QT ¸ äVä:QT ¸ äVä:QT ¸ ä:V@T ¸ ä:V@T ¸ ä:V@TČÖˆ •ˆΐ̐ˆ  ”ˆé•ˆ’ˆ ’܍(’Ô ʐˆ•Ô ʐˆ•ˆԐ•uʐ •u•ˆɐˍϐˆ•ˆӐˆӐˆӐŇ•ˆ’Ň•ˆ’Ň•ˆ’ˆŒ AFExtractNumsDateAFTimeGarbageRegExptestRegExp lastMatchlength AFPMRegExp AFAMRegExpNumbersetHours setMinutes setSecondsgetHours getMinutes getSeconds˙˙˙˙ AFDateFromYMDyš nYearnMonthnDatedDatešQâRœ;äRWQV ¸ äTäTäTä:QV ¸ ä:T@V ¸ ä:T@V ¸ ä:T@VÎˆېŇ•ˆ’Ň•ˆ’Ň•ˆ’ˆŒ Date setFullYear getFullYeargetMonthgetDate˙˙˙˙AFGetJapaneseYearžš T JYearnYearSçTŞ9âäTä:?WQT>7x;y2;y<;yF;yP;yZziV;?WQUV;?WQAV;?WQ-V; ?WQV; ?WQVŘe€œ‘m •m •m •m •mʘ€ŻˆĘp•P•ˆĘp•P•ˆĘp•P•ˆĘp•P•ˆĘp•P•ˆŒ AFExtractNumsIDS_MEIJI_ABBREVIDS_TAISHO_ABBREVIDS_SHOWA_ABBREVIDS_HEISEI_ABBREVIDS_REIWA_ABBREVIDS_MEIJI_ABBREV_LONGIDS_TAISHO_ABBREV_LONGIDS_SHOWA_ABBREV_LONGIDS_HEISEI_ABBREV_LONGIDS_REIWA_ABBREV_LONG˙˙˙˙AFParseJapaneseEraDateEx řš Đ~cStringcFormatcOrderdDatenYearnMonthnDatenYCountJYearinfoaNums aJapaneseNumsiUţfÄVQVQVQVQTQVQ9âäTä:WQ9âäTä:WQVV>7UQ9âäTä:WQV @T ¸ äT×7ä:WQVŮ×ËVT ¸ ä=ä:7WQ9âäVä:WQ9âäVäVT ¸ ä= ä:7?äVT ¸ ä= ä:7ä:UQV&9 â äV?7äTä:UQ"TT ¸ ä>ä>ä>ä:QT9 â äTä:WQVŮ×yVÜT ¸ ä=ä:T ¸ ä= ä:V>7WQV?7WQV?7WQV>7WQ9âäVä:WQ9âäVäV?äVä:UQV&9 â äV?7äTä:UQ"TT ¸ ä>ä>ä>ä:QTT ¸ ä=ä:T ¸ ä= ä:•T ¸ ä=ä:T ¸ ä= ä:V>7WQV?7WQV?7WQV>7WQ9âäVä:WQ9âäVäV?ä?ä:UQ’T ¸ ä:WQT ¸ ä= ä:T ¸ ä= ä:.9âäVäV?7?äV>7ä:UQ)9âäVäV>7?äV?7ä:UQV&9 â äV?7äTä:UQ"TT ¸ ä>ä>ä>ä:QTVŮ?ěVőT ¸ ä=ä:T ¸ ä= ä:GV>7WQ9âäVä:WQ9âäVäV?ä?ä:UQ9T ¸ ä:WQ9âäVäV?äV>7ä:UQV(9 â äV?7ä;ä:UQ"TT ¸ ä>ä>ä>ä:QTTŮTŮ@=WQ=WQ=WQ>WQŔmT ¸ äVä:x=y(=y/= yD= yYzsV# ?WQQbVT ¸ äVä:WQCVT ¸ äVä:WQ$VT ¸ äVä:WQV# ?WQQăVTŮ˙˙˙7V?WQV?WQV?WQVV?WQV V?WQV×E QV×dD QVX'@9âäVä:WQ9âäVäVäVä:UQV(9 â äV?7ä;ä:UQ"TT ¸ ä>ä>ä>ä:QT@””””””ˆ֐Ö •ˆɐÖˆ •ˆ’ŮË•ˆܐˆ֐ˆ˙ː!•ˆᐠ•ˆՐˆœ€čˆ֐Ë• •é•ˆɐˆΐˆɐˆɐˆ֐ˆŕ!•ˆᐠ•ˆՐˆœ€é€•é•ˆɐˆΐˆɐˆɐˆ֐ˆ㐐ˆҐé)•ˆ鐐ˆ䘀!•ˆᐠ•ˆՐˆœ€#Ę• •éB•ˆɐˆ֐ˆ㐐ˆҐˆ␐#•ˆ㐠•ˆՐˆœ€:Ń•ˆ’ˆɐˆɐˆɐˆ$€Ŕ€´€Î–ˆ™€AŇ`€œ‘m •m •m •mʘ€Cˆ̐P•ˆŐp•P•ˆŐp•P•ˆŐp•P€Aˆ&̘€O˜€AˆӘ€Rˆt•ˆt•ˆt• •ˆt•ˆ •ˆt•Ř•ˆ’ˆ֐ˆސ#•ˆ㐠•ˆՐˆœ€lˆŠ AFParseDateYCount AFExtractTime AFExtractNumssplitlengthindexOfyAFGetJapaneseYear AFDateFromYMDmd AFParseTimesetHours AFMatchMonth getFullYeardatecharAt\ AFDateHorizonCÎ˙˙˙˙ AFParseDateEx Yš  cStringcFormatnYearnMonthnDatenYCountcOrderdDateNumsJYearinfoaNumsiçg˘€rVQVQVQVQVQ;äRWQV ¸ ä× ä>ä>ä:QT  V9âäTä:WQT ¸ ä=ä:×˙|T ¸ äV×7ä:WQVV ¸ ä=ä:7WQ; ¸ äV>7ä: +9 â äTäTäVäVä:WQV9 â äTä:WQ9 â äTä:WQVV>7UQ9 â äTä:W QV @V Ů ×ó?V V ¸ ä=ä:7WQV×E QV×dD QVX'@9âäVä:WQ9âäVäV V ¸ ä=ä:7?äV V ¸ ä=ä:7ä:WQV&9âäV?7äVä:WQ"VV ¸ ä>ä>ä>ä:QV9âäTä:WQV Ů ×ÍVV ¸ ä=ä:V ¸ ä=ä:?V >7WQV ?7WQ?V ?7WQV >7WQV×E QV×dD QVX'@9âäVä:WQ9âäVäV?äVä:WQV&9âäV?7äVä:WQ"VV ¸ ä>ä>ä>ä:QVV ¸ ä=ä:V ¸ ä=ä:żV ¸ ä=ä:V ¸ ä=ä:?V >7WQV ?7WQ?V ?7WQV >7WQV×E QV×dD QVX'@9âäVä:WQ9âäVäV?ä?ä:WQ’V ¸ ä:WQV ¸ ä=ä:V ¸ ä=ä:.9âäVäV ?7?äV >7ä:WQ)9âäVäV >7?äV ?7ä:WQV&9âäV?7äVä:WQ"VV ¸ ä>ä>ä>ä:QVV Ů ?VV ¸ ä=ä:V ¸ ä=ä:o?V >7WQV×E QV×dD QVX'@9âäVä:WQ9âäVäV?ä?ä:WQ9V ¸ ä:WQ9âäVäV?äV >7ä:WQV(9âäV?7ä;ä:WQ"VV ¸ ä>ä>ä>ä:QVTŮ TŮ @=WQ=WQ=WQ>W QŔmT ¸ äV ä:x=y(=y/=yD=yYzsV # ?W QQbVT ¸ äV ä:WQCVT ¸ äV ä:WQ$VT ¸ äV ä:WQV # ?W QQăV TŮ ˙˙˙7V?WQV?WQV?WQVV?WQV V?WQV×E QV×dD QVX'@9âäVä:WQ9âäVäVäVä:WQV(9âäV?7ä;ä:WQ"VV ¸ ä>ä>ä>ä:QV@˜€{”””””Îˆ֐ˆ •ˆ”ˆ֘€Ž×•ŮÜˆ×•ˆ␈œ€ˆ֐Ö •ˆɐÖˆ •ˆ’Ë•ˆސؐ•ˆ’ˆ֐ˆ˙ː!•ˆᐠ•ˆՐˆœ€ťˆ֐Ë• •é•ˆːˆΐˆːˆɐŘ•ˆ’ˆ֐ˆŕ!•ˆᐠ•ˆՐˆœ€Ř逺•é•ˆːˆΐˆːˆɐŘ•ˆ’ˆ֐ˆ㐐ˆҐé)•ˆ鐐ˆ䘀ó!•ˆᐠ•ˆՐˆœ€űĘ• •éj•ˆːؐ•ˆ’ˆ֐ˆ㐐ˆҐˆ␐#•ˆ㐠•ˆՐˆœ€Ń•ˆ’ˆɐˆɐˆɐˆ$€Ŕ€´€Î–ˆ™€Ň`€œ‘m •m •m •mʘ€ˆ̐P•ˆŐp•P•ˆŐp•P•ˆŐp•P€ˆ&̘€*˜€ˆӘ€-ˆt•ˆt•ˆt• •ˆt•ˆ •ˆt•Ř•ˆ’ˆ֐ˆސ#•ˆ㐠•ˆՐˆœ€GˆŠ DatesetHoursAFParseDateOrderindexOfjsplityAFDigitsRegExptestAFParseJapaneseEraDateExAFParseDateYCount AFExtractTime AFExtractNumslength AFDateHorizon AFDateFromYMDmd AFParseTime AFMatchMonth getFullYeardatecharAt\¤Î˙˙˙˙ AFDateHorizonMšnYearź€éJT×dE QT×2TXlUQ&T>E QT×2TXĐUQTŇ•ˆvʐŃ•ˆv•ˆŒ ˙˙˙˙ AFParseDateB š ƤŘstring longEntry shortEntrywordMonthEntrymonthYearEntrynumsyearmonthdateinfo arguments‚‘ˆV Š ˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙Qˆ ˙˙˙˙Qˆ ˙˙˙˙Q9âäˆ˙˙˙˙ä:Š ˙˙˙˙Qˆ˙˙˙˙ ;äRˆ ˙˙˙˙ˆ ˙˙˙˙>7Š˙˙˙˙Q;äRŠ ˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Qˆ˙˙˙˙ @ˆ˙˙˙˙Ů×6?ˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä>ä:ä{wg7Š˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Q9âäˆ˙˙˙˙äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä?ä:ä{wi7?äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä×ä:ä{wi7ä:Š ˙˙˙˙Qˆ ˙˙˙˙39âäˆ ˙˙˙˙?7äˆ ˙˙˙˙ä:Š ˙˙˙˙Qˆ ˙˙˙˙9 â äˆ˙˙˙˙ä:Š ˙˙˙˙Qˆ˙˙˙˙Ů×Áˆ ˙˙˙˙ ?ˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä>ä:ä{ws7Š˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Q9âäˆ˙˙˙˙äˆ ˙˙˙˙?äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä?ä:ä{wu7ä:Š ˙˙˙˙Qˆ ˙˙˙˙39âäˆ ˙˙˙˙?7äˆ ˙˙˙˙ä:Š ˙˙˙˙Qˆ ˙˙˙˙ˆ˙˙˙˙Ă?ˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä>ä:ä{w|7Š˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Q9âäˆ˙˙˙˙äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä?ä:ä{w~7?ä?ä:Š ˙˙˙˙Qš9âäˆ ˙˙˙˙ ¸ ä:äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä>ä:ä{w‚7?äˆ˙˙˙˙9âäˆ˙˙˙˙ ¸ ä?ä:ä{wƒ7ä:Š ˙˙˙˙Qˆ ˙˙˙˙39âäˆ ˙˙˙˙?7äˆ ˙˙˙˙ä:Š ˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙EQˆ˙˙˙˙Ů? ˆ˙˙˙˙s?ˆ˙˙˙˙>7Š˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Q9âäˆ˙˙˙˙äˆ ˙˙˙˙?ä?ä:Š ˙˙˙˙QJ9âäˆ ˙˙˙˙ ¸ ä:äˆ ˙˙˙˙?äˆ˙˙˙˙>7ä:Š ˙˙˙˙Qˆ ˙˙˙˙39âäˆ ˙˙˙˙?7äˆ ˙˙˙˙ä:Š ˙˙˙˙Qˆ ˙˙˙˙@ÂėĘÔĘâˆĘ ːÉ•ˆՐˆԐˆ␈ʍ’Ń•ˆţˆ␈˙˙͐É•ˆʐˆâŃ•É•ˆţˆ␈˙âÉ•ˆʐÉ€ž•ˆţˆ␈˙ߐˆŕő˙‘É•ˆʐß•Én•ˆאˆ␈őˆ˙–É•ˆʐˆŠ AFExtractTimeDate AFExtractNumslengthevalcharAt AFDateHorizon AFDateFromYMD AFParseTime AFMatchMonth getFullYear˙˙˙˙AFParseDateWithPDF~švaluepdf cOldFormats°ˆ÷‰š;ä=ä=ä=ä=ä=ä=ä=ä=ä= ä= ä= ä= ä= ä=äRWQ9âäTäVT7ä:—ęŢÓˆۈ.Arraym/dm/d/yymm/dd/yymm/yyd-mmmd-mmm-yy dd-mmm-yyyy-mm-ddmmm-yymmmm-yy mmm d, yyyy mmmm d, yyyym/d/yy h:MM tt m/d/yy HH:MM AFParseDateEx˙˙˙˙ AFMergeChangeΚ+eventprefixpostfixvalueŠĹ‹¤ VQVQT5WQT5T5T5>'V ¸ ä>äT5ä:WQ=WQT5>EQT5VŮ.V ¸ äT5äVŮä:WQ=WQVT5VČĚČɐĘ"•ˆ␈ɐá)•ˆ鐈ɐˆш'value willCommitselStart substringselEndlengthchange˙˙˙˙AFRange_ValidateGš ? bGreaterThan nGreaterThan bLessThan nLessThancErrorâ‹ëŽł=WQ;5=TE QTX;5TDQ;5T,; ¸ ä;5äTäTä:WQ†T@;5T(; ¸ ä;5äTä:WQCT;;5T(; ¸ ä;5äTä:WQV=8;5 ; ¸ äVä>ä:Q;B6 QÉĐ•ˆ’ĚS•â•ˆě;•Î•ˆč •Î•ˆ㐐É•ˆË•ˆאˆ̈eventvalueutilprintf EScriptString IDS_GT_AND_LTIDS_GREATER_THAN IDS_LESS_THAN silenceErrorsappalertrc˙˙˙˙ AFSimpleInitš cFunctionŁÍTx=y z ?>c‘mʐˆ’P•ˆŠ PRD˙˙˙˙AFSimple˝šS cFunctionnValue1nValue2nValue¸ń‘Ů?TWQ?TUQ?TUQTx=y2=y(=y.=y4=yKzgTTWQWTTWQG; ¸ äTäTä:WQ&; ¸ äTäTä:WQVÉˆɐˆɐc€š‘m •m •m •m •mʘ€㐐ˆːP•ˆːP•ˆܐP•ˆܐP•ˆŒAVGSUMPRDMINMAXMathminmax˙˙˙˙AFSimple_Calculate¨š‰ cFunctioncFieldsnFieldsnValueaFieldsifajnTemp’—ő>WQ9âäTä:WQ9âäTä:WQ>WQémA ¸ äVV7ä:WQV ¸ ä:WQ>WQ•m9âäVV75ä:WQV>E)QV>EQT=DQT= VWQ9âäTäVäVä:WQV# ?WQQV# ?WQQăVVŮ ˙˙˙bV# ?WQQăVVŮ ˙˙˙T= E QV>VVWQT= DQT= DQT= V ¸ ä×ä:?WQ;V6Q•Ö˜€ý֐ˆ$€é€Ý€÷–ˆ™€˙ŘŇˆ$€•€‰€Ł–ˆ™€ßî•ˆ—ˆސˆ̘€ˆ ̘€ ˜€ˆӘ€˙ˆ%̘€ ˜€˙ˆӘ€ Ô•ˆv€ç•ˆאˆΈ AFSimpleInitAFMakeArrayFromListgetFieldgetArray AFMakeNumbervalueMINMAXAFSimplelengthAVGSUMPRDtoFixedevent;÷pŁ˙˙˙˙AFNumber_KeystrokeÁšm,nDecsepStylenegStyle currStyle strCurrencybCurrencyPrependvaluecommitnoCommitcAlert —I› 9âä;ä:WQVQVQV T?;WQ;WQ;WQ;WQ9âä;5 VVäVä:  ;5EQ;5 a; 5 WQ;5 @(V= ;5 5 =WQ; ¸ äVä:Q; ¸ ä>ä:Q;B6Q;5E QT?n;5oQn;äRoQ; ¸ ä=ä:Qn; ¸ ä;ä=ä:oQ;;?6QŘČˆ ’•ˆɐˆΐˆɐˆɐˆŐŮ•ĐˆË\•ÎĚ•ˆŢp•ˆڐˆӐˆ̐Ő•ˆՐˆՐˆאˆ琈҈ AFMergeChangeeventAFNumberCommaSepCommitRegExpAFNumberCommaSepEntryRegExpAFNumberDotSepCommitRegExpAFNumberDotSepEntryRegExp AFExactMatch willCommit silenceErrors EScriptStringIDS_INVALID_VALUEtarget [ name ]appalertbeeprcstrvalvaluecommasRegExpcompile,replace.˙˙˙˙AFPercent_Keystroke$šnDecsepStylei›ś›F9âäTäTä>ä>ä=äCä:Qˆăˆ3AFNumber_Keystroke˙˙˙˙isNumberšch˛ř›KT=EQT=ˆو 09˙˙˙˙ isAlphabetic8š chœkœPT=EQT=DQT=EQT=ˆސو(azAZ˙˙˙˙isAlphaNumeric,šch†œ˝œV9âäTä:DQ9âäTä:ˆëˆ*isNumber isAlphabetic˙˙˙˙isReservedMaskChar8šchܜ#[T=D-QT=DQT=DQT=ˆ÷ˆ:9XAO˙˙˙˙ maskSatisfieduš<vCharmChar=‘ž`Tx=y(=y1=y:=yCz@9âäTä:9âäTä:9âäTä:CTTcq‘m •m •m •mʘ€dˆ Ӑˆ Ӑˆ Ӑˆ ’ˆ Ȑˆ9AOXisNumber isAlphabeticisAlphaNumeric˙˙˙˙indexOfNextEssentialZš1mask startIndexi˛žGŸuTWQWQ>WQ>WQ;5WQâmT ¸ äVä:WQV ¸ äVä:WQ9âäVäVä: 9âäTäVä:WQ;5;5ŮVW QVTŮErQ9âäVä: EYQV×˙EMQ9âäVäT ¸ äVä:ä:E"QVVVEQVVV T ¸ äVäVä:W Q;;5 ¸ ä>äVVVä:V ;5 ¸ äVVVä:6QVV ŮWQVWQ8;5 ; ¸ äVä:Q;B6 QV# ?WQQV# ?WQQăVVŮ˙˙ţŘˆʈ É•ˆ’ŢĘ•Ţ8•ˆË•ˆՐˆ̐ˆ—ˆöˆš€˜•••Î(€𕐈™€ŸÖÖˆ וÚâŇˆ%ِ÷Ü€Š•Úˆ˙ՐˆАˆ̐ˆË•ˆՐˆ̐ˆš€žˆ̐ˆ̘€žˆ Ә€żˆ AFMergeChangeeventlength EScriptStringIDS_INVALID_VALUE = "" willCommitindexOfNextEssential silenceErrorsappalertrcvalue substringselStartcharAt maskSatisfiedchangeisReservedMaskCharđ˙˙˙˙AFSpecial_Keystrokevšl!psfvaluecommitnoCommitcAlertťŚ,ŤĹ 9âä;ä:WQVQVQV TFy4Kb;WQ;WQJ;WQ;WQ3;WQ;WQ;WQ; WQ9 â ä;5  VVäVä:  ;5 EQ;5 a; 5WQ;5@(V=;55=WQ; ¸ äVä:Q; ¸ ä>ä:Q;B6Q˜€ÔؐȐˆ ’[yݐˆɐˆɐP•ˆɐˆɐP•ˆɐˆɐP•ˆɐˆɐP•ˆŐŮ•ĐˆË\•ÎĚ•ˆŢp•ˆڐˆӐˆ̈ AFMergeChangeeventAFZipCommitRegExpAFZipEntryRegExpAFZip4CommitRegExpAFZip4EntryRegExpAFPhoneCommitRegExpAFPhoneEntryRegExpAFSSNCommitRegExpAFSSNEntryRegExp AFExactMatch willCommit silenceErrors EScriptStringIDS_INVALID_VALUEtarget [ name ]appalertbeeprc˙˙˙˙AFDate_KeystrokeExöš2cFormatcAlertcAlert2KŤĄ­ů;5E.Q9âä9âä;ä:äTä: ˝;5EQ;5 ~;5WQ;5WQ;5@(V= ;55 = WQVVTWQ; ¸ äVä:Q; ¸ ä>ä:Q;B6QĐˆč•ĐˆËy•ÎÎĚ•ˆŢp•ˆĘp•ˆڐˆӐˆ̈event willCommit AFParseDateEx AFMergeChange silenceErrors EScriptStringIDS_INVALID_DATEIDS_INVALID_DATE2target[ name ]appalertbeeprc˙˙˙˙AFDate_Keystrokezšpdf cOldFormatsž­ďŽ ;ä=ä=ä=ä=ä=ä=ä=ä=ä= ä= ä= ä= ä= ä=äRWQ9âäVT7ä:Q—ęŢÓˆ׈%Arraym/dm/d/yymm/dd/yymm/yyd-mmmd-mmm-yy dd-mmm-yyyy-mm-ddmmm-yymmmm-yy mmm d, yyyy mmmm d, yyyym/d/yy h:MM tt m/d/yy HH:MMAFDate_KeystrokeEx˙˙˙˙AFTime_KeystrokeÍš-ptfcAlert Żą;5E"Q9âä;5ä@ä:  ;5EQ;5 a;5WQ;5@(V=;55 = WQ; ¸ äVä:Q; ¸ ä>ä:Q;B6QĐˆÜ•ĐˆË\•ÎĚ•ˆŢp•ˆڐˆӐˆ̈event willCommit AFParseTimevalue silenceErrors EScriptStringIDS_INVALID_VALUEtarget [ name ]appalertbeeprc˙˙˙˙AFNumber_FormatůšlnDecsepStylenegStyle currStyle strCurrencybCurrencyPrependvaluesignf formatStrą ś) 9âä;5ä:WQV> ×˙?WQ;5WQ=WQV@;=6QT?D QT×:V>V;56QV;56Q; ä; ¸ ä= T= T=äVä:äRWQT>D QTEQV ¸ ä>ä?ä:=V ¸ ä?ä:WQV>EQTE QT>=WQT×D QT×E QV>V=WQTVTWQVVWQT VTWQT×D QT×E QV>V=WQ;V6QÝѐΐɐ •ˆАˆ’Ń••ˆؐˆӐˆýě•ˆԐŮ•ˆɐÝ•ˆ͐ •ˆːˆːˆ •ˆːÝ•ˆ͐ˆΈ AFMakeNumbereventvaluetarget textColorcolorblackredStringutilprintf%,.f substring-()˙˙˙˙AFPercent_FormatŤš ( nDecsepStylebPercentPrependvalue formatStr*śÖˇX9âä;5ä:×dWQ=T=T=WQV@;=6Q; ¸ äVäVä:WQT;= V6Q;V= 6QŕÝ •ˆАˆ’ˆܐ•ˆِˆԈ AFMakeNumbereventvalue%,.futilprintf%˙˙˙˙AFSpecial_FormatŃš 8 psfvalue formatStr NumbersStróˇcťm ;5WQV TF‘+9ƒ=WQk=WQ]; ¸ ä=äVä:WQVŮ× =WQ= WQ= WQ;; ¸ äVäVä:6QÎˆ ’[€‘ݐÉP•ÉP•ŢË•ÎÉP•ÉP•ˆăˆ,eventvalue99999 99999-9999utilprintx 9999999999length(999) 999-9999999-9999 999-99-9999˙˙˙˙AFParseDateYCountšKcFormatyCountiť™źŠ>WQ>WQ]mT ¸ äVä:x=y=yz$V# ?WQQV?WQV# ?WQQăVTŮ˙˙˙šV•ˆ$]Qk–ˆ™€ŽŇ`9‘m •mʘ€ˆ̐P•ˆt•P€Žˆ%̘€–˜€ŽˆӘ€˜ˆŒcharAt\ylengthk˙˙˙˙AFParseDateOrderßš ¤cFormatcOrdersplitiśźőż›=WQ=WQ>WQ*mT ¸ äVä:x=y2=y9=y]=y=ywz V# ?WQQÂV ¸ ä=ä:×˙V=WQ”V ¸ ä=ä:×˙V=WQfV ¸ ä=ä:×˙V=WQ8T ¸ äVä:=T ¸ äVä:WQV# ?WQQăVTŮ ˙˙ţÍV ¸ ä=ä:×˙V=WQV ¸ ä=ä:×˙V=WQV ¸ ä=ä:×˙V=WQVVWQVÉÉˆ$€*€€8–ˆ™€ Ň`€‘m •m €Šm €­m •mʘ€˘ˆ̐P•×•ˆČp•P•×•ˆČp•P•×•ˆČp•P•Ř•ˆ֘€ ˆ%̘€ś˜€ ˆӘ€ş×•ˆČp•×•ˆČp•×•ˆČp•ˆv•ˆŒcharAt\mdjyindexOflength8˙˙˙˙AFParseGMTDateStringxš) cGMTDateString timeStampdate÷ÁaĆĘT @T ¸ ä=ä:×˙@; ¸ äTä:WQ9âäVä:B ;äVäRWQV@ˆ •ˆš€Ôוˆš€ÚؐԕҐˆɐˆŠ indexOfGMT+DateparseisNaN˙˙˙˙AFDate_FormatExßš 8cFormatgmtDatedateĆÍĎć;5 ;5 ¸ ä=ä:×˙O9âä;5ä:WQV*;; ¸ äTäVä:6Q9âä;5äTä:WQV ;=6Q;; ¸ äTäVä:6QˆË•ˆ’Ţ€÷ݘ€ü •ˆ 㐈 š€ᐈ •ˆАˆ’ˆăˆ)eventvalueindexOfGMT+AFParseGMTDateStringutilprintd AFParseDateEx˙˙˙˙ AFDate_Formatzšpdf cOldFormatsçĎŃ ;ä=ä=ä=ä=ä=ä=ä=ä=ä= ä= ä= ä= ä= ä=äRWQ9âäVT7ä:Q—ęŢÓˆ׈"Arraym/dm/d/yymm/dd/yymm/yyd-mmmd-mmm-yy dd-mmm-yyyy-mm-ddmmm-yymmmm-yy mmm d, yyyy mmmm d, yyyym/d/yy h:MM tt m/d/yy HH:MMAFDate_FormatEx˙˙˙˙ AFTime_Formatšš &ptfdatecFormats,ŃaÔ;5 9âä;5ä@ä:WQV ;=6Q;ä=ä=ä=ä=äRWQ;; ¸ äVT7äVä:6Q˜€ ˆË’ßˆ •ˆАˆ’—ߐˆçˆ/eventvalue AFParseTimeArrayHH:MMh:MM ttHH:MM:ss h:MM:ss ttutilprintd˙˙˙˙AFTime_FormatExpš cFormatdate}ÔqŐ.;5 9âä;5ä@ä:WQV ;=6Q;; ¸ äTäVä:6QˆË’ßˆ •ˆАˆ’ˆăˆ)eventvalue AFParseTimeutilprintd˙˙˙˙AFSignatureLockMš —doc cOperationcFieldsbLockaFieldsifajŐŮ; 9âäTä:WQT=`>WQCmT ¸ äT ¸ äVä:ä:WQVT6QV# ?WQQăVT5˙˙˙´T= T UQT=DQT=E QT •>WQxmT ¸ äVV7ä:WQV ¸ ä:WQ>WQ"mVV7T6QV# ?WQQăVVŮ˙˙˙ŐV# ?WQQăVVŮ˙˙˙˜€@֐É•ˆ$C7Q–ˆ™€Dĺˆ̘€Dˆ%̘€G˜€DˆӘ€KÉ•ˆˆȐŢˆ9 •ˆ$xl€†–ˆ™€PÚŇˆ$"0–ˆ™€TˆИ€Tˆ!̘€U˜€TˆӘ€Pˆ&̘€U˜€PˆӘ€UˆAFMakeArrayFromListTHESEgetFieldgetNthFieldNamereadonly numFieldsEXCEPTgetArraylengthƆý0.Q˙˙˙˙AFSignature_Format2š cOperationcFieldsbLock1Ů|Ú[;5=WQ9âäAäTäTäVä:Q˜€`Ԑˆ݈2eventvalueAFSignatureLock˙˙˙˙AFStringReplacešcStringoRegExp cReplacement–ÚíÚdT ¸ äTäTä:ˆ׈.replace˙˙˙˙LookUpWordEnable,š countrybEnablebŰŔÜkBWQTx=y zCWQ V˜€r•c‘mʐˆ•P•P•ˆŒENU˙˙˙˙LookUpWordDefinitionURLŘš[ cWordcountrywordStrurlćÜ^߂VQ=WQTx=y zł=WQ=WQn>oQkmT ¸ ä;ä:=V=WQ!VT ¸ ä;ä:WQn;# ?… oQQă;TŮ˙˙˙ŠVVWQ V˜€‰Íc€Ă‘mʐˆɐˆɐˆË kS{–ˆŰ•ˆҐˆܘ€’ˆؘ€–˜€’ˆ ՘€˜ˆːP•P•ˆŒ ENU/http://www.dictionary.com/cgi-bin/dict.pl?term=icharAt +lengthC{˙˙˙˙encryptUsingPolicyForJSObject)š `pDoc cPolicyIdaEmailAddresses oPermissionsbAllowUIresultsallowUIusersigroupˆßäŁ VQCWQT@ TWQT@Ń;äRWQ>WQ,mVVYTV7]\8QV# ?WQQăVTŮ˙˙˙Ë;äRWQVV6QT@VT6QT ¸ äYYT]\]ZV`\]V] \ä:WQ9T ¸ äYYT]\]V] \ä:WQV˜€°”• •ˆŸ€š€Ě•Îˆ$, :–ˆ™€ťˆژ€ťˆ-̘€ź˜€ťˆӐÎˆ̐ •ˆ̐ˆ˙ːˆôˆŒObjectemaillength userEntities permissionsencryptUsingPolicypolicyIdoPolicyoGroupsbUI<:˙˙˙˙LoginForGuardianNš apsHandler­änĺĎ; ¸ ä=äCä:WQV5 &V ¸ äYC]\ä:CÜˆÉ!•ˆᐐˆŠ security getHandler Adobe.APS isLoggedInloginbUI˙˙˙˙RefreshPoliciesForGuardian&špolicies•ĺŞćÚ; ¸ ä:WQV CB˜€ŕԐ•ˆ—ˆŠ securitygetSecurityPolicies˙˙˙˙AFValidateEmailSyntax(š  emailAdress regXEmailĚć čç;ä=äRWQV ¸ äTä:˜€ěԐˆӈ#RegExp‚^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$test˙˙˙˙e˙˙˙˙ÁšstrĂę됈˙˙˙˙ÁJširval2ëÁë; ¸ äY=]T]\ä:WQV==TVíÉ•ˆʐˆŒ app getStringForms cPlugInName cStringIdempty:˙˙˙˙ debugExcept<š eěrě ;5Ĺ=EQ;5; ¸ äTä:Qˆá•ˆՈapp_DEBUG undefinedconsoleprintln˙˙˙˙Ásš opęě–í' ; ¸ ä:QTK>mMWQTV7Ĺ=%TV; ¸ äTV7ä:8QăL˙˙˙ÄN; ¸ ä:QTˆѐ5AːˆÎ•ˆ鐐ˆѐˆŒ app beginPrivfunctiontrustPropagatorFunctionendPrivA˙˙˙˙ ANClipPrec3Šš6ok˛íŚî3T'x=y=yJzgTK)mMWQTV9âäTV7ä:8QăL˙˙˙ŮNT0; ¸ äTXčä:XčTˆ d€…‘m €WQTŮ?WQbm; ¸ äVV×ä:WQT ¸ ä:TV7 ¸ ä:V?WQV?WQăVV˙˙˙šVTŮE'QT ¸ ä:TV7 ¸ ä:%T ¸ äV?ä>äTä:QT ¸ äVä>äTä:QÓ(k•ˆ™€ˆßá•ˆΐˆɘ€‡ˆΘ€ó •ˆŕˆوlengthMathfloortoStringsplicek˙˙˙˙isortŢš OastatusiaNewĹú,ü—VQ;äRWQTF;5 ¸ ä:Q;5TŮ6Q;5T6Q>WQHmT;5V6Q9âäVäTV7ä:QV# ?WQQăVTŮ˙˙˙ŻT;5 ¸ ä:QV”ΐ •ˆ֐ˆؐˆӐˆ$HWQĚmTV7WQV ¸ äVä:QV ¸ äTä:Q9âäTV57äTäT9âäVä: >?äCä:WQ>WQ)mV ¸ äVV7ä:QV# ?WQQăVVŮ˙˙˙ÎV# ?WQQăVTŮ˙˙˙+VÉ • •ˆ՘€Áˆ$€Ě€Ŕ€Ú–ˆ™€ːˆӐˆӐńאˆ$)7–ˆؘ€ˈ#̘€̘€ˈӘ€Áˆ ̘€̘€ÁˆӘ€ψŒsortpush ANsumFlattenname ANstatefullength˙˙˙˙Á)šabpýżý˝T5 ¸ ä:T5 ¸ ä:ˆčˆ; creationDategetTime8Úź7˙˙˙˙ ANsummAnnot Κ 3EyannotscaledocrpseqNumprintWithCustomLayoutassocattribssheelPointAsRectoldColorcontents overlayTextmodelsstatesda}˙ ŇCWQ=WQT?T6QT5ZTZT5>7×4`>`\6QT ¸ äY×2]T5]×]\ä:QT ¸ äY×T]T5 ]T5 = T5  T5 ]\ä:QTEQT5 HT#; ;Á äTäTä:; ;Á äTäTä:WQn>oQ¤m;;7TwT%; ;;7Á äTä: ; ;;7Á äTä:WQV(VV= =VWQn;# ?… oQQă;;Ů˙˙˙OT5WQV ¸ äVä:WQT5 E QT .T ¸ äVäTäT5äVä:QqT5 CT ¸ äVäTäT5äVäBä=TäT5ä:Q%T ¸ äVäTäT5ä:QT5WQTZ=`<`<`<`\6QT ¸ ä<TäBä:QTV6QT5WQVT=6Q= WQT5 =!nT5"EQT5"=M;#5$ ¸% ä=&äT5"ä:WQT ¸ äVäTäT5ä:QT ¸ äVäTäT5ä:QT ¸ ä=äTäT5ä:Q;' ¸( äBä:WQn)>o)QdmT ¸* äV;)75+ä:WQVŮ>T ¸ ä=;#5,äTäT5ä:QT ¸ ä×Tä:Qn>oQœm;- ¸. ä×äV;75/ä:W QV;750WQV;751W QT ¸ äV = V=V äTäT5ä:Qn;# ?… oQQă;VŮ˙˙˙YT ¸2 ä×Tä:Qn);)# ?… o)QQă;)VŮ˙˙ţ‘T ¸2 ä×Tä:Q•ÉˆΐČ•ˆ䐈ń˜€ŕˆö 吐ÉˆÉ•ˆ˙‘ˆË €¤€Œ€ś–ˆĐ• ˙• •ˆ Řp€ćˆ%ؘ€였ćˆט€ď̐ˆ֐ˆψ)•ˆ鐈 É>•ˆţˆŕĚˆňˆېˆ̐Ě•ˆӐˆɐÎ•Ü•čˆŕ˜€ ˆŕˆ␐ÖˆË €d€L€t–ˆ™€ áĘ•ˆ퐐ˆ֐ˆË €œ€„€Ź–ˆ™€ !ćŇŇˆô˜€ ˆ!ؘ€ &˜€ ˆ՘€ )ˆ֘€ ˆ!ؘ€ )˜€ ˆ՘€ -ˆֈsize reviewIconcolumns writeImagenAmountoIconcolumnindentuiIcontypeFreeText fillColor strokeColorcolor inReplyToANsumsCLANSB_SeqANsumsj ANsumorder lengthcontainedPopupHeelPointconcat writeTextpageRGBdivide richContentsstyleDefaultNoteText Redact overlayText AnnotsStringIDS_FLASH_OVERLAY_TEXTreplace {overlayText}CollabgetStateModelsigetStateInModelnameIDS_SUM_STATUS_TITLEutilprintdmodDateNameauthoroutdentCtČŹDśÍĚĚĚĚĚě?ÍĚĚĚĚĚě?ÍĚĚĚĚĚě?ffffffć?˙˙˙˙ ANsummarized š?ž ´doctitleprdestfsprinttwoUp useSeqNumscale noAssocDocfilter paperWidth paperHeightincludeAllPages startPageendPage assocColor assocOpacityprintWithCustomLayoutthermoUpana2n2curAnnottitemjassocDocicontents oldHeading lastAnnotPage curFooterTextseqNum noAnnotPageind footerTextheading %0 T  ?U QCWQ;5 ¸ ä:Q†;5;56Q;T7 ;UQT ;5UQA ¸ ä:QZ\WQT'= D QT> >UQT'= D QT>T5 ?UQTWQămT ¸ äVäTäTäT '= ; T ä:WQ>WQumVV7WQV5 E7QV5 DQV55 EQV5=V ¸ äVä:QV# ?WQQăVEQVVŮ˙˙˙yV# ?WQQăVT˙˙˙VEQVŮ>$;5VŮ×6QY\WQ>WQmVV7WQVV57 #VV5ZV`\8Q!VV57 ¸ äVä:QV# ?WQQ;5V×6QăVVŮ˙˙˙x9âäV5äVä>äBä:WQVŮ?WQ%mVV 7VV×78QV×WQăV×˙˙˙ŘVEQVŮ>?VQ;äZ>`>`T  T Xd`T  T X`\äRUQT  @TW QTT T"Z=`>`>`>`\6QTT T?6QTT ;6QTT6QT=!6 QT<T 6"Q;5#T;5$WQT ¸% äVä:QT ¸& ä<T äBä:QV QVQV QV QV Q=WQ?WQV E QTäT=!6 QT<T 6"QTWQ–mTE QT F; ¸' ä:QT ¸( äV äVä×ä:Q; ¸) ä:Q6T ¸% ä;5*äV äVä:QT ¸+ ä:QV# ?WQQăVV>75,E QVT˙˙˙R>W QŮm;5VŮV 6QVV ?7WQVV 7WQ=WQT=!6 QT×T 6"QV '= EQV5,V A=WWQT ¸- ä:QT ¸+ ä:QV E QTT=!6 QT<T 6"QV ?WQ–mTE QT F; ¸' ä:QT ¸( äV äVä×ä:Q; ¸) ä:Q6T ¸% ä;5*äV äVä:QT ¸+ ä:QV# ?WQQăVV5,E QVT˙˙˙TT=!6 QT×T 6"Q?WQ=.;5/T ¸0 äV5,ä:;51WQVVVWQT ¸- äVä:Q>mT ¸2 ä×T ä:QT ¸2 ä×T ä:QV# ?WQQăV>˙˙˙Ŕ>mT ¸3 ä×T ä:QT ¸3 ä×T ä:QV# ?WQQăV>˙˙˙ŔV5 ; TÁ äVä:WQVV lV '= T ¸% ä=4ä:QT ¸% äVäV äV5,ä:QVW QT ¸& äYB]5\ä:QT596â6äVäT äV äTäTäVäTä:Q.96â6äVäT äV äTäTäBäTä:QV5 V# ?WQQV5,W QV ×W QăV VŮ˙˙üT ¸- ä:QV E QTŮT=!6 QT<T 6"QV5,?WQ†mTE QT E; ¸' ä:QT ¸( äV äVä?ä:Q; ¸) ä:Q'T ¸% ä;5*äV äVä:QV# ?WQQăVV 5 E QVT˙˙˙dV BWQ;5 ¸7 ä:QVEQVŮ>_T'= !T ¸8 äTäTä:Q4TT ¸9 ä:QT ¸: äVä:QEĆvWQ; ¸; äYV5<]=T]>\ä:QÇV;5 ¸7 ä:QVVŮ×>ˆ •ˆ••ˆ֐‘ˆڐˆĘ•ˆɐˆ •ˆΐˆ͐ÉˆŐ•ˆ•ˆŐ•ˆΐˆ&€ă€×€ě–ˆ™€ L×ˆ%Ę ڐˆ $ui€Œ–ˆ™€ PËˆ ψψ╈Ә€ Oˆ+̘€ U˜€ Oˆܘ€ Kˆ(̘€ U˜€ KˆΘ€ YÓ•ˆېĘˆ$]€–ˆ™€ `ËˆÍ•ˆސˆܘ€ _ˆ!☀ f˜€ _ˆӘ€ kˆ㐐ˆÍ %-–ˆÓp›€ nˆ%u€ o˜€ nˆ͘€ rÓ€:•”Ř×ݐҐˆđˆԐˆҐˆ̐ˆΐˆҐˆݐˆӐˆېĚ””ɐ•Ě•ˆΐˆҐˆ &€–€Š€ł–ˆ ™€ ÉˆA•ˆѐˆڐˆ֐ˆ␈Ϙ€ ˆY̘€ ›˜€ ˆ&☀ Ąˆ $€ـπ疐ˆ™€ ˘ˆܐÍËÉˆΐˆϐˆÜ•ˆ̐ˆϐˆϐĚ•ˆΐˆҐˆ Č €–€Š€ą–ˆ ™€ ¸ÉˆA•ˆѐˆڐˆ֐ˆ␈Ϙ€ ˇˆf̘€ ؀ ˇˆ/ŕ˜€ Ljΐˆϐˆ•ˆ÷•ˆ—ˆӐ >2E–ˆ׈֘€ Ո̘€ ֘€ Ո ̐ >2E–ˆ׈֘€ ׈̘€ ؘ€ ׈ ̘€ ۈÉ•×•ˆĘ•ˆՐˆŕˆ—ˆܘ€ č0•ˆ𐐈鐐ˆÉ•ˆ̐ˆ̘€ Ąˆu€ ń˜€ ĄˆӘ€ óˆϐĚ•ˆΐˆҘ€ üˆ Í €†z€Ą–ˆ ™€ ýÉˆ@•ˆѐˆِˆ֐ˆ☀ üˆi̘€ ˜€ üˆ.嘀 ˜€  •ˆ•ˆ֐Ó•ˆĘ•ˆܐ•ˆԐˆÓx•Ęˆí€{– •ˆ֐ˆ׈app thermometerbegintext AnnotsStringIDS_PROGRESS_SUMMARIZEANsums ANSB_Page IDS_UNNAMED syncAnnotScan undefinednumPages getAnnotsANFB_ShouldSummarizehiddenstaterefTypeGrouppushlengthduration inReplyTovalue ANsumFlattenReport assocColorRGB assocOpacityignoreAnnotLayersANFB_ShouldNone joinAssocsstyle NoteTitlesizeIDS_SUM_TITLE1IDS_SUM_TITLE2 writeTextdivide beginPrivcopyContentFromDocendPrivIDS_SUM_NO_COMMENTS breakPagepage setFooterText IDS_SUM_FOOTER1 getPageLabelIDS_SUM_FOOTER2outdentindent bNewPageOk ANsummAnnotendsaveprintopenalertmessagecMsgoDoc˙˙˙˙e*Á Ť Ąqç×EŒEVą´łŇ-Üě"Œ@ @@@@˙˙˙˙ÁÇš$s dialogŒ%2, 9âäY=]Z=`=`\]Y\]Y\]Y=] ZY= ]= ] ZY= ]=] YZ× `Y=]\`\]\]ZY=]=] \`Y=]=]X,]XČ]\`\]\`Y=]\`\]\`\]\]‚]‚]‚]‚]‚]‚]‚] ‚]!‚]"‚ ]#\ä:WQV ¸# ä:QË•ĘÜËË•Ę”•ĘĘ”•ĘĘď”•ĘĎ•ĘĘČŘ˜€ P•ć˜€ Xʘ€ iʘ€ mʘ€ xʘ€ ƒĘ˜€ ‹Ę˜€ šĘ˜€ ŠĘ˜€ ­Ę˜€ ľÓ˜€ ˝ˆψANTrustPropagateAll acrobatRMACRtypelocal.clientservicesdomains'$$$/Dialogs/CommentRepositoryAutoConfignameview align_leftalign_childrencluster4$$$/Dialogs/CommentRepositoryAutoConfig/ClusterTitle zstring_widthsumwidth static_text4$$$/Dialogs/CommentRepositoryAutoConfig/PleaseSelectlist_boxseleitem_idheightelements ok_cancel descriptionupdateServices addServicesremoveServices initializevalidatecommitdestroyresolvedoModal˙˙˙˙Álšdialogseleenabledi_)S*X T ¸ ä:5WQBWQVK#mMWQVV7>CWQ ăL˙˙˙ßNT ¸ äYV]\ä:Q×•5&ːÉ•ˆ•@Θ€ fˆވstoreseleenableok&&˙˙˙˙Á%šs*ą*i A5 ¸ äYA5]\ä:Qˆäˆ*dialogloadservicessele˙˙˙˙Á\šservicesiserviceĚ*Ś+m TK@mMWQTV7WQA5V5×˙8QA5V5V58QăL˙˙˙ÂNA ¸ ä:Q5CːËˆҐˆᐐˆ͈servicesnamedomainsdomainupdateServices C˙˙˙˙ÁRšservicesiserviceÄ+–,x TK6mMWQTV7WQA5V5&QA5V5&QăL˙˙˙ĚNA ¸ ä:Q59ːËˆАˆِˆ͈servicesnamedomainsupdateServices 9˙˙˙˙Ásš dialog°,v-ƒ AT6Q; ¸ ä:QA; ¸ äA5äAäA5ä:6Q; ¸ ä:QA5 ¸ äYB] \ä:Qˆʐˆѐˆ琈ѐˆ߈"dialogapp beginPrivdiscorSOAP queryServicestypeclientendPrivenableok˙˙˙˙Áš% dialogsele entryCountiŽ-Ň.‹ T ¸ ä:5WQ>WQVK)mMWQV# ?WQQVV7> C˜N™ăL˙˙˙ŮNV C; ¸ äY;5]×]\ä:א×•5,ːˆ̐É•ˆzːˆ •ˆ’ˆńˆWstoreseleappalert AnnotsString IDS_CONFIRM_NO_REPOSITORY_CHOICEcMsgnType&,˙˙˙˙Á•š dialogseleič.0š T ¸ ä:5WQVKomMWQVV7>[; ¸ ä:QA; ¸ äA5äA5V7äVäAä:6Q; ¸ ä:Q ăL˙˙˙“N×5rːÉ•ˆѐˆѐ@Έ storeseleapp beginPrivresolverSOAPresolveServicetypedomainsendPriv!r˙˙˙˙Ášdialog0G0Š A5 ¸ ä:Qˆ҈discorstop˙˙˙˙Ákš nameservice^0%1­ ; ¸ ä:Q; ¸ äT5äT5ä:Q;T56Q; ¸ ä:QA5 ¸ ä:Qˆѐˆ㐈Ӑˆѐˆ҈app beginPrivCollabsetStoreSettingstypesettings defaultStoreendPrivresolverstop˙˙˙˙ÁTš <1ŕ1ľ ; ¸ ä:QA; ¸ äA5ä:6Q; ¸ äAä:Q; ¸ ä:QˆѐˆސˆӐˆшapp beginPrivresolvetrustedFunction execDialogendPriv˙˙˙˙CBgetTableDesc š>docauthorfragDBName tableName™2ě4Ć ; ¸ äT5ä:WQVQVQT5;VWQTWQ=WQVWQT5;; ¸ äVä:WQT5;; ¸ äVä:WQYVT5 V T5 ] V] T5]T] T5] \Ý””Î•ˆ—ˆ̐ˆɐˆ—Î•ˆؐΕˆؐˆČăČÍČĎˆCollabURL2PathFragmentURL collabDBFlags CBFDBPerDocCBFNiceTableName hashString CBFNiceDBName collabDBRootDBName tableNameuserflags˙˙˙˙CBgetTableConnect¤š % desceconnstmt 546â VQ†; ¸ äT5ä:WQV ¸ ä:WQYV]V]T5]T5]T5]\1ĆvWQ9 â äVä:QB˜Ç™Ç”‘ÝŇˆ͐Ȑ͐͐Ďx•Ęˆӈz„{ŽADBC newConnectionDBName newStatementconnstmt tableNameuserflags debugExcept˙˙˙˙er˙˙˙˙ CBgetInfoŁš " connnameeK6m7ô VQ†T5 ¸ ä=T5=ä=T=ä:QT5 ¸ ä:QT5 ¸ ä=ä:5 1ĆvWQ9 â äVä:QB˜Ç™Ç”‘ˆĺÔˆԐˆßx•Ęˆӈz„{Žstmtexecuteselect CONTENTS from " tableName" where AUTHOR like ?;~nextRow getColumnCONTENTSvalue debugExcept˙˙˙˙eq˙˙˙˙ CBsetInfotšconnnamevaluee„7ˆ8 VQ†T5 ¸ ä=T5=ä=T=äTä:1ĆvWQ9âäVä:QB˜Ç™Ç”‰ ĺĐČx•Ęˆӈz„{Žstmtexecute insert into " tableName#" (AUTHOR, CONTENTS) values (?, ?);~ debugExcept˙˙˙˙eB˙˙˙˙ CBcreateTableŤšWdesceconnstmtsql1sql2Ł8€< VQ†; ¸ äT5ä:WQVV ¸ ä:@WQ=T5=WQ=T5=WQYV]V] T5]T5 ] T5 ] \WQ†V ¸ äVä:Q+ĆvWQ9 â äVä:QdžV ¸ äVä:Q+ĆvWQ9 â äVä:QÇ9âäVä=äT5ä:Q9âäVä=äT5 ä:QV1ĆvWQ9 â äVä:QB˜Ç™Ç”‘ÝݐŘŘÍČÍÍŇ‘ˆÓx•ĘˆӀ{–‘ˆÓx•ĘˆӀ{–ˆ␈␈|•Ęˆӈz„{ŽADBC newConnectionDBName newStatementcreate table " tableNameR" (AUTHOR varchar(64), PAGE integer, NAME varchar(64), CONTENTS text, DATA image);Q" (AUTHOR varchar(64), PAGE integer, NAME varchar(64), CONTENTS clob, DATA blob);connstmtuserflagsexecute debugExcept CBsetInfoURLcreator˙˙˙˙e˙˙˙˙e˙˙˙˙eyó´˙˙˙˙ CBconnectcš"desc bDoNotCreateconne—<Ë=3 9âäTä:WQVQ9âäVä=ä: +T  9âäTä:WQBVÖ”ˆŮ•ˆ•ˆېˆš€ BˆŒ CBgetTableConnect CBgetInfoURL CBcreateTable˙˙˙˙Ášp5>N>H =ˆ ŽFSCosObj˙˙˙˙Ášpd>|>I =ˆŽSCosObj˙˙˙˙Á+š p’>Ć>J   ¸ äT5ä:=BˆŮ ш,execAPAPCosObj^\#˙˙˙˙ CBannotDataˆš annotpropstm?@N ;T57WQV@pÔäTä:WQV"; ¸ äTV7ä:@WQVEQ;'=V;56QVŇ •ˆА琐Ɉ Ě•ˆӐˆŒ CBannotdatatypeCollab cosObj2StreamADBC undefinedSQLT_LONGVARBINARY˙˙˙˙CBannotSetData>šannotdatapropb@ď@] ;T57WQV(ÔäTä:WQVTVT8QŇ •ˆА  ˈ CBannotdatatype˙˙˙˙CBDeleteReplyChainĄš> discreplies currentReplylooper saveChildGABCi ; ¸ äTä:WQVEQVŮ?uV>7WQ?WQXm; ¸ äVä:WQV ¸ ä:QVEQVŮ?V>7WQ >WQăV˙˙˙¨ÂŘÓ•É•(]€ vˆ™€ r˜€ vؐˆϐÓ•ˆΐˆ€ qˆ ʘ€ ~ˆ DiscussionsgetDiscussionslengthDeleteC]˙˙˙˙CBGetReplyChainˇš 3dstAnnot discussiondiscListcosdatašCE† ; ¸ äTä:WQ; ¸ ä:WQ>WQ?m?WQV ¸ äV>75ä:Q; ¸ äV>7ä:WQăVEQVŮ>˙˙˙ąV?'9âäTäV ¸ ä:ä:QŘÔ•(T•ˆ™€ Žˆ•ˆڐˆژ€ ˆ ژ€ – •ˆâˆ* DiscussionsgetDiscussionsCollabnewWrStreamToCosObjwriteTextlengthCBannotSetData getCosObj6T˙˙˙˙CBPutReplyChain¤š0 discussionbookmarksrcAnnot cosStreamsŢEEG› 9âäTä:WQVŠV ¸ ä;5ä:WQNm; ¸ äTä=äVäTä:UQ@WQV ¸ ä;5ä:WQăTEQVŮ>˙˙˙˘ÂÖ •Ý(c•ˆ™€ ¤ˆ搐ˆ•ˆݘ€ Łˆ ژ€ Šˆ+ CBannotDatareadCollab wdBlockSize Discussions addDiscussionDatalength@c˙˙˙˙ADBCAnnotEnumerator8 šČparentsorted arguments˜GöI°  Š˙˙˙˙QAˆ˙˙˙˙6QAˆ˙˙˙˙6QA‚6QÂėˆАˆАˆ̘€ ƈparentsortednext˙˙˙˙ š0˜e arguments:HňIś  Š˙˙˙˙Qˆ˙˙˙˙Q†A5 wA9âäA55äCä:6QA55 ¸ ä=A555=A5 =  = ä:QA55 ¸ ä:Q9 â äA55 ¸ ä=ä:5ä{w Ă=ĆvŠQ9âäˆä:QB˜Ç™ÇÂėĘ‘ˆ•ˆ㐈ď ڐˆאˆôx•Đˆ وz„{Žconn CBconnectparentdescstmtexecuteselect CONTENTS from " tableName" where AUTHOR not like '~%~'sorted order by PAGE, NAME;;nextRoweval getColumnCONTENTSvalue debugExcept˙˙˙˙e Î˙˙˙˙CBStrToLongColumnThing,šsJkJÉ Y;5]T]TŮ]\ˆëˆAADBCSQLT_LONGVARCHARtypevaluelengthsize˙˙˙˙ADBCAnnotStoreBšdocuser´JQSĐ A9âäTäTä:6QA‚6QA‚6QA‚6Qˆݐˆ̘€ ׈̘€ řˆ̘€ 'ˆdescCBgetTableDesc enumeratecompleteupdate˙˙˙˙šsorted KQKÓ ;äAäTäRˆш-ADBCAnnotEnumerator˙˙˙˙yšj% toCompleteiconnecosnKCN× VQ9âäA5äCä:WQVR>WQ'm;TV757VQ†V5 ¸ ä=A55=äTV75 äTV75 ä:QV5 ¸ ä:Q; ¸ ä:WQV5 ¸ ä=ä;5;5äVä:Q9âäTV7äV ¸ ä:ä:Q1ĆvWQ9âäVä:QB˜Ç™ÇV# ?WQQăTEQVTŮ˙˙ţÇBC”ې€M•ˆ$€'€€>–ˆ™€ ߐŇ•”‘ˆčŢˆԐԐˆôˆćx•ĘˆӐˆz„{ž€ ވ4̘€ ň˜€ ވᘀ őˆ ’ˆŠ CBconnectdesc CBannotdatatypestmtexecuteselect DATA from " tableName!" where PAGE = ? and NAME like ?;pagenamenextRowCollabnewWrStreamToCosObj getColumnDATAADBCBinaryStreamCBannotSetData getCosObj debugExceptlength˙˙˙˙e1>NÍ˙˙˙˙ÎšÓ=toDeletetoAddtoUpdateieconn^NMSř VQVQ9âäA5ä:WQV@B>WQŠm†V5 ¸ ä=A55=äTV75äTV75ä:Q1ĆvWQ9 â äVä:QB˜Ç™ÇV# ?WQQăTEQVTŮ ˙˙˙d>WQßm†V5 ¸ ä= A55= äTV75 äTV75äTV75ä9âä9âäTV7ä: ¸ ä:ä:ä9âäTV7ä:ä:Q1ĆvWQ9 â äVä:QB˜Ç™ÇV# ?WQQăTEQVTŮ ˙˙˙>WQŇm†V5 ¸ ä=A55=ä9âä9âäTV7ä: ¸ ä:ä:ä9âäTV7ä:äTV75äTV75ä:Q1ĆvWQ9 â äVä:QB˜Ç™ÇV# ?WQQăTEQVTŮ ˙˙˙C””ِ ’ˆ$€Š~€Ą–ˆ™€ ‘ˆčŢx•ĘˆӐˆz„{ž€ ˙ˆ.̘€ ˜€ ˙ˆ ܘ€ ˆ$€ß€Ó€ö–ˆ™€ ‘ˆč˙ôx•ĘˆӐˆz„{ž€ ˆ(̘€ ˜€ ˆ ܘ€ ˆ$€Ň€Ć€é–ˆ™€ ‘ˆč˙çx•ĘˆӐˆz„{ž€ ˆ-̘€ $˜€ ˆ ܘ€ &ˆŠ CBconnectdescstmtexecute delete from " tableName!" where PAGE = ? and NAME like ?;pagename debugExceptlength insert into ">" (AUTHOR, PAGE, NAME, CONTENTS, DATA) values (?, ?, ?, ?, ?);authorCBStrToLongColumnThing ANClipPrec3toSource CBannotDataupdate "<" set CONTENTS = ?, DATA = ? where PAGE = ? and NAME like ?;˙˙˙˙e˙˙˙˙e˙˙˙˙eâéä“âöä 7Ą9K˙˙˙˙ WDmungeURL šurlĹSíS, T=ˆʈ/ACData˙˙˙˙WDAnnotEnumerator8 šČparentsorted argumentsITÍX3  Š˙˙˙˙QAˆ˙˙˙˙6QAˆ˙˙˙˙6QA‚6QÂėˆАˆАˆ̘€ `ˆparentsortednext˙˙˙˙˙ šf:˜ argumentsŕTÁX9  Š˙˙˙˙Q†;5 ¸ ä:Q;5;56QA5 ‘A; ¸ ä9 â äA5 5 5 ä:ä:6QA5GA9 â äA5ä;5ä:6Q;5A5Ů6QA>6Q*m;5A 5# ?… 6Q6QăA5E1QA5A5ŮEQA5A57=˙˙˙˘;5 ¸ ä:QA5 DQA5A5ŮB9âäA5A 5# ?… 6Q75ä{w WSĆvŠQ9âäˆä:Q;5 ¸ ä:QB˜Ç™ÇÂė‘ˆ֐ˆڐˆ•ˆ÷•ˆ琈ېˆȘ€ N(c•ˆ嘀 Nˆ ţˆ֐ˆß•ˆ’ˆóx•Đˆِˆ֐ˆz„{–ˆapp thermometerbegintext AnnotsStringIDS_PROGRESS_FETCHING discussions DiscussionsgetDiscussions WDmungeURLparentdocURLisortIDS_PROGRESS_SORTINGdurationlengthindexvalue [Discussion]endevalText debugExcept˙˙˙˙e¤Îc˙˙˙˙ANSendForReviewEnabledpš.docresultdYéZh ;5 BBWQ;5=DT@5†T5 WQĆvWQCWQÇ CWQVˆË•ˆ’•Đ•0•‰ ˆ Íxψ…{ːˆ€ yˆŒCollabhasSynchonizerapp viewerTypeReaderexternal˙˙˙˙e7˙˙˙˙ANSendForSharedReviewEnabledšdoc[D[| 9âäTä:ˆӈ#ANSendForReviewEnabled˙˙˙˙ ANSendForFormDistributionEnabledšdocq[Ł[ 9âäTä:ˆӈ#ANSendForReviewEnabled˙˙˙˙ANSendCommentsToAuthorEnabled˜š doc reviewing\ť]‰ T'=B; ¸ äTä:WQVEjQT ¸ ä;5ä;5ä:;5E5QT ¸ ä;5ä;5ä:;5ˆĘ’Řˆ˙Ŕ undefinedCollab isEmailReviewrequestPermission permissionannot canExportgrantedmodify˙˙˙˙Áxš docstrresultî]_’ T55?EQT55?Q>WQ; ¸ ä:Q; ¸ äTä×ä×ä:WQ; ¸ ä:QV×Cä••ˆѐˆސˆѐˆ—ˆŠ CollabaddedAnnotCountmodifiedAnnotCountapp beginPrivalertendPriv˙˙˙˙ANDoSendD šjodocdocIDfromtopositionccbccsubjectbodybUBbUI bApprovalbNoMojotoolbarsbInitiatorEmailraddrurlinvitees firstParam startDatescriptparamsresultraisee submitParams docScriptName oneShotScriptparmsstrPrefversvsversnamestrstrENUsnameENUscriptssoResultN_ŁŒ˘ "T'=DQTŮ>E QT B6; ¸ äY;5]T]\ä:Q>=WQT'=EQTŮ> TWQ= WQT>$V9 â äTä:WQoT ¸ ä= ä:WQTVŮ?$V9 â äTä:WQ%V9 â äVT?7ä:WQV= WQBWQT'=EQTŮ>?VV=WQV=9 â äTä:WQCWQT'=EQTŮ>E QT ?VV=WQV=9 â äTä:WQCWQT'=EQTŮ>?VV=WQV=9 â äTä:WQCWQT'=EQTŮ>?VV=WQV=9 â äTä:WQCWQT ,VV=WQV=WQ'VV=WQV=WQ;äRWQVQT ÓYV]=]T]T]=]V]T ]C]\ ¸ ä: ¸ ä= ä=!ä:WQn"=#9$â$ä‚ ¸ ä:ä:=%o"Q=&;"='=(V=)WQĆY=]B]=]T]=]T]*B]\ ¸ ä: ¸ ä= ä=!ä:WQn+=#9$â$ä‚ ¸ ä:ä:=%o+Q=&;+='=,V=)WQVQBWQV Q†YV]-T].C]/B]0\W QT ‡=1W QV=2V ¸ ä:=3W QY=4]5;56]7T  × ×]8T  × ×]9T =: =;T =< ===>]?\W Q=@T =A =;T =B ==CWQ;DäRWQT jVYV 58]F=G]H=I]J\6EQVYV 59]F=L]H=I]J\6KQVYV 58]F=G]H=I]J\6EQVY×]F=L]H=N]J\6MQVYV 59]F=O]H=I]J\6KQVKómMWQVV75HWQVVWQ;V7WQV˝@WQT EQ;5P=QV=RWQ;V7WQV VYV]SV]T=U]VV ¸W ä>ä?ä:=X=Y =Z][VV75F]FVV75J]J\8QăL˙˙˙N9\â\äV ä:WQV YZV `V `\]^\6]QVK=mMWQV 5]V 5]5^ ¸_ äVäVV7ä:6^QăL˙˙˙ĹNT V ;a546`QT E QT V C6bQ; ¸c ä:QT ¸d äV ä:WQ; ¸e ä:QJĆvWQ; ¸ äYV5f]T]\ä:QCWQÇ;gäRWQVV6hQVV6iQV˜€ ¨ˆĺ•ˆ’ÉˆÚ•ˆŸ€ ˇÉ•ˆŐpʐŘÎ•ˆŐpʐˆŰp•ˆČp•€ ӈÚ• •ˆČp•ˆŰp•ˆ€ áˆŕˆ5 • •ˆČp•ˆŰp•ˆ•ˆÚ• •ˆČp•ˆŰp•ˆ•ˆÚ• •ˆČp•ˆŰp•ˆ•'• •ˆČp•ˆČpʐ •ˆČp•ˆČp•Î”ˆ€Î••ČĘČČĘČČÚÓˆꘀ "̐ˆꐐ˜€ *•Ę–ʐȐʐČÚÓ˜€ 9ˆꘀ E̐ˆ吐”•”‘ćˆ •˜€ Vɐ☀ i•ĘĎӐӐ × 吐Č Ř ߘ€ ~ΐˆe•ˆđˆőˆđˆꐈ𐐐5€öːĐËÍ˜€ “ •˜€ ˜•Ů•Íˆ͘€ ˘ˆːȐȐĘŘ ِѐݘ€ ŻÖˆ琐5@ːˆű˜€ ť •ˆӘ€ ŔˆÍ•ˆ ʐˆѐˆ֐ˆŃx•Ęˆ퐈…{–Îˆ̐ˆ̐ˆŒ undefinedlengthappalert AnnotsString IDS_SEND_FOR_REVIEW_NO_RECIPIENTcMsgoDocmailto:escapesplit;?&cc=bcc=subject=body=ui=trueui=falseDate initiator initScriptinviteesccbccsentDatetoolbars selfDestructtoSourcereplace{$& doc: this, !CBCanDoEBRReviewWorkflowCheckExpr(CBEncodeMaybeInternalStrings())if(!) { } else { Collab.registerReview();}initiatorEmail CBCanDoApprovalWorkflowCheckExpr" } else { Collab.registerApproval(cURLcPermIDbPDFbCheckReqdFields___ADBERMAIS___) if(app.viewerVersion < 7) try{addScript(, ' ');} catch(e){}RMAcreatorIDS_SORT_WARNING_TITLEtitler_versa_versAEBRwwoREwf IDS_VERERR_APP_RE_ArrayroldvernR602sverOldlablaoldF4o5a55xF602languageENU_ENUstrstrenuurltype substringFViewerReaderprodCreateViewerVersionCheck70 oJavaScriptDocconcat cUsageRightssubmitFormUsageRightsbSetDocIDLater beginPriv submitFormendPrivmessageObjectsubmitFormResultraised˙˙˙˙ÁךbReaderbResulterrkńl ;5 ¸ ä ä:WQ;5×E QV DHQ;5×E5Q9âä;5ä;5ä:;5WQVE Q; BV;  ; WQ; ¸ äYV] \ä:QBVßÓˆ.˙ѐŐ ؐˆŕˆ’ˆŒapp viewerTypematch viewerVersionrequestPermission permissionannotcreategrantedexternal-$$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_READER.$$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_ACROBATalertcMsgReader˙˙˙˙ÁÄš bReaderbResulterrŸq`s9 ;5 ¸ ä ä:WQ;5× E?QV D5Q9âä;5ä;5ä:;5WQVE Q; BV;  ; WQ; ¸ äYV] \ä:QBVßÓˆ/ʐóÎ• ؐˆŕˆ’ˆŒapp viewerTypematch viewerVersionrequestPermission permissionannotcreategrantedexternal-$$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_READER.$$$IDS_EMAIL_WORKFLOW_IN_BROWSER_ERROR_ACROBATalertcMsgReader˙˙˙˙eŻ%@áö˙˙˙˙CreateViewerVersionCheck70§š9íFactions bCreateENU varScript readerCase viewerCasen›ĆŤń T5@T=6QT5@T=6QT5@T=6QT5@'T=T5=6QT 5T56Qn; äRoQn= = ; 5 ==T5=oQT5=DQT5=EQ; 5 =WQV…n Ă=oQ9âäTä=äCä:Qn Ă=oQ9âäTä=äCä:Qn Ă=oQ 9âäTä=äBä:Q===T5=== T5=!="T5==#T5=$=!==%T5&==='T5&=!=(T5==#T5=)=!=WQn*; äRo*Qn*T5=+o*QT5,@WQVcn* Ă*=-o*QT5,@&9.â.äT5,äT5ä:Qn* Ă*=o*QT5/@DQT50@WQVÎV!n* Ă*=1o*Qn* Ă*=2o*Qn* Ă*=o*QT5/@&9.â.äT5/äT5&ä:QT50@&9.â.äT50äT5&ä:Qn* Ă*=o*Qn* Ă*=o*Qn3;4äRo3Q;3;65Q;3V66Q;3=7T58;*8Q;3Ę•ˆΐĘ•ˆΐĘ•ˆΐĘ"•ˆ␐ˆŃpŸ€ˆՐˆ••×Űü€€•ˆĐp—ˆېˆĐp—ˆېˆĐp̐ˆۘ€!•–Ր–ՐՐې–Ր–ŐŐŰĘ˜€4ˆՐˆِÎ •ˆːu—Ę•ˆᐐˆĐp—Ţ ••ˆĐp̐ˆĐp—ˆĐp—Ę•ˆáĘ•ˆᐐˆĐpŸ€VˆĐpŸ€[ˆՐˆАˆΐˆڐˆŽprefixurl+http://cgi.adobe.com/special/acrobat/updatewfcgig"?p=" + app.platform + "&v=" + app.viewerVersion + "&l=" + app.language + "&c=" + app.viewerType + "&w=" strScriptString@if (typeof(this.ADBE) == "undefined") this.ADBE = new Object(); ADBE.LANGUAGE = "applanguage"; ADBE.Viewer_string_Title = "titleAwREAwoREENU%if (app.language == ADBE.LANGUAGE) { &CreateViewerVersionCheckStringsClusterstr } else { strenu} Uif (typeof(ADBE.Reader_Value_Asked) == "undefined") ADBE.Reader_Value_Asked = false; Uif (typeof(ADBE.Viewer_Value_Asked) == "undefined") ADBE.Viewer_Value_Asked = false; Rif (typeof(ADBE.Reader_Need_Version) == "undefined" || ADBE.Reader_Need_Version < r_vers) {  ADBE.Reader_Need_Version = ; & ADBE.Reader_Value_New_Version_URL = " ADBE.SYSINFO = # + "&r=" + ADBE.Reader_Need_VersionRif (typeof(ADBE.Viewer_Need_Version) == "undefined" || ADBE.Viewer_Need_Version < a_vers ADBE.Viewer_Need_Version = & ADBE.Viewer_Value_New_Version_URL = "# + "&r=" + ADBE.Viewer_Need_Version codeScript { rold"if (app.viewerType == "Reader") { CreateViewerVersionCheckCasea5aoldelse if (app.viewerType != "Reader") scriptsObjObject!ADBE::0100_VersChkStrings!ADBE::0100_VersChkVars!ADBE::0200_VersChkCodecreator˙˙˙˙CreateViewerVersionCheckCase=šmaction need_vers?­¤˛in Ă=oQT5=En ĂTT5= T5=oQ@n ĂTT5= T5=oQn Ă= oQT5 = nT5=0n Ă= T5 =oQ+n Ă=T5 =oQŹT5 =™T5@T=6QT5@T=6Qn Ă= T5 =T5 ¸ ä:=T5 ¸ ä:=oQT5=!n Ă=oQn Ă=oQn Ă=oQˆĐp—Î@•ˆ× Ýp̐ˆ× Ýp—ˆĐp—Îi•Î+•ˆßp̐ˆßp̐Î•Ę•ˆΐĘ•ˆΐˆ˙Ôp—Î•ˆĐp̐ˆĐp—ˆĐp codeScript if (app.viewerVersion < prodReadervernADBE.Reader_Need_Version && !ADBE.Reader_Value_Asked) ADBE.Viewer_Need_Version && !ADBE.Viewer_Value_Asked)  { typeurl if (app.alert(strvarT, 1, 1) == 1) this.getURL(ADBE.Reader_Value_New_Version_URL + ADBE.SYSINFO, false);  app.response({cQuestion:`, cDefault:ADBE.Viewer_Value_New_Version_URL + ADBE.SYSINFO, cTitle:ADBE.Viewer_string_Title}); updatercompTypeAppcompReader7', 1, 1) == 1) app.findComponent({cType:toSource, cName:, cDesc:""}); " ADBE.Reader_Value_Asked = true; " ADBE.Viewer_Value_Asked = true;  } ˙˙˙˙CreateViewerVersionCheckStringÄš  creatoractionstrlangchtabDłÉ´T5Ĺ=DQT5@5T=T=T5=T56QTT7Ĺ=DQTT7@TTT58Qn ĂTT5= TT7 ¸ ä:= oQˆß•ˆđˆÝ•ˆАˆöpPstrvar undefined ADBE.Viewer__string_prod_lablstr strScript = toSource; ˙˙˙˙&CreateViewerVersionCheckStringsClusterÄš actionsstrlangindentchtab4ľ@¸˜T= =WQT5@.9âäT5äT5äTäVä:QT5@.9âäT5äT5äTäVä:QT5@.9âäT5äT5äTäVä:Q ؘ€ĽĘ•ˆéĘ•ˆéĘ•ˆéˆN roldCreateViewerVersionCheckStringcreatora5aold˙˙˙˙ANContinueApprovalšdoc_¸mš­9âäTäBäBäCäBäBä:ˆ݈@ANSendForApproval˙˙˙˙ ANEndApprovalšdoc‡šĘşˇ9âäTäBäBäCäCäCä:ˆ݈>ANSendForApproval˙˙˙˙ANRejectApprovalšdocçşóťĂ9âäTäBäCäBäCäBä:ˆ݈?ANSendForApproval˙˙˙˙ANApprovalGetStringshš.ÓHmoderetDataź“ÇÍ;äRWQT×˙lV=6QV=6QV=6QV=6QV= 6 QV= 6 QV=6 QčT?V;56QV;56QV;56QV;56QV;56 QV;56 QV;56 QTT׏V;56QV;56QV;56QV;56QV;56 QV;56 QV;56 QżT׏V;56QV;56QV;56QV;56QV;56 QV;56 QV;56 Q*T׏V;5 6QV;5!6QV;5"6QV;5#6QV;5$6 QV;5%6 QV;5&6 Q•T׊V;5'6QV;5(6QV;5)6QV;5*6QV;5+6 QV;5,6 QV;5-6 QVÎg•ˆΐˆΐˆΐˆΐˆΐˆΐˆӐ€Š•ˆӐˆӐˆӐˆӐˆӐˆӐˆؐ€Š•ˆӐˆӐˆӐˆӐˆӐˆӐˆؐ€Š•ˆӐˆӐˆӐˆӐˆӐˆӐˆؐ€Š•ˆӐˆӐˆӐˆӐˆӐˆӐˆؐ•ˆӐˆӐˆӐˆӐˆӐˆӐˆӐˆŒObjecttitleTitle 1textFirst Second Thirddest Destination 1tipTip 1subj Subject 1msg Message 1notifyNotification 1 AnnotsString$IDS_SEND_FOR_APPROVAL_TITLE_INITIATE#IDS_SEND_FOR_APPROVAL_INST_INITIATE#IDS_SEND_FOR_APPROVAL_DEST_INITIATE"IDS_SEND_FOR_APPROVAL_TIP_INITIATE#IDS_SEND_FOR_APPROVAL_SUBJ_INITIATE#IDS_SEND_FOR_APPROVAL_MESG_INITIATE%IDS_SEND_FOR_APPROVAL_NOTIFY_INITIATE$IDS_SEND_FOR_APPROVAL_TITLE_CONTINUE&IDS_SEND_FOR_APPROVAL_INST_CONTINUE_UB#IDS_SEND_FOR_APPROVAL_DEST_CONTINUE"IDS_SEND_FOR_APPROVAL_TIP_CONTINUE#IDS_SEND_FOR_APPROVAL_SUBJ_CONTINUE&IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB%IDS_SEND_FOR_APPROVAL_NOTIFY_CONTINUE(IDS_SEND_FOR_APPROVAL_INST_CONTINUE_NOUB(IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB$IDS_SEND_FOR_APPROVAL_TITLE_COMPLETE#IDS_SEND_FOR_APPROVAL_INST_COMPLETE#IDS_SEND_FOR_APPROVAL_DEST_COMPLETE"IDS_SEND_FOR_APPROVAL_TIP_COMPLETE#IDS_SEND_FOR_APPROVAL_SUBJ_COMPLETE#IDS_SEND_FOR_APPROVAL_MESG_COMPLETE%IDS_SEND_FOR_APPROVAL_NOTIFY_COMPLETE"IDS_SEND_FOR_APPROVAL_TITLE_REJECT!IDS_SEND_FOR_APPROVAL_INST_REJECT!IDS_SEND_FOR_APPROVAL_DEST_REJECT IDS_SEND_FOR_APPROVAL_TIP_REJECT!IDS_SEND_FOR_APPROVAL_SUBJ_REJECT!IDS_SEND_FOR_APPROVAL_MESG_REJECT#IDS_SEND_FOR_APPROVAL_NOTIFY_REJECT˙˙˙˙ eMailValidate⚤emailStremailPat specialChars validChars quotedUser ipDomainPatatomworduserPat domainPat matchArrayuserdomainIPArrayi domainArrayatomPatdomArrlenŽÇkÖ  WQ=WQ=V=WQ=WQ WQV=WQ=V=V=WQ;ä= V= V= äRWQ;ä= V= V= äRWQT ¸ äVä:W QV @BV ?7W QV ×7W QV ¸ äVä:@BV ¸ äVä:W QV @=?W Q$mV V 7X˙BV # ?W QQăV ×˙˙˙ŮCV ¸ äVä:WQV@B;äVä= äRWQV ¸ äVä:WQVŮWQVVŮ?7Ů×BV×BC˜€ɘ€ɐÓ˜€ɘ€!ɐÍ˜€(ݐčč˜€4֐ •ˆ’ÉĘÔ•ˆš€E֐ •ˆ$$,–ˆ™€HË•ˆš€Hˆ̘€K˜€Hˆ͘€Nˆš€R֐ •ˆš€_ؐ֐̐Ö•ˆš€h•ˆš€nˆŠ \(\)<>@,;:\\\"\.\[\][^\s] ("[^"]*")+(|)RegExp^(\.)*$matchglength ^(.+)@(.+)$0^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$+,˙˙˙˙ÁŽš z) dialogTextwarningMessage warningTitle bDemandEmail bDemandNameeaddrinamebStatusžÖyÚrVQVQVQmă; ¸ äBäTä:WQVV>WQT­; ¸ ä:Q;5WQ; ¸ ä:QV@EQ9âäVä: Z; ¸ ä:Q; ¸ äYT] T] ?] \ä:Q; ¸ ä:Q?WQT”; ¸ ä:Q;5 WQ; ¸ ä:QV@Z; ¸ ä:Q; ¸ äYT] T] ?] \ä:Q; ¸ ä:Q?WQ>V˙˙ţ…”””(€y)€{ˆ›€yˆڐ€Q•ˆ• •ˆѐˆΐˆѐËˆÓ•ˆѐˆѐˆ• •ˆѐˆΐˆѐ •ˆѐˆѐˆʘ€œˆ’ČˆCollab getIdentityapp beginPrividentityemailendPriv eMailValidatealertcMsgcTitlenIconname €˙˙˙˙Á Cš +×PdocbNoMojoegodataeaddr startStepto startDatefrombcc resultDoSenddocName­ÚĺĄ BWQVQCWQY\WQTEQT5GVT56QT5 ¸ ä ä:V;56Q; ¸ ä:Q;5 WQ; ¸ ä:QV i9 â ä; 5 ä; 5ä; 5äCäBä:Q; ¸ ä:Q;5 WQ; ¸ ä:QV >>WQňmVV6QVC6QV;5 ¸ ä=ä:@6Q9âäVäVäCäV5äV5ä:QV5UQ?WQV5=aV5WQ;äRWQV5WQVW Q9âäTäT5>7äVäVä>ä=äV äV5äV5äV5äBäCäVä@äV5ä:W QV 5 EQV 5!°T5"W Q; ¸ ä:Q;# ¸$ ä; 5% ¸& ä äV ä:ä=ä; 5' ¸& ä äV ä:ä=(ä:Q; ¸ ä:QT5)T ¸* äCä:Q? BWQăV˙˙ţTEQT5)T ¸* äCä:Q>•”•ĘŃ•ˆѐŮ•ˆӐˆѐΐˆѐˆ •ˆ֐ːː’–ˆѐˆΐˆѐˆ •ˆ’•(€÷•ˆ™€͐ˆ̐ˆʐˆ搐ˆ됐ˆ̐ˆ•Î€\•ĚÎĚ˜€에˙䐐ˆ×•Ěˆѐˆ퐖ŕĘˆѐČ•ˆѐˆŸ€ˆ€̈ʘ€Ń•ˆѐˆŠ pathdocPathmatchdocFS fileSystemWebDAVapp beginPrividentityemailendPrivDoIdentityDialog AnnotsString IDS_APPROVAL_IDENTITY_SETUP_TEXTIDS_EMAIL_INVALID"IDS_SEND_FOR_APPROVAL_TITLE_NONAMEraddrinitiatorEmail readerEnable viewerType Exchange-ProCBRunEmailApprovalWizarddocresultfnshaddrsDateANDoSenddocIDsubjmsgraisedsubmitFormResultdocumentFileNameCollab alertWithHelpIDS_APPROVAL_CONFIRM_MSGreplace!IDS_SEND_FOR_REVIEW_CONFIRM_TITLEAnnots:SendForApprovalConfirmhiddencloseDoc^http %docname% %docname%"÷˙˙˙˙Á˜š;ü×doc bInitiating bRejection bUnregisterbNoMojobIsEndedocNamego bSentEmaildata ccoriginalinitiatorEmailOriginalbShowInitiatorEmail stringList bUBAnnots resultDoSendcheckCC docScriptName subjNotify msgNotifyÚĺĽ  VQT5WQCWQBWQY\WQTEQT5GVT56QT5 ¸ ä ä:V;56Qm; ¸ ä:Q; ¸ äTä:WQ; ¸ äTä:WQ; ¸ ä:QVV6 QVQV'=EQVŮ>CWQ BWQT@; ¸ ä:QV; ¸ ä:6Q; ¸ ä:QY\WQT9âä×ä:WQ˝T9âä×ä:WQ›B9âä×ä:WQ{BW Q; ¸ ä:Q; ¸ äTä:W Q; ¸ ä:QV 9âä×ä:WQ9âä×ä:WQ9âäV5 ¸ ä äVä:äV5 ¸ ä äVä:äV5 ¸ ä äVä:äV5 ¸ ä äVä:äV5 ¸ ä äVä:äV5 ¸ ä äVä:äVäCäVäVäTä: Q; ¸ ä:Q; ¸ äYV5]C]C]\ä:UQ; ¸ ä:QV QV5 =!†; ¸ ä:QT; ¸" äV5ä:Q; C6#Q; ¸ ä:QV5$ ¸ ä;%ä=&ä='äRä=(ä:W QV Ů>V=(6$Q=)W QT DQTEQV5TD QT@; ¸ ä:Q; ¸* äTäV ä:Q; ¸ ä:Q9+â+äTäT5,>7ä=(äV5-ä>äV5$äVäV5äV5äBäBäCäCä@äVä:W QV 5.DQV 5/ 5; ¸ ä:Q; B6#Q; ¸ ä:Q>CWQV5 E QV'=EQVŮ>ýTD QT'V5 ¸ ä äVä:$;051 ¸ ä äVä:W QTEQV5 );052 ¸ ä  äVä:"V53 ¸ ä  äVä:WQV ¸ ä  äV5-ä:WQ; ¸ ä:Q; ¸* äTäV ä:Q; ¸4 äTä:Q; ¸ ä:Q9+â+äTäT5,>7ä=(äVä>ä=(ä=(äV äVäBäBäCäCä@äBä:W Q; ¸ ä:Q; ¸5 äTä:Q; ¸ ä:QV 5.DQV 5/ 5; ¸ ä:Q; B6#Q; ¸ ä:Q>CWQT; ¸6 äTä:QV„; ¸ ä:Q; ¸7 ä;058 ¸ ä  äVä:ä=(ä;059 ¸ ä  äVä:ä=:ä:Q; ¸ ä:Q; ¸ ä:Q; B6#Q; ¸ ä:Q?FĆvWQ; ¸ ä:Q; B6#Q; ¸ ä:QÇ BWQăV˙˙÷ń>˜€”̐••ĘŃ•ˆѐŮ•ˆӐ(€•ˆ™€"ˆѐؐؐˆѐˆ̘€0”ˆÚ •ˆʐˆ• •ˆѐˆِˆѐĘ•ˆڐ•ˆڐ˜€F•ˆڐ˜€Q€_ˆѐˆؐˆѐ•ˆڐˆ՘€jˆéŢŢŢŢŢ”’””Ȑˆѐˆôˆѐ”΀ •‘ˆѐ •ˆڐˆ̐ˆј€‹ôĘ•ˆΐÉ˜€–ˆ Ű•Ě•ˆ ѐˆ ِˆ ѐˆ˙ŕ˜€ŚÎˆ"É•ˆѐˆ ̐ˆ ѐˆ ’ˆ€ˇÎˆ Ú•Ě"˙ːÉˆ#É$˙ːˆᘀňѐˆِˆՐˆј€Ј˙Θ€׈ѐˆՐˆѐÎˆ"É•ˆѐˆ ̐ˆ ѐˆ ’ˆ€č •ˆՐ •ˆѐˆ퐖ŕĘˆј€÷ˆѐˆ ̐ˆѐˆz•Ęˆѐˆ ̐ˆр{˘€ˆ€!ˆʘ€ ˆŠ documentFileNamepathdocPathmatchdocFS fileSystemWebDAVapp beginPrivCollab getCCaddrhasInitiatorEmailRequestendPrivinitiatorEmail undefinedlengthfinalApprovalEmailfinalApprovalEmailEnabledANApprovalGetStrings isUbiquitizedCBRunApproveDialogtitlereplacetextdesttipsubjmsgopenDoccPathbHiddenbUseConvresultmyokenableFinalApprovalEmailinEmailWorkflowccaddrRegExp([\f\n\r\t\v ])+g___ADBERMAIS___removeApprovalDocScriptANDoSenddocIDaddrraisedsubmitFormResult AnnotsStringIDS_APPROVAL_NOTIFY_SUBJ#IDS_SEND_FOR_APPROVAL_MESG_COMPLETEnotifybeginInitiatorMailOperationendInitiatorMailOperationunregisterApproval alertWithHelpIDS_APPROVAL_CONFIRM_MSG!IDS_SEND_FOR_REVIEW_CONFIRM_TITLEAnnots:SendForApprovalConfirm˙˙˙˙e^http %docname% %docname% %docname% %docname% %docname% %docname% %docname% %docname% %docname% %docname% %receiver% %docname% %docname%|Ä˙˙˙˙Áš!docerrů Ű  VQ; ¸ ä:QT%; ¸ ä=äTä:Q; ¸ ä=ä:Q; ¸ ä:QV9âäVä:Q”ˆѐ •ˆŕˆאˆѐ •ˆӈapp beginPriv execMenuItemAnnots:BrowserBasedReviewendPriv DebugThrow˙˙˙˙Á Ëš =+pdocbUpdatedatago startStepeaddrto startDatefromproxyIDalreadyReviewingcanProxydocID resultDoSenddocName= Í T; BUQY\WQTEQT5GVT56QT5 ¸ ä ä:V;56QTEQ; ¸ äTä:X; ¸ ä:Q; ¸ äY; 5 ]T]\ä:Q; ¸ ä:Q>CWQ>WQ; ¸ ä:Q;5WQ; ¸ ä:QV i9âä; 5ä; 5ä; 5äCäBä:Q; ¸ ä:Q;5WQ; ¸ ä:QV >űm9âäVäVä:QV5UQ?WQV5=şV5 ¸ ä=ä:WQ;äRWQV5WQVQBWQ; ¸ äTä:W Q†; ¸! äTä:"; ¸" äTä:WQCWQĆvW QÇV QVVW Q:VD QV T5#>7; ¸$ ä:W Q9%â%äTäV äVäVä>ä=&ä=&äV5'äV5(äV5)äBäBäBäV5*ä:W QV 5+ EQV 5,KV D QTC‡; ¸- äYT]@].=&]/V]0=&]1=&]2V]3V5*]*\ä:QV ; ¸4 äTäV ä:QT55W Q; ¸ ä:Q; ¸6 ä; 57 ¸8 ä äV ä:ä=&ä; 59 ¸8 ä äV ä:ä=:ä:Q; ¸ ä:QT5;T ¸< äCä:Q? BWQăV˙˙ýTEQT5;T ¸< äCä:Q>É•ĘŃ•ˆѐŮ•ˆӐÝ•ˆѐˆѐˆ’••ˆѐΐˆѐˆ •ˆ֐ːː’–ˆѐˆΐˆѐˆ •ˆ’(€•ˆ™€Lˆאˆ̐ˆ•Î€ľ•ÝÎĚ”•Ř‘Ô•ˆؐˆ}•Ę€{–” •ˆ̘€sˆɈ萐˙ېˆ×•ˆĎ•ˆ˙␐ •ˆ٘€…̐ˆѐˆ퐖ŕĘˆѐČ•ˆ֘€•˜€›ˆŸ€Ÿˆ€Kˆʘ€ĄŃ•ˆѐˆŠ undefinedpathdocPathmatchdocFS fileSystemWebDAVCollab isDocDirtyapp beginPrivalert AnnotsString#IDS_SEND_FOR_EMAIL_REVIEW_DOC_DIRTYcMsgoDocendPrividentityemailDoIdentityDialogIDS_REVIEW_IDENTITY_SETUP_TEXTIDS_EMAIL_INVALID IDS_SEND_FOR_REVIEW_TITLE_NONAMECBRunEmailReviewWizarddocresultfnshaddrsjoin;DateraddrcanProxy isEmailReviewgetProxydocIDcreateUniqueDocIDANDoSendsubjmsg readerEnabletoolbarsraisedsubmitFormResultregisterReview initiator initScriptinviteesccbccsentDate registerProxydocumentFileName alertWithHelpIDS_SEND_FOR_REVIEW_CONFIRM_MSGreplace!IDS_SEND_FOR_REVIEW_CONFIRM_TITLEAnnots:SendForReviewConfirmhiddencloseDoc˙˙˙˙e^http %docname% %docname%Ą6;˙˙˙˙Á Eš 7Řsdoc keepTryingresultedocNamegopermIDdatabAsPDFmaxPDFCommentsSizeurl didSubmitForm#ŚCWQVQVQ; ¸ äTä:E#Q9âäTä;5ä:T5WQCWQ; ¸ äTä:WQ; ¸ ä:QYVT55 T55 ] \WQ; ¸ ä:QV T5 >7WQCWQ; ¸ ä:Q;5WQ; ¸ ä:QT5XXV‘; ¸ ä:Q; ¸ ä;5 ¸ ä äVä:ä×ä×ä;5ä:WQ; ¸ ä:QV×BWQV× BWQ}m9âä;5 ¸ ä äVä:ä;5ä;5ä;5ä;5äVäCäVä:QV5=˙=9âäV5 ä:=9âäV5ä:= 9âäV5!ä:="W Q†; ¸ ä:QT ¸# äYZ\]$C]%C]&V ]'V](V ])V]*C]+B],\ä:W Q; ¸ ä:QV ŠBWQ; ¸- äTä;.äRä:Q; ¸ ä:Q; ¸/ ä;50 ¸ ä äVä:ä=1ä;52 ¸ ä äVä:ä=3ä:Q; ¸ ä:QgĆvW Q; ¸ ä:Q; ¸ äYV 54]5T]6\ä:Q; ¸ ä:QÇ BWQăV˙˙ýƒ•””÷•Ě•ŘˆѐČѐˆ •ˆΐ•ˆѐΐˆѐÔ•ˆѐ˙–ˆѐ •ˆʐ•ˆ•(€‚•ˆ™€Аˆ˙搐΀ú•˙䐐‘ˆѐАʐ––ȐȐˆ ɐȐ–ϐˆѐ •ˆ•ˆŕˆѐˆ퐖ŕĘˆŃx•Ęˆѐˆ퐈р{˘€üˆ€ψʘ€ţˆŠCollab isEmailReviewANVerifyComments AnnotsStringIDS_SEND_COMMENTS_NO_COMMENTSdocumentFileNamegetProxyapp beginPrivreviewersEmailinitiatorEmailaddrendPrivdocIDmaxPDFCommentsSizefilesizealertIDS_SEND_COMMENTS_DOC_IS_LARGEreplace$IDS_SEND_COMMENTS_DOC_IS_LARGE_TITLECBRunReturnResponseDialog!IDS_SEND_COMMENTS_TO_AUTHOR_TITLE IDS_SEND_COMMENTS_TO_AUTHOR_INSTIDS_SEND_FOR_REVIEW_CONFIRM_TIP IDS_SEND_COMMENTS_TO_AUTHOR_SUBJIDS_SEND_COMMENTS_TO_AUTHOR_MSGresultokmailto:escape ?subject=subj&body=msg &ui=false submitFormaFields bAnnotations bInclNMKeycURLbPDFbFDFcPermID bExclFKeybCheckReqdFieldssetReviewRespondedDateDate alertWithHelpIDS_SEND_FOR_REVIEW_CONFIRM_MSG!IDS_SEND_FOR_REVIEW_CONFIRM_TITLEAnnots:SendForReviewConfirmmessagecMsgoDoc˙˙˙˙e%mb% %docname% %docname% %docname%Ŕ‚/˙˙˙˙Áľš dochasAddrF#{$ ; ¸ ä:QT55WQ; ¸ ä:Q;TEsQVEjQT ¸ ä;5 ä;5 ä:;5 E5QT ¸ ä;5 ä;5 ä:;5 6ˆѐѐˆѐˆ˙˙‹€Ňapp beginPrivCollabinitiatorEmailendPriveventrcrequestPermission permissionannot canExportgrantedmodify˙˙˙˙Áwš$|&@ bCanStorebStorecTitlecStrauthť$, ;äRWQV;äR6QV5B6QV‚6QV‚6QVYT]ZY=]= ] ZY= ]= ] T]C] X]\`Y=]=]ZY=]= ] =]ZY= ];5]\`Y=]=]×]\`\]\`Y=]= ] =]ZY= ];5]\`Y=]=]×]C]\`\]\`\]\`Y=]=]= ] ;5]\`Y=]\`\]\`\]\6Q; ¸! ä:Q; ¸" äVä:Q; ¸# ä:QV5ÎˆӐˆϐˆΘ€ˆΘ€ˆ“•Č”•ĘĘ”•ĘĘČ–͐•ĘĘ”•ĘĘĘ”ăđ•ĘĘĘ”ă˙š€J•ĘĘĘÔě˜€VˆѐˆՐˆѐˆɈObjectresultresponse initializecommit descriptionnameviewtype align_centeralign static_text align_left wrap_namewidth align_fillalign_children align_row AnnotsStringIDS_SYNC_AUTHENTICATE_USERNAME edit_textusrnitem_id char_widthelementsIDS_SYNC_AUTHENTICATE_PASSWORDpasspasswordkeyc check_boxIDS_SYNC_AUTHENTICATE_SAVECRED ok_cancelapp beginPriv execDialogendPriv˙˙˙˙Á]š dialog`%Ű%T ¸ äYˆ˙˙˙˙]\ä:QT ¸ äYˆ˙˙˙˙ˆ˙˙˙˙B]\ä:Qˆ䐈Ů߈0enablekeycload˙˙˙˙Á\š  dialogvaluesř%ç&T ¸ ä:WQA5V56QA5V56QA5V56QA5C6QŇˆԐˆԐˆԐˆ͈storeresultUsernameusrnPasswordpassSaveCredentialkeycresponse˙˙˙˙ÁVš)¨6@ bCanStorebStorecServercRealm bShowWarningauthR,˜5\;äRWQV;äR6QV5B6QT;DQTŮXV5T;DQTŮXV5V‚6QV‚6QVY;5 ] ZY= ] = ]ZY=] =]=];5] \`Y=] ;5] = ]ZY=] =]T] \`Y=] =]T] \`Y= ] =]ZY= ] = ]=]ZY=] ;5] \`Y=] =]×]\`\]\`Y= ] = ]=]ZY=] ;5] \`Y=] =]×]C] \`\]\`\]\`Y=!]="] =];5#] \`\]\`Y=$] \`\]\`\]\6Q;% ¸& ä:Q;% ¸' äVä:Q;% ¸( ä:QV5ÎˆӐˆϐŰ•ˆɐŰ•ˆɐˆΘ€pˆΘ€xˆ“•Ď”•ĘĘ”•ĘĘĘÔ•ĘĎĘ”•ĘĘÍ•ĘĘÍ•ĘĘ”•ĘĘĘ”ăđ•ĘĘĘ”ă˙š€ł•ĘĘĘß˜€ťě˜€ÁˆѐˆՐˆѐˆɈObjectresultresponse undefinedlength initializecommit description AnnotsStringIDS_SYNC_AUTHENTICATE_TITLEnameviewtype align_centeralign static_text align_leftwarnitem_id+IDS_SYNC_AUTHENTICATE_WARNING_BASIC_NON_SSLclusterIDS_SYNC_AUTHENTICATE_CAPTION align_fillalign_children align_rowIDS_SYNC_AUTHENTICATE_USERNAME edit_textusrn char_widthelementsIDS_SYNC_AUTHENTICATE_PASSWORDpasspasswordkeyc check_boxIDS_SYNC_AUTHENTICATE_SAVECRED ok_cancelapp beginPriv execDialogendPriv˙˙˙˙Áš dialogŞ-B.jT ¸ äYˆ˙˙˙˙]\ä:QT ¸ äYˆ˙˙˙˙ˆ˙˙˙˙B]\ä:QT ¸ äYˆ˙˙˙˙]\ä:Qˆ䐈Ůߐˆäˆ%enablekeycloadvisiblewarn˙˙˙˙Á\š  dialogvalues\.'/pT ¸ ä:WQA5V56QA5V56QA5V56QA5C6QŇˆԐˆԐˆԐˆ͈storeresultUsernameusrnPasswordpassSaveCredentialkeycresponse˙˙˙˙Áâš 1urlusers limitedAccess´5×7ÇnBoQ; ¸ ä=ä:Qn; ¸ ä:oQ;n; ¸ äTäTäTä:oQ;>!; ¸ ä=ä:Q; ¸ ä= ä:Q; ¸ ä:Q; ¸ ä= ä:Q;ˆ̐ˆאˆې|•ˆç•ˆ ܐˆ אˆ֐ˆאˆŽresultconsoleprintln% Testing Hosted Services Share API...swConnCollab swConnect shareFileShare file API succeeded*** Share file API failed disconnect7 ERROR: Unable to establish connection with Acrobat.com˙˙˙˙ ANMatchStringš searchStrmatchStró758ÚT ¸ äTä:ˆӈ!match˙˙˙˙ANMatchStringCaseInsensitive,š  searchStrmatchStrmatchStrRegExp`8Ý8ß;äTä=äRWQT ¸ äVä:Řˆӈ'RegExpimatch˙˙˙˙ÁŞš*&@cPathshareDlg 9őAĺ ;äRWQV‚6QV‚6QV‚6QVY=]ZY=]= ] ZY= ]= ]X,] \`Y=]=]=] ZY=]=]=]\`Y=];5]=]\`\]\`Y= ]=]=]C]\`Y=]C]YZ×`YZ\]\`\]\]= ]=]\`Y= ]=!]=]C]\`Y=]C]YZ×`YZ\]\`\]\]="]=]\`Y=#]\`\]\`\]\6Q;$ ¸% ä:Q;$ ¸& ä9'â'äVä:ä:Q;$ ¸( ä:QV5)ÎˆΘ€ńˆΘ€üˆΘ€ˆ“•Ę”•ĘĘ”•ĘĘÍ•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€/•ĘĘĘË•Ę–ďĘĎ•ĘĘĘË•Ę–ďĘĎě˜€Oˆѐˆ䐈ѐˆɈObject initializecommitbrws description Share a Filenameviewtype align_leftalign_children static_textSelect a file to share:width align_fill alignment align_row edit_textpathitem_idbutton AnnotsString IDS_BROWSEelementsSend email to:dialogfontbold multilineedit_text_heightprodheightinvtMessage:mesg ok_cancelapp beginPriv execDialogANTrustPropagateAllendPrivresult˙˙˙˙ÁJšdialogtoLoadX9Ý9éA;äR6QA5B6QYˆ˙˙˙˙]\WQT ¸ äVä:Qˆѐˆ͐ؐˆӈresultObjectresponsepathload˙˙˙˙Áš dialogvaluesţ9;ńT ¸ ä:WQ; ¸ ä:QA5; ¸ äV5ä:6Q; ¸ ä:QA5V5 6QA5V5 6 QA5C6 QŇˆѐˆ合ѐˆԐˆԐˆ͈storeapp beginPrivresultpathCollabconvertPlatformPathToDIPathendPrivInviteinvtMessagemesgresponse˙˙˙˙ÁŁš $dialogpplatPathtoLoad';ł<ü ; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVi; ¸ ä:Q; ¸ äV5ä:WQ; ¸ ä:QYV]\WQT ¸ äVä:QˆѐԐˆѐ •ˆ ѐݐˆ ѐҐˆӈapp beginPriv browseForDocendPrivCollabconvertDIPathToPlatformPathcPathpathload˙˙˙˙ANDefaultInvite=šdocbUpdate decodedURLBÁBUT5 9âäTäTä:9âäTäTä:ˆÉ•ˆאˆ׈$externalANSendForReview CBBBRInvite˙˙˙˙CBdefš abÔB C\T'= TTˆˆĘш undefined˙˙˙˙Matrix2D÷šN abcdhv CkLaA9âäTä?ä:6QA9âäTä>ä:6QA9âäTä>ä:6QA9âäTä?ä:6QA9âäTä>ä:6QA9âäTä>ä:6QA‚6QA‚6QA‚6 QA‚6 QA‚6 QA‚6 QA‚6 Qˆېˆېˆېˆېˆېˆېˆ̘€|ˆ̘€‹ˆ̘€•ˆ̘€Ľˆ̘€Šˆ̘€­ˆ̘€ąˆaCBdefbcdhv fromRotated transformconcatinvert translatescalerotate˙˙˙˙źš 4/docpagecropBoxmediaBoxmbHeightmbWidthrotationmăCŁFi9âäTä>ä:UQT ¸ ä=äTä:WQT ¸ ä=äTä:WQV?7V×7WQV×7V>7WQT ¸ äTä:WQ;ä?ä>ä>ä?äV>7V>7äV×7V×7äRWQV×ZJA ¸ äV ¸ ä; ¸ ä?ä:ä: ¸ äVä>ä:ä:ŠVX´PA ¸ äV ¸ ä×; ¸ ä?ä:"ä: ¸ äVäVä:ä:RVXFA ¸ äV ¸ ä; ¸ ä?ä:"ä: ¸ ä>äVä:ä:A ¸ äVä:ˆؐÜÜĐĐÖđE•ˆ˙–K•ˆֈ"ő•ˆԈ퐈шCBdef getPageBoxCropMediagetPageRotationMatrix2DconcatrotateMathasin translate˙˙˙˙š [ptsresultnżFBH| ;äTŮäRWQT>7Ĺ=P>WQ.mVVA ¸ äTV7ä:8QV# ?WQQăVTŮ˙˙˙ɍ>WQnmVVA5TV7A5TV?7A58QVV?A5TV7A5TV?7A5 8QV×WQăV?TŮ˙˙˙‡V×ˆĚK•ˆ$."<–ˆݘ€ˆ"̘€‚˜€ˆؐˆ$nd~–ˆ™€…ˆđ˜€„ˆ&u€‡˜€„ˆ՘€‰ˆŒArraylengthobject transformachbdv}~2<˙˙˙˙Ţšm[HiI‹ ;äA5T5A5T5äA5T5A5T5äA5T5A5T5äA5T5A5T5äA5T5A5T5T5äA5T5A5T5T5äRˆ—ŕŕŕŕéíˆ*Matrix2Dabcdhv˙˙˙˙Úš0resultq‚IâJ• ;äRWQA5A5A5A5WQVĽVA5"V6QVA5V6QVA5V6QVA5"V6QVA5V5A5V5"6QVA5V5A5V5"6QVÎß •ˆ‹ ѐˆӐˆӐˆ‹ ѐˆ‹ 搈‹ 搐ˆŒMatrix2Dbcadhv˙˙˙˙Kš dxdyţJ[KĽ A ¸ ä;ä?ä>ä>ä?ä9âäTä>ä:ä9âäTä>ä:äRä:ˆ˙ˈIconcatMatrix2DCBdef˙˙˙˙Kš sxsysKĐKŠ A ¸ ä;ä9âäTä?ä:ä>ä>ä9âäTä?ä:ä>ä>äRä:ˆ˙ˈIconcatMatrix2DCBdef˙˙˙˙ŠštéKhL­ 9âäTä>ä:UQA ¸ ä;ä; ¸ äTä:ä; ¸ äTä:ä; ¸ äTä:"ä; ¸ äTä:ä>ä>äRä:ˆؐˆúˆ:÷ˆ"CBdefconcatMatrix2DMathcossin˙˙˙˙hasHankoTš €LűL´;5=DBQ;5=D,Q;5=DQ;5=ˆ˙ԈpapplanguageJPNKORCHSCHT˙˙˙˙ÁÄ š0ˆ arguments/Mfjş Š˙˙˙˙Q;5Ĺ=§;59âäY‚]\ä:6Q;59âäY‚]‚]‚] ‚] \ä:6Q;5; ¸ ä‚ä:6 QÂėˆŃ•Ő•Ő˜€ÜՐ•Ę˜€řʘ€ʘ€'՘€Žć˜€ˆNetHTTP undefinedDocCtrANTrustPropagateAllCreateWorkspaceWebDAVCreateCollectionPutFile DeleteFileEnumerateCollection runTaskSetapptrustedFunction˙˙˙˙Á”š#cURLparams˘MýOŔY=]T]9âäY‚]\ä:]\WQ; ¸ ä:Q; ¸ ä= ä:Q; 5 ¸ äVä:Q; ¸ ä:Q•ĘČË•Ů˜€ՈѐˆאˆڐˆшPROPFINDcVerbcURLANTrustPropagateAllresponseoHandlerapp beginPrivconsoleprintlnsending PROPFIND requestNetHTTPrequestendPriv˙˙˙˙Á-šmsgurieENxOÉ; ¸ ä=ä:Q; ¸ äTä:Q˜€ψאˆՈconsoleprintlnReceived response:˙˙˙˙Áš%cURL oDidHappenoAuthparamsMPbRŢY=]T]9âäYT]‚]\ä:]T]\WQ; ¸ ä:Q; 5 ¸ äVä:Q; ¸ ä:Q•ĘČË•ČÔ˜€ď͐ˆѐˆڐˆшMKCOLcVerbcURLANTrustPropagateAlloNotifyresponseoHandler oAuthenticateapp beginPrivNetHTTPrequestendPriv˙˙˙˙ÁRšmsgurieţPÄQçT;EQT5X• A5 ¸ äTä:QA5 ¸ äXČä:QŰ•ˆېˆ ֈ% undefinederroroNotifyonErroronCreateCollection˙˙˙˙Á•š&cURLoData oDidHappenoAuthparamsyR(TřY=]T]T]9âäYT]‚]\ä:]T]\WQ; ¸ ä:Q; 5 ¸ äVä:Q; ¸ ä:Q•ĘČČË•ČÔ˜€͐ˆѐˆڐˆшPUTcVerbcURLoRequestANTrustPropagateAlloNotifyresponseoHandler oAuthenticateapp beginPrivNetHTTPrequestendPriv˙˙˙˙Á@šmsgurieDSšST; A5 ¸ äTä:QA5 ¸ äXČä:QÉېˆ ֈ undefinedoNotifyonError onPutFile˙˙˙˙Áš$cURL oDidHappenoAuthparamsBTŰUY=]T]9âäYT]‚]\ä:]T]\WQ; ¸ ä:Q; 5 ¸ äVä:Q; ¸ ä:Q•ĘČË•ČÔ˜€͐ˆѐˆڐˆшDELETEcVerbcURLANTrustPropagateAlloNotifyresponseoHandler oAuthenticateapp beginPrivNetHTTPrequestendPriv˙˙˙˙Á@šmsgurieôTlUT; A5 ¸ äTä:QA5 ¸ äXČä:QÉېˆ ֈ undefinedoNotifyonError onDeleteFile˙˙˙˙Áý š,ČcURL oEnumeratoroAuthparams argumentsţUq`'  Š˙˙˙˙QY=]ˆ˙˙˙˙]9âäY; ¸ äˆ˙˙˙˙ä:]ˆ˙˙˙˙]‚]\ä:] ˆ˙˙˙˙] ZY= ] = ]\`\]\Š˙˙˙˙Q; ¸ ä:Q;5 ¸ äˆ˙˙˙˙ä:Q; ¸ ä:QÂė•ĘÎË•ßÎÔ˜€Î”ď˜€ˆˆѐˆŕˆшPROPFINDcVerbcURLANTrustPropagateAllutilcrackURLoBaseURL enumeratorresponseoHandler oAuthenticateDepthname1valueaHeadersapp beginPrivNetHTTPrequestendPriv˙˙˙˙Á ß š /Ć€ČresponseuriestringxmlDeclMatchermsgns responsesiresppropresourcehref argumentsÜVĂ_1 Š˙˙˙˙Q†ˆ˙˙˙˙;&A5 ¸ äˆ˙˙˙˙ä:Qh; ¸ äˆ˙˙˙˙ä:Š˙˙˙˙Q Š˙˙˙˙Qˆ˙˙˙˙ ¸ äˆ˙˙˙˙ä=ä:Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä ä=ä:Š˙˙˙˙Q9âäˆ˙˙˙˙ä:Š˙˙˙˙Q;ä= äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤ ­Š ˙˙˙˙QA55 ;A5 ¸ ä:Qˆ ˙˙˙˙KmMŠ ˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙7; ¤ 7; ¤7Š ˙˙˙˙QY\Š ˙˙˙˙Qˆ ˙˙˙˙; ¤7Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä>ä:=ĚA5;;6Q; 5=6Q;;-; 5=;=6Q; 5;6Q;;"; 5=;6Q; 5;6Q[A55;"ˆ ˙˙˙˙ˆ˙˙˙˙6Q(ˆ ˙˙˙˙ˆ˙˙˙˙ ¸ ä:6Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤ 76Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤"76!Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤$76#Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤&76%Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤(76'Qˆ ˙˙˙˙ˆ ˙˙˙˙; ¤*76)Qˆ ˙˙˙˙5); ¤+7;]+?>\nW˙˙˙˙Áčš'‚taskSet oTaskDialogŹ`PjŽYT]@]>]B]‚]‚]‚]‚]‚]‚] ‚] ‚] YT5 ] ZY=]=]ZY=]=]T5 ] ZY=]=]ZY=]X,]×]=]\`Y=]= ];5] \`\]\`Y=]=]= ]=!] \`\]\`\]\`\]\]"\WQ;# ¸$ ä:Q;# ¸% äVä:Q;# ¸& ä:QV5•Č–––Ę˜€žĘ˜€­Ę˜€ťĘ˜€Ăʘ€Éʘ€Îʘ€Őʘ€ܕ͐”•ĘĘ”•ĘĘÍ”•ĘĘ”•ĘČ—ϐ•ĘĘß˜€ý•ĘĘĘö˜€ ˆѐˆՐˆѐˆɈoTaskSetoDialog nCurrentTaskbResultgetCurrentTaskrunCurrentTask handleSuccess handleFailure initialize setTaskStatussetTaskProgresscnclcTitlenameviewtype align_fill alignmentclustertaskitem_id align_rowalign_children progress_barwidthheightprogbutton AnnotsString IDS_CANCELelements static_textdesc<STATUS> descriptionapp beginPriv execDialogendPriv˙˙˙˙Áš]aŸa™A55A57ˆӈ/oTaskSetaTasks nCurrentTask˙˙˙˙Á‰š"žaŚbž†A ¸ ä>ä:QA ¸ ä: ¸ äAäA5ä:QA ¸ ä×dä:QGĆvWQ; ¸ äVä:Q; ¸ äV5ä:Qǐ‘ˆϐˆᐈĐx•ĘˆՐˆڀ{–ˆsetTaskProgressgetCurrentTaskrunTaskoTaskSetconsoleprintlnstack˙˙˙˙eE˙˙˙˙Á•š Äbîc­A ¸ ä: ¸ äAäA5ä:QA 5# ?… 6QQA5A55Ů:AC6QA5 ¸ äY; 5 ] \ä:QA ¸ ä:QˆᐈՐ×5•ˆȐˆ퐐ˆ͈getCurrentTask onSuccessoTaskSet nCurrentTaskaTaskslengthbResultoDialogload AnnotsStringIDS_DONEcnclrunCurrentTask˙˙˙˙ÁZš e d¤dťT;EQT5;A ¸ äT5ä:QA ¸ ä: ¸ äAäA5ä:QÝ•ˆ֐ˆáˆ5 undefinedtext setTaskStatusgetCurrentTask onFailureoTaskSet˙˙˙˙Áš dialogżdeĂAT6QA ¸ ä:Qˆʐˆ͈oDialogrunCurrentTask˙˙˙˙Á"šstatus%e`eÉA5 ¸ äYT]\ä:Qˆáˆ$oDialogloaddesc˙˙˙˙ÁNš nPercentnSegLen nComplete€e9fÎ×dA55ŮWQA5T×dWQA5 ¸ äYVV]\ä:Q×Ńˆĺˆ1oTaskSetaTaskslength nCurrentTaskoDialogloadprog˙˙˙˙ÁšdialogNfxfŐT ¸ ä=ä:QˆՈendcncl˙˙˙˙ÁHĺ šHRM“ˆrmaNSinboxNSrtNSwrkflwNScReviewsIveSentURLcReviewsIveSentFeedLinkcReviewsIveReceivedURLcReviewsIveReceivedFeedLinkcReviewsSuperGroupURLcReviewsSuperGroupLinkcReviewsOfflineURLcReviewsOfflineFeedLink cServersURLcServersFeedLinkcServerItemLink rmaMethodrmaDocID rmaDocTitle rmaDocLinkrmaTormaCcrmaBcc rmaIsOfflinermaIsInitiated rmaIsOnline rmaLastSyncrmaLatestVersion rmaRemoteURL rmaLocationrmaLocationPathType rmaFolder rmaServersrmaHasConnectedrmaConnectionStatus rmaWorkspace inboxHiddenwrkflwIDwrkflwDocTitle wrkflwDocLinkwrkflwDeleteLink wrkflwTypewrkflwHasErrorwrkflwServerWorkflows serverErrorsREVIEW_STATE_ACTIVEREVIEW_STATE_ENDEDREVIEW_STATE_SUSPENDEDREVIEW_STATE_CORRUPTEDEVENT_LOGGING_CATEGORY_TRACKER!EVENT_LOGGING_SUBCATEGORY_REVIEWS LogAVUMEventReviewTrackerAddNewFolderRemoveMultipleSelectedReviews!SetReviewFolderForMultipleReviewsReviewTrackerRemoveFolder,ReviewTrackerRemoveFolderWhileMultipleSelectTrackerExpandSelectionTrackerCanExpandSelectionTrackerCollapseSelectionTrackerCanCollapseSelectionReviewHasDeadline ReviewHasCommentRepositoryIntact ReviewStateReviewTrackerRemoveReview,ReviewTrackerRemoveReviewWhileMultipleSelectoReviewTrackerUIoOfflineTrackerUIoServerStatusUIoRSSSuperGroupUIoReviewsSuperGroupUIoUberSummaryUI arguments˜joN ŠI˙˙˙˙Q;'= Í=Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Q=ˆ˙˙˙˙=ˆ˙˙˙˙Š˙˙˙˙Q= Š˙˙˙˙Q=ˆ˙˙˙˙=ˆ˙˙˙˙Š ˙˙˙˙Q= Š ˙˙˙˙Q=ˆ˙˙˙˙=ˆ ˙˙˙˙Š ˙˙˙˙Q= Š ˙˙˙˙Q=ˆ˙˙˙˙=ˆ ˙˙˙˙Š ˙˙˙˙Q= Š˙˙˙˙Q=ˆ˙˙˙˙=ˆ˙˙˙˙Š˙˙˙˙Q=ˆ˙˙˙˙=ˆ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙= Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š ˙˙˙˙Qˆ˙˙˙˙=Š!˙˙˙˙Qˆ˙˙˙˙=Š"˙˙˙˙Qˆ˙˙˙˙=Š#˙˙˙˙Qˆ˙˙˙˙= Š$˙˙˙˙Qˆ˙˙˙˙=!Š%˙˙˙˙Qˆ˙˙˙˙=Š&˙˙˙˙Qˆ˙˙˙˙=Š'˙˙˙˙Qˆ˙˙˙˙=Š(˙˙˙˙Qˆ˙˙˙˙="Š)˙˙˙˙Qˆ˙˙˙˙=#Š*˙˙˙˙Qˆ˙˙˙˙=$Š+˙˙˙˙Qˆ˙˙˙˙=%Š,˙˙˙˙Qˆ˙˙˙˙=&Š-˙˙˙˙Q='Š.˙˙˙˙Q=(Š/˙˙˙˙Q=)Š0˙˙˙˙Q=*Š1˙˙˙˙Q=+Š2˙˙˙˙Q=,Š3˙˙˙˙Q;- ¸. ä‚ä:Š4˙˙˙˙Q;- ¸. ä‚ä:Š5˙˙˙˙Q;- ¸. ä‚ä:Š6˙˙˙˙Q;- ¸. ä‚ä:Š7˙˙˙˙Q;- ¸. ä‚ä:Š8˙˙˙˙Q;- ¸. ä‚ä:Š9˙˙˙˙Q;- ¸. ä‚ä:Š:˙˙˙˙Q;- ¸. ä‚ä:Š;˙˙˙˙Q;- ¸. ä‚ä:Š<˙˙˙˙Q;- ¸. ä‚ ä:Š=˙˙˙˙Q;- ¸. ä‚ ä:Š>˙˙˙˙Q;- ¸. ä‚ ä:Š?˙˙˙˙Q;- ¸. ä‚ ä:Š@˙˙˙˙Q;- ¸. ä‚ ä:ŠA˙˙˙˙Q;- ¸. ä‚ä:ŠB˙˙˙˙QY;- ¸. ä‚ä:]/;- ¸. ä‚ä:]0‚]1‚]2‚]3‚]4‚]5‚]6‚]7‚]8‚]9‚]:‚];‚]<‚]=‚]>‚]?‚ ]@‚!]A‚"]B‚#]C‚$]D‚%]E‚&]F‚']G\ŠC˙˙˙˙QY‚(]H;- ¸. ä‚)ä:]/‚*]5‚+]6‚,]7‚-]2‚.]3‚/]8‚0]9‚1]:‚2];‚3]<‚4]=‚5]>‚6]?‚7]@\ŠD˙˙˙˙QY;- ¸. ä‚8ä:]/‚9]5‚:]7‚;]2‚<]3‚=]:‚>]<\ŠE˙˙˙˙QY;- ¸. ä‚?ä:]/‚@]5‚A]7‚B]:‚C]<\ŠF˙˙˙˙QY;- ¸. ä‚Dä:]/;- ¸. ä‚Eä:]1‚F]:‚G]<\ŠG˙˙˙˙QY;- ¸. ä‚Hä:]/‚I]5‚J]7‚K]:‚L]<\ŠH˙˙˙˙Q;- ¸I ä:Q; ¸J ä=KäˆC˙˙˙˙ä:Q; ¸J ä=LäˆD˙˙˙˙ä:Q; ¸J ä=MäˆE˙˙˙˙ä:Q; ¸J ä=NäˆF˙˙˙˙ä:Q; ¸J ä=OäˆG˙˙˙˙ä:Q; ¸J ä=PäˆH˙˙˙˙ä:Q;- ¸Q ä:QÂėˆĚ•ĎĎĎĎĎéĎéĎéĎéĎééŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮĎĎĎĎĎĎŕ˜€cŕ˜€œŕ˜€żŕ˜€Đŕ˜€çŕ˜€îŕ˜€őŕ˜€ţŕ˜€ŕ˜€ŕ˜€ŕ˜€ ŕ˜€)ŕ˜€Mŕ˜€b•Ű˜€cۘ€ƒĘ˜€ľĘ˜€şĘ˜€Ěʘ€×ʘ€ ʘ€ƒĘ˜€¤ĘĘ˜€°Ę˜€ľĘ˜€şĘ˜€żĘ˜€Ĺʘ€Ęʘ€Ďʘ€ďʘ€ôʘ€ʘ€ʘ€ʐʐŐ˜€9•Ę˜€cۘ€0ʘ€5ʘ€–Ę˜€ťĘ˜€Ŕʘ€ČʐĘ˜€Ôʘ€Ůʘ€Ţʘ€ăʘ€čʘ€íʘ€ň՘€ů•Ű˜€ lʘ€ ‘ʐĘ˜€ ˜Ę˜€ łĘŐ˜€ š•Ű˜€!ʐʐĘŐ˜€!•Ű˜€!‡Ű˜€!ŹĘŐ˜€!ł•Ű˜€$ńʐʐĘŐ˜€$úˆѐˆᐈᐈᐈᐈᐈᐈшRSS undefined(http://ns.adobe.com/Acrobat/RSS/Reviews/&http://ns.adobe.com/Acrobat/RSS/Inbox/)urn://ns.adobe.com/Acrobat/ReviewTracker/*http://ns.adobe.com/Acrobat/RSS/Workflows/>urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/MyReviews.rssacrobat:Inbox?container= &selectFeed=Gurn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ParticipantReviews.rssFurn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ReviewsSuperGroup.rssCurn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/OfflineReviews.rssBurn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/ReviewServers.rss:method:docID :docTitle:docLink:to:cc:bcc :isOffline :isInitiated :isOnline :lastSync:latestVersion :remoteURL :location:locationPathType:folder:serverReviews :hasConnected:connectionStatus :workspace:hidden :deleteLink:type :hasError:serverWorkflows :serverErrorsActiveEnded Suspended CorruptedTrackerReviewsapptrustedFunction createContextgetInitiateMenugetGroupContextMenu getFeedTip getItemTip getGroupTipgetFeedContextMenugetMultipleSelectContextMenugetItemContextMenusupportsMultipleSelection$isCompatibleForMultipleSelectionWith canDeleteFeed canDeleteFeedWhileMultipleSelect canDeleteItem onDeleteItem canDeleteItemWhileMultipleSelectonDeleteItemWhileMultipleSelectonDeleteAllMultipleSelectedcanDeleteGroup onDeleteGroup!canDeleteGroupWhileMultipleSelect onDeleteGroupWhileMultipleSelectcanChangeGroupscanModifyItemGroupmodifyItemGroup createToolBar beginPrivaddUI3urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker4urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker3urn://ns.adobe.com/Acrobat/Tracker/UI/ServerTracker3urn://ns.adobe.com/Acrobat/Tracker/UI/RSSSuperGroup7urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup1urn://ns.adobe.com/Acrobat/Tracker/UI/UberSummaryendPriv˙˙˙˙Áfš category subcategory eventNamelogEventParams$w4xWY\WQVT6QVT6QVT6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QĘˆ̐ˆ̐ˆ̐ˆѐˆՐˆшcatsubcatevntapp beginPrivCollabAVUMLogEventWrapperendPriv˙˙˙˙Á=šŤ;urlresultcurrentfolderbFoundimsgxx~c VQ; ¸ äTä:WQm; ¸ ä:Q; ¸ ä;5ä;5ä:WQ; ¸ ä:QV; E QV@ŠVŮ ?DQVŮ ×L; ¸ ä:Q; ¸ ä;5 ä?ä>ä:Q; ¸ ä:Q=BWQV; H>WQ!mVV7VWQV# ?WQQăVVŮ E QV ˙˙˙ĚVo;5 WQV ¸ ä äVä:WQ; ¸ ä:Q; ¸ äVä?ä>ä:Q; ¸ ä:Qu; ¸ ä:Q; ¸ äTäVä:Q‰4˙˙˙˙äˆ2˙˙˙˙äˆ3˙˙˙˙ä=ä:Q; ¸ ä:QVWQ  ăC˙˙ýîV”ؐ(€•ˆ™€iˆѐؐҐˆѐÔ€¤•ŰG•ˆѐˆŕˆ֐•É•ˆ $!9–ˆИ€}ˆ4̘€~˜€}ˆԈɘ€j•Îˆܐˆѐˆ٘€Šˆ֐ˆѐˆِˆ鐈ѐˆ—@ʘ€—@€hˆȘ€™ˆŒCollabgetReviewFoldersapp beginPrivresponse AnnotsStringIDS_REVIEW_PANEL_ADD_FOLDERIDS_REVIEW_PANEL_NEW_FOLDERendPriv undefinedlengthalertIDS_REVIEW_PANEL_FOLDER_LENGTHIDS_REVIEW_PANEL_FOLDER_EXISTSreplaceaddReviewFolder CreateFolder%s! 9˙˙˙˙ÁąšW. bIsInitiated msgboxtitleresultd~‚œ †Tn;5oQn;5oQ; ¸ ä:Q;5=;5;5 WQ; ¸ äYV] ;] ×] ×]\ä:WQ; ¸ ä:QV×c; ¸ ä:Q; ¸ ä:Q‰4˙˙˙˙äˆ2˙˙˙˙äˆ3˙˙˙˙ä=ä:Q; ¸ ä:QCB~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q9âä=Vä:Q9âäV5ä:Qǐ‘•ˆڐˆՐˆѐĐâűˆѐ•ˆѐˆѐˆ鐈ѐˆ’ˆz•Ęˆېˆڐˆِˆ؀{–ˆmsg AnnotsString-IDS_REVIEW_PANEL_CONFIRM_REMOVE_MULTIPLE_SENT/IDS_REVIEW_PANEL_CONFIRM_REMOVE_MULTIPLE_JOINEDapp beginPriv viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATalertcTitlecMsgnIconnTypeendPrivCollab&removeMultipleSelectedReviewsInTrackerRemoveMultipleconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙e6˙˙˙˙Áżš *feedURL reviewIDs folderNameN‚łƒż†; ¸ ä:Q; ¸ äTäTäTä:Q; ¸ ä:Q~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q9 â ä=Vä:Q9 â äV5ä:Qǐ‘ˆѐˆݐˆŃx•Ęˆېˆڐˆِˆ؀{–ˆapp beginPrivCollab!setReviewFolderForMultipleReviewsendPrivconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙eD˙˙˙˙ÁPš:$urlfoldermsg msgboxtitleresultöƒȆĐVQTˆ˙˙˙˙;5WQ;5WQV ¸ ä äTä:WQ; ¸ ä:Q;5=;5;5 WQ; ¸ äYV] V] ×] ×]\ä:WQ; ¸ ä:QV×i; ¸ ä:Q; ¸ äTäTä:Q‰4˙˙˙˙äˆ2˙˙˙˙äˆ3˙˙˙˙ä=ä:Q; ¸ ä:Q”Í•ˆӐˆΐˆܐˆѐĐâůˆѐ•ˆѐˆِˆ鐈ш AnnotsString+IDS_REVIEW_PANEL_CONFIRM_REMOVE_FOLDER_SENT-IDS_REVIEW_PANEL_CONFIRM_REMOVE_FOLDER_JOINEDreplaceapp beginPriv viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATalertcTitlecMsgnIconnTypeendPrivCollabremoveReviewFolder RemoveFolder %foldername%˙˙˙˙Á<š urlfolder‡„‡ç; ¸ ä:Q; ¸ äTäTä:Q; ¸ ä:Qˆѐˆِˆшapp beginPrivCollabremoveReviewFolderendPriv˙˙˙˙Á4š ćˆî; ¸ ä:Q; ¸ ä:Q; ¸ ä:Qˆѐˆѐˆшapp beginPrivCollabexpandTrackerSelectionendPriv˙˙˙˙Á5šurl canExpand[ˆ܈ő; ¸ ä:Q;5WQ; ¸ ä:QVˆѐΐˆѐˆŒapp beginPrivCollabcanExpandTrackerSelectionendPriv˙˙˙˙Á4š ‰t‰ţ; ¸ ä:Q; ¸ ä:Q; ¸ ä:Qˆѐˆѐˆшapp beginPrivCollabcollapseTrackerSelectionendPriv˙˙˙˙Á5šurl canCollapseš‰@Š; ¸ ä:Q;5WQ; ¸ ä:QVˆѐΐˆѐˆŒapp beginPrivCollabcanCollapseTrackerSelectionendPriv˙˙˙˙Á?š docID hasDeadline{Š‹; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:QVˆѐؐˆѐˆŒapp beginPrivCollabhasReviewDeadlineendPriv˙˙˙˙Á?š docIDhasCommentRepositoryIntactK‹ţ‹; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:QVˆѐؐˆѐˆŒ"app beginPrivCollab hasReviewCommentRepositoryIntactendPriv˙˙˙˙Á?š docID reviewState3ŒśŒ ; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:QVˆѐؐˆѐˆŒapp beginPrivCollabgetReviewStateendPriv˙˙˙˙ÁŤšX'itemcTypedocIDmsg isInitiated msgboxtitleresultůŒ֐) T5ˆ˙˙˙˙7WQVQT5ˆ˙˙˙˙7WQVEQT=;5WQ;5WQV ¸ ä äT5ä:WQ; ¸ ä:Q;5 = ;5 ;5 WQ; ¸ äYV]V]×]×]\ä:WQ; ¸ ä:QV×EQV'=|Tx=y z; ¸ äVä:Q; ¸ äVä:Q‰4˙˙˙˙äˆ2˙˙˙˙äˆ3˙˙˙˙ä=ä:QCBÖ”ÖŇ•ˆӐˆΐˆᐐˆѐĐâůˆѐĚˆĘw•cD‘mʐˆՐP•ˆՐP•ˆ鐈—ˆŠ Extension SharedReview AnnotsString+IDS_REVIEW_PANEL_CONFIRM_REMOVE_REVIEW_SENT-IDS_REVIEW_PANEL_CONFIRM_REMOVE_REVIEW_JOINEDreplaceTitleapp beginPriv viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATalertcTitlecMsgnIconnTypeendPriv undefinedOfflineCollabunregisterOfflineunregisterReviewRemove %reviewname%˙˙˙˙Ávš, itemcTypedocID,‘h’MT5ˆ˙˙˙˙7WQV'=STx=y z; ¸ äVä:Q; ¸ äVä:QCBÖˆĘN•cD‘mʐˆՐP•ˆՐP•ˆ—ˆŠ Extension undefinedOfflineCollabunregisterOfflineunregisterReview˙˙˙˙Á& ššÝ˜ˆresult argumentsВč(d  Š˙˙˙˙QY;5];5];5];5];5] = ] ;5 ] ;5];5];5];5];5];5];5];5];5];5 ]!;5"]#;5$]%;5&]';5(]);5*]+;5,]-;5.]/;50]1;52]3;54]5;56]7=8;59=:];;5<]=;5]>;5?]@;5A]B;5C]D;5E]F;5G]H;5I]J;5K]L;5M]N;5O]P;5Q]R;5S]T;5U]V;5W]X;5Y]Z;5[]\;5]]^;5_]`;5a]b;5c]d;5e]f;5g]h;5i]j;5k]l;5m]n;5o]p;5q]r;5s]t;5u]v;5w]x;5y]zY;5{]|;5}]~\]Y@]€@]\]‚Y@]ƒ\]„‚]…‚]†‚]‡‚]ˆY=‰]ŠZY=‹]Œ=]Ž=]ZY=‘]Œ=’]“\`\]”\`\]”\]•\Š˙˙˙˙Q;– ¸— ä:Qˆ˙˙˙˙;– ¸˜ äˆ˙˙˙˙5…ä:6…Qˆ˙˙˙˙;– ¸˜ äˆ˙˙˙˙5†ä:6†Q;– ¸™ ä:Qˆ˙˙˙˙Âė•ĎĎĎĎĎĘĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎŰĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎĎ•ĎŐ˜€ľ•–Ě˜€ť•ĚĘ˜€üʘ€ʘ€0ʘ€H•Ę”•ĘĘĘ”•Ęń˜€\ˆѐˆѐˆʈ AnnotsStringIDS_REVIEW_PANEL_MY_REVIEWScIveSentIDS_TRACKER_NO_SENT_REVIEWScNoIveSentReviews$IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS cIveReceivedcNoIveReceivedReviews%IDS_TRACKER_REVIEWS_SUPER_GROUP_TITLEcReviewsSuperGroupNBSP_PLACEHOLDERnbsp_placeholderIDS_TRACKER_NOT_APPLICABLEcNotApplicableIDS_TRACKER_NEW_BY_TOTAL cNewByTotalIDS_TRACKER_UNREAD_BY_TOTALcUnreadByTotalIDS_TRACKER_NEW_BY_ACTIVE cNewByActiveIDS_TRACKER_ACTIVE_BY_TOTALcActiveByTotal'IDS_TRACKER_EXTRA_INFO_DEADLINE_UPDATEDcDeadlineUpdated IDS_TRACKER_VIEW_COMMENTS_BUTTONcViewCommentsButtonIDS_TRACKER_REVIEWERS_LABELcReviewersLabelIDS_TRACKER_CLICKcClickIDS_TRACKER_HEREcHereIDS_TRACKER_TO_RESUME_ACTIVEcToResumeActiveIDS_TRACKER_HOW_DO_I_FIX_THIScHowDoIFixThis%IDS_TRACKER_CHANGES_SINCE_LAST_VIEWEDcChangesSinceLastReviewedIDS_TRACKER_CHANGES_NONEcNoneSinceLastViewed!IDS_TRACKER_CHANGES_NEW_REVIEWERScNewReviewersSinceLastViewed IDS_TRACKER_CHANGES_NEW_COMMENTScNewCommentsSinceLastViewed IDS_TRACKER_CHANGES_REVIEW_ENDEDcReviewHasEnded$IDS_SHARED_REVIEW_STATUS_NO_COMMENTS cNoCommentsIDS_SHARED_REVIEW_NO_DEADLINE cNoDeadline"IDS_SHARED_REVIEW_DEADLINE_UPDATEDcUpdated#IDS_SHARED_REVIEW_SENT_USING_SERVER cSentUsing"IDS_SHARED_REVIEW_EMAIL_ATTACHMENTcEmailAttachment(IDS_TRACKER_EDIT_FILE_LOCATION)cEditFileLocationIDS_TRACKER_NONEcNonecNoSentReviewsIDS_TRACKER_NO_JOINED_REVIEWScNoJoinedReviews IDS_TRACKER_NO_REVIEWS_IN_FOLDERcNoReviewsInFolder&IDS_TRACKER_UBER_TABLE_HEADER_FILENAMEcTableHeaderFileName&IDS_TRACKER_UBER_TABLE_HEADER_DEADLINEcTableHeaderDeadline*IDS_TRACKER_UBER_TABLE_HEADER_NUM_COMMENTScTableHeaderNumberOfComments+IDS_TRACKER_UBER_TABLE_HEADER_NUM_REVIEWERScTableHeaderNumberOfReviewers-IDS_TRACKER_UBER_TABLE_HEADER_UNREAD_BY_TOTALcTableHeaderUnreadByTotal*IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_TOTALcTableHeaderNewByTotal+IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_ACTIVEcTableHeaderNewByActiveIDS_TABLE_HEADER_EMAILcTableHeaderEmailIDS_SHARED_REVIEW_STATUS_NAMEcTableHeaderReviewerIDS_TABLE_HEADER_TITLEcTableHeaderTitleIDS_SHARED_REVIEW_STATUS_STATUScTableHeaderReviewerType!IDS_DEFINITION_LIST_FILE_LOCATIONcDefListFileLocationPropIDS_DEFINITION_LIST_STATUScDefListStatusProp IDS_DEFINITION_LIST_ACCESS_LEVELcDefListAccessLevelPropIDS_DEFINITION_LIST_ERRORcDefListErrorPropIDS_DEFINITION_LIST_SENTcDefListSentPropIDS_DEFINITION_LIST_RECEIVED_ONcDefListReceivedOnPropIDS_DEFINITION_LIST_DEADLINEcDefListDeadlinePropIDS_DEFINITION_LIST_COMMENTScDefListCommentsPropIDS_DEFINITION_LIST_REVIEWERScDefListReviewersProp"IDS_TRACKER_ACTION_CHANGE_DEADLINEcChangeDeadlineIDS_TRACKER_ACTION_ADD_DEADLINE cAddDeadlineIDS_TRACKER_ACTION_END_REVIEW cEndReview IDS_TRACKER_ACTION_DELETE_REVIEW cDeleteReview IDS_TRACKER_ACTION_ADD_REVIEWERS cAddReviewers*IDS_TRACKER_ACTION_NEW_WITH_SAME_REVIEWERScNewWithSameReviewers"IDS_TRACKER_ACTION_EMAIL_INITIATORcEmailInitiatorIDS_TRACKER_ACTION_EMAIL_ALLcEmailAllReviewersIDS_REVIEW_PANEL_LAST_RECVEBRIDS_REVIEW_PANEL_LAST_DOWNLOADBBR reviewSync cReviewID oReviewInfo currentReview aReviewInfocurrentReviewsInFeed showItemView showFeedViewonSelectionChanged handleLinkPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙Á[–# š[ďíáČdialogfeedLLINK selection extension cReviewID reviewInfo oReviewersoStatusoWorkflowStatenActiveReviewers aReviewers curReviewer nComments nNewCommentscNamecTitlegroupcTopArrowXHTML cSentRecvdcSentRecvdLink cReviewName cGroupLink bIsInitiatedbIsSharedReviewcVisibleSharedReviewOnlycVisibleNonSharedReviewOnlycVisibleInitiatedReviewOnlycReviewFileLinkcReviewViewCommentsLinkcReviewFilePath cReviewServer cReviewStatusbReviewIsEndedbIsReviewCorruptedbIsReviewSuspendedcClickHerePostStringcClickHereLinkcHowDoIFixThisLinkcVisibleClickHerePartcVisibleHowDoIFixThis cVisibleError cReviewErrorcSentRecvdDateTimecSentRecvdPropcSentRecvdUsingServer oAccessLevel cAccessLevelcVisibleAccessLevelcReviewDeadlinecReviewDeadlineUpdatecDeadlinePropValcVisibleDeadlinebIsCommentRepositoryDeletedcVisibleChangeDeadlinecVisibleAddDeadlinecReviewChangeDeadlineLinkcReviewAddDeadlineLinkbReviewHasEndedUpdatecReviewEndedStylecWorkflowsFileStatecVisibleEndReviewcReviewEndReviewLinkcPDFIconForReviewcReviewCommentscReviewReviewerscVisibleEmailInitiatorcVisibleAddReviewerscVisibleNewWithSameReviewerscReviewEmailInitiatorLinkcReviewEmailAllReviewersLinkcReviewAddReviewersLinkcReviewNewWithSameReviewersLink viewXHTMLbodyxhtmli tableXHTML rolePriority isRoleEqual isRoleLesserisReviewerLessercurrentcurValtrav evenOddRowcurReviewerIndex cComments cRowColortrReviewerXHTMLstm argumentsAĽDűżi Š^˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QA5ˆ˙˙˙˙6Q; ¸ ä:QA5; ¸ äˆ˙˙˙˙ä:6Q; ¸ ä:QA55Š ˙˙˙˙Qˆ ˙˙˙˙5 Š ˙˙˙˙QY; 5 ] ; 5]; 5]; 5]\Š ˙˙˙˙QY; 5]; 5]; 5]; 5]\Š ˙˙˙˙Q>Š ˙˙˙˙QZ\Š˙˙˙˙Qˆ ˙˙˙˙K mMŠ˙˙˙˙Qˆ˙˙˙˙= űˆ ˙˙˙˙ˆ˙˙˙˙75Š˙˙˙˙Qˆ ˙˙˙˙ˆ˙˙˙˙75Š˙˙˙˙Qˆ˙˙˙˙;"ˆ ˙˙˙˙# ?Š ˙˙˙˙QQ>Š˙˙˙˙Q>Š˙˙˙˙Qˆ ˙˙˙˙ˆ˙˙˙˙75 Š˙˙˙˙Qˆ˙˙˙˙;=Š˙˙˙˙Qˆ ˙˙˙˙ˆ˙˙˙˙75!Š˙˙˙˙Qˆ˙˙˙˙;=Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙Ů"Yˆ˙˙˙˙] ˆ˙˙˙˙]#‰˙˙˙˙ä=$ä=%9&â&äˆ˙˙˙˙ä:ä:]'ˆ˙˙˙˙]!ˆ ˙˙˙˙ˆ ˙˙˙˙ˆ˙˙˙˙75(7])ˆ˙˙˙˙]*ˆ˙˙˙˙]+ˆ ˙˙˙˙ˆ˙˙˙˙75,],\8QăL˙˙ýâN;- ¸. äYB]/\ä:Qˆ˙˙˙˙ˆ ˙˙˙˙7Š˙˙˙˙Q@Š˙˙˙˙Qˆ˙˙˙˙50ˆ˙˙˙˙A51 A52Š˙˙˙˙Qˆ˙˙˙˙50ˆ˙˙˙˙ˆ˙˙˙˙ˆ ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙53Š˙˙˙˙Qˆ˙˙˙˙;žż=4ż=5=6=7¨=8Š=9¨Ŕˆ ˙˙˙˙˛§Š=:ŔA5;ł=<==ż=5=6=7¨=8Š=9¨Ŕˆ˙˙˙˙˛§Š=:Ŕˆ˙˙˙˙ł=<==Ŕˆ˙˙˙˙ł=>°Š˙˙˙˙Q=?Š˙˙˙˙Qż=4ż=5=6=7¨=8Š=9¨Ŕˆ ˙˙˙˙˛§Š=:ŔA5;ł=<==ż=5=6=7¨=8Š=9¨Ŕˆ˙˙˙˙˛§Š=:Ŕˆ˙˙˙˙ł=<==ż=5=6=7¨=8Š=9¨Ŕˆ˙˙˙˙˛§Š=@¨=:Ŕˆ˙˙˙˙ł=<==Ŕˆ˙˙˙˙ł=>°Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7=AŠ˙˙˙˙Q=BŠ˙˙˙˙Q=BŠ˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Q=Š˙˙˙˙Q=BŠ˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Q=Cˆ˙˙˙˙=DŠ˙˙˙˙Q=Cˆ˙˙˙˙=EŠ ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š!˙˙˙˙Qˆ ˙˙˙˙5FŠ"˙˙˙˙Qˆ.˙˙˙˙Š#˙˙˙˙QBŠ$˙˙˙˙Qˆ˙˙˙˙>ˆ ˙˙˙˙5GŠ$˙˙˙˙Qˆ$˙˙˙˙ˆ/˙˙˙˙Š#˙˙˙˙QBŠ%˙˙˙˙Qˆ˙˙˙˙>ˆ ˙˙˙˙5HŠ%˙˙˙˙Qˆ%˙˙˙˙ˆ1˙˙˙˙Š#˙˙˙˙QBŠ&˙˙˙˙Qˆ˙˙˙˙>ˆ ˙˙˙˙5IŠ&˙˙˙˙Qˆ&˙˙˙˙ˆ0˙˙˙˙Š#˙˙˙˙Q=Š'˙˙˙˙Q=Š(˙˙˙˙Q=Š)˙˙˙˙Q=BŠ*˙˙˙˙Q=BŠ+˙˙˙˙Qˆ#˙˙˙˙ˆ0˙˙˙˙B=Jˆ˙˙˙˙Š(˙˙˙˙QA5KŠ'˙˙˙˙Q=Š*˙˙˙˙Q;ˆ#˙˙˙˙ˆ1˙˙˙˙#=LŠ)˙˙˙˙Q=Š+˙˙˙˙Q=BŠ,˙˙˙˙Q=Š-˙˙˙˙Qˆ˙˙˙˙Ŕˆ ˙˙˙˙5MŠ-˙˙˙˙Qˆ-˙˙˙˙=”ˆ-˙˙˙˙ ¸N ä ä;5O ¸P ä=Qä:@; 5R; 5Sä:Š-˙˙˙˙QA5T=Uˆ-˙˙˙˙Š-˙˙˙˙Q=Š,˙˙˙˙Qˆ-˙˙˙˙=A5VŠ-˙˙˙˙Q=Š.˙˙˙˙Q=Š/˙˙˙˙Qˆ˙˙˙˙2ˆ ˙˙˙˙5WŠ.˙˙˙˙QA5XŠ/˙˙˙˙Q-A5YŠ/˙˙˙˙Qˆ ˙˙˙˙5ZŠ.˙˙˙˙QA5[Š0˙˙˙˙Qˆ0˙˙˙˙ ¸N ä=\äˆ.˙˙˙˙ä:Š0˙˙˙˙Qˆ˙˙˙˙8ˆ0˙˙˙˙ ¸N ä=]äˆ"˙˙˙˙ä:Š0˙˙˙˙Q„ˆ˙˙˙˙ˆ˙˙˙˙7=^5ˆ0˙˙˙˙ ¸N ä=]äA5_ä:Š0˙˙˙˙Q6ˆ˙˙˙˙ˆ˙˙˙˙7=`ˆ.˙˙˙˙Š0˙˙˙˙QY; 5a]b; 5c]d\Š1˙˙˙˙Q=Š2˙˙˙˙Q=BŠ3˙˙˙˙Qˆ˙˙˙˙]ˆ ˙˙˙˙5eŠ2˙˙˙˙Qˆ2˙˙˙˙=f1ˆ1˙˙˙˙ˆ2˙˙˙˙7Š2˙˙˙˙Q=Š3˙˙˙˙Q=Š4˙˙˙˙Q=Š5˙˙˙˙Q=Š6˙˙˙˙Qˆ˙˙˙˙Dˆ ˙˙˙˙5gŠ4˙˙˙˙Qˆ˙˙˙˙ ˆ ˙˙˙˙5hŠ5˙˙˙˙Qˆ˙˙˙˙= =BŠ7˙˙˙˙Qˆ5˙˙˙˙=ˆ5˙˙˙˙Š6˙˙˙˙QAˆ4˙˙˙˙=ˆ4˙˙˙˙Š6˙˙˙˙QA5iŠ6˙˙˙˙Qˆ ˙˙˙˙5jŠ8˙˙˙˙Q=BŠ9˙˙˙˙Q=BŠ:˙˙˙˙Qˆ8˙˙˙˙ fˆ4˙˙˙˙='ˆ˙˙˙˙=Š9˙˙˙˙Q0ˆ˙˙˙˙"ˆ˙˙˙˙=Š:˙˙˙˙Q=kˆ˙˙˙˙Š;˙˙˙˙Q=lˆ˙˙˙˙Š<˙˙˙˙QBŠ=˙˙˙˙Q=Š>˙˙˙˙Qˆ#˙˙˙˙ˆ/˙˙˙˙aˆ ˙˙˙˙5mŠ?˙˙˙˙Qˆ?˙˙˙˙ˆ/˙˙˙˙Š=˙˙˙˙Qˆ=˙˙˙˙=n =Š>˙˙˙˙Q=BŠ@˙˙˙˙Qˆ˙˙˙˙EQˆ˙˙˙˙#ˆ$˙˙˙˙ =Š@˙˙˙˙Q=oˆ˙˙˙˙ŠA˙˙˙˙Qˆ˙˙˙˙EQˆ$˙˙˙˙=p =qŠB˙˙˙˙Q=ŠC˙˙˙˙Qˆ˙˙˙˙‡A5rŠC˙˙˙˙QˆC˙˙˙˙ ¸N ä ä=ˆ ˙˙˙˙5ä:ŠC˙˙˙˙QˆC˙˙˙˙ ¸N ä ä=ˆ ˙˙˙˙5ä:ŠC˙˙˙˙Q=ŠD˙˙˙˙Qˆ˙˙˙˙‚A5sŠD˙˙˙˙QˆD˙˙˙˙ ¸N ä ä=ˆ ˙˙˙˙5tä:ŠD˙˙˙˙QˆD˙˙˙˙ ¸N ä ä=ˆ ˙˙˙˙ä:ŠD˙˙˙˙Q=BŠE˙˙˙˙Qˆ˙˙˙˙ =ŠE˙˙˙˙Q=BŠF˙˙˙˙Qˆ˙˙˙˙E Qˆ˙˙˙˙ DQˆ$˙˙˙˙ =ŠF˙˙˙˙Q=BŠG˙˙˙˙Qˆ˙˙˙˙EQˆ˙˙˙˙=ŠG˙˙˙˙Q=uˆ˙˙˙˙ŠH˙˙˙˙Q=vˆ˙˙˙˙ŠI˙˙˙˙Q=wˆ˙˙˙˙ŠJ˙˙˙˙Q=xˆ˙˙˙˙ŠK˙˙˙˙Qż=yż=zż={ż=|ż=5=6=9¨Ŕˆ ˙˙˙˙˛§Š=}¨Ŕˆ!˙˙˙˙˛§Š=7¨ŔˆB˙˙˙˙˛§Š=:ż=~ŔA5ł=€=<==‚ż=ƒż=„ż=…ż=†ż=‡ŔA5ˆł=€=‰=Šż=‹ż=5=6=9¨Ŕˆ˙˙˙˙˛§Š=:ż=ŒŔˆ!˙˙˙˙ł=€=<==Ž=ż=…ż=†ż=‡ŔA5ł=€=‰=Šż=‹ż=‡ż=5=‘=’¨Ŕˆ>˙˙˙˙˛§Š=:Ŕˆ ˙˙˙˙ˆ#˙˙˙˙7ł=€=Uż=5=‘=’¨Ŕˆ+˙˙˙˙˛§Š=:ż=5=6=’¨=“Š=9¨Ŕˆ)˙˙˙˙˛§Š=:=”ŔA5•ł=–=€=Uż=5=‘=’¨Ŕˆ*˙˙˙˙˛§Š=:=”ŔA5—ł=Uż=5=6=’¨=“Š=9¨Ŕˆ(˙˙˙˙˛§Š=:ŔA5˜ł=<=UŔˆ'˙˙˙˙ł=™=€==Ž=ż=5=š=’¨Ŕˆ,˙˙˙˙˛§Š=:=Šż=†ŔA5Vł=‰=Šż=›ż=œŔˆ-˙˙˙˙ł=€==Ž=ż=…ż=†ż=‡Ŕˆ/˙˙˙˙ł=€=‰=Šż=‹ż=‡Ŕˆ0˙˙˙˙ł=€==Ž=ż=5=š=’¨Ŕˆ3˙˙˙˙˛§Š=:=Šż=†ż=‡ŔA5ł=€=‰=Šż=‹ż=‡Ŕˆ2˙˙˙˙ł=€==Ž=ż=5=š=’¨Ŕˆ7˙˙˙˙˛§Š=:=Šż=†ż=‡ŔA5žł=€=‰=Šż=‹ż=‡Ŕˆ6˙˙˙˙ł=€==Ž=Ÿ== ż=5=Ą=’¨Ŕˆ˙˙˙˙˛§Š=˘¨=:=Łż=5=6=’¨Ŕˆ9˙˙˙˙˛§Š=9¨Ŕˆ;˙˙˙˙˛§Š=¤¨=:ż=ŒŔA5Ľł=€=<=Łż=5=6=’¨Ŕˆ:˙˙˙˙˛§Š=9¨Ŕˆ<˙˙˙˙˛§Š=¤¨=:ż=ŒŔA5Śł=€=<=Łż=5=6=’¨Ŕˆ@˙˙˙˙˛§Š=9¨ŔˆA˙˙˙˙˛§Š=§¨=:ż=ŒŔA5¨ł=€=<==Šż=5=‘=’¨Ŕˆ˙˙˙˙˛§Š=:=Ş= ż=ŤŔA5Vł=Ź=­ż=|ż=ŽŔA5Żł=€== ż=ƒż=5=°=7¨=ąŠ=’¨Ŕˆ˙˙˙˙˛§Š=:=˛ż=…ż=†ż=‡ŔA5łł=€=‰=Šż=‹ż=‡ŔˆC˙˙˙˙ł=€==Ž=ż=…ż=†ż=‡ŔA5´ł=€=‰=Šż=‹ż=‡ŔˆD˙˙˙˙ł=€==Ž=Ÿ==Šż=5=‘=’¨Ŕˆ˙˙˙˙˛§Š=:=Ş= ż=|ż=5=6=’¨ŔˆE˙˙˙˙˛§Š=9¨ŔˆH˙˙˙˙˛§Š=ľ¨=:ż=ŒŔA5śł=€=<=Łż=5=6=9¨ŔˆI˙˙˙˙˛§Š=ˇ¨=:ż=ŒŔA5¸ł=€=<=Łż=5=6=’¨ŔˆF˙˙˙˙˛§Š=9¨ŔˆJ˙˙˙˙˛§Š=š¨=:ż=ŒŔA5şł=€=<=Łż=5=6=’¨ŔˆG˙˙˙˙˛§Š=9¨ŔˆK˙˙˙˙˛§Š=ť¨=:ż=ŒŔA5źł=€=<==˝=žż=żż=Ŕż=5=š=Á¨Ŕ;²§Š=:=˛ż=ĂŔA5Äł=‰=˛ż=†ŔA5Ĺł=‰=˛ż=†ŔA5Ćł=‰=˛ż=5=Ç=’¨Ŕˆ˙˙˙˙˛§Š=:ż=ČŔA5Éł=ĘŔA5Ëł=Ě=‰=˛ż=†ŔA5Íł=‰=Î=Ď=Đ=Ń=Ň°ŠL˙˙˙˙Q@ŠM˙˙˙˙Q;Óä=ÔäRŠN˙˙˙˙QˆL˙˙˙˙ˆN˙˙˙˙¤Ő­KDmMŠO˙˙˙˙QˆO˙˙˙˙ŁÖŚ7=ŐˆO˙˙˙˙ŠM˙˙˙˙Q ăL˙˙˙žNˆM˙˙˙˙ ¸× äˆ˙˙˙˙ä:Q@ŠP˙˙˙˙Q;Óä=ÔäRŠN˙˙˙˙QˆL˙˙˙˙ˆN˙˙˙˙¤°­KDmMŠO˙˙˙˙QˆO˙˙˙˙ŁÖŚ7=ŘˆO˙˙˙˙ŠP˙˙˙˙Q ăL˙˙˙žNY×] ×]×]?]Ů\ŠQ˙˙˙˙Q‚ŠR˙˙˙˙Q‚ŠS˙˙˙˙Q‚ŠT˙˙˙˙Q?ŠU˙˙˙˙Qmˆ˙˙˙˙ˆU˙˙˙˙7ŠV˙˙˙˙QˆU˙˙˙˙?ŠW˙˙˙˙Q‚m‰T˙˙˙˙äˆ˙˙˙˙ˆW˙˙˙˙7äˆV˙˙˙˙ä:3ˆ˙˙˙˙ˆW˙˙˙˙?ˆ˙˙˙˙ˆW˙˙˙˙78Q /ˆW˙˙˙˙# ?ŠW˙˙˙˙QQăˆW˙˙˙˙>˙˙˙vˆW˙˙˙˙?ˆU˙˙˙˙$ˆ˙˙˙˙ˆW˙˙˙˙?ˆV˙˙˙˙8QˆU˙˙˙˙# ?ŠU˙˙˙˙QQăˆU˙˙˙˙ˆ˙˙˙˙Ů"˙˙ţÍBŠX˙˙˙˙Q>ŠY˙˙˙˙QOmˆ˙˙˙˙ˆY˙˙˙˙7Š˙˙˙˙QA5ڊZ˙˙˙˙Qˆ˙˙˙˙5, =ŠZ˙˙˙˙Q8=ˆ˙˙˙˙5+=Űˆ˙˙˙˙5*ŠZ˙˙˙˙QˆX˙˙˙˙ ŠX˙˙˙˙QˆX˙˙˙˙;Ü ;݊[˙˙˙˙Qż=5=š=Á¨Ŕˆ[˙˙˙˙˛§Š=:=Ţż=‹ż=5=6=9¨Ŕˆ˙˙˙˙5'˛§Š=:ż=ŒŔˆ˙˙˙˙5#ł=€=<==Ţż=‹Ŕˆ˙˙˙˙5 ł==Ţż=‹Ŕˆ˙˙˙˙5!ł==Ţż=5=ß=’¨Ŕˆ˙˙˙˙˛§Š=:ż=ČŔˆZ˙˙˙˙ł=Ě==Ţż=‹Ŕˆ˙˙˙˙5)ł==ŕ°Š\˙˙˙˙QˆP˙˙˙˙ ¸á äˆ\˙˙˙˙ä:QˆY˙˙˙˙# ?ŠY˙˙˙˙QQăˆY˙˙˙˙ˆ˙˙˙˙Ů"˙˙ýœ;â ¸ă äˆL˙˙˙˙ ¸ä ä: ¸N ä ä=ĺä:ä=ćä:Š]˙˙˙˙Q; ¸ ä:Q; ¸ç äˆL˙˙˙˙ ¸ä ä: ¸N ä ä=ĺä:ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸č äYˆ]˙˙˙˙]é\ä:QœĆvŠQ;ę ¸ë ä=ěˆä:Q;ę ¸ë äˆ5íä:Q9îâîä=ěˆä:Q9îâîäˆ5íä:QÇÂė‘ĎĎŢŘÝˆՐˆѐˆ搈ѐŐŘ•ĎĎĎÚ˜€ސ•ĎĎĎÚ˜€çːϐË0€#ѐĎ•8•ââĎ•ˆݐˆːˆːâĎ•ˆϐâĎ•ˆϐˆא•ÎÎřÎçÎÎé˜€ˆސÝËŘ ŕŘ搐ؐĎ€š•ˆ–˙˙ߐ֘€&Ďˆ–˙˙˙đŃÝăĎĎÉ•ˆԐˆϐĎÉ•ˆϐßßÝŘÓËÉ•ˆؐÉ•ˆӐËÉ•ˆؐÉ•ˆӐËÉ•ˆؐÉ•ˆӐĎĎĎĎĎÓ=•ˆِˆАˆԐÓ•ˆϐˆϐĎĎÉ•ˆؐĎ•ˆô쐈ŕˆϐĎ•ˆАĎĎÉ-•ˆؐˆՐˆАˆؘ€‹ĐˆîÉ3•ˆóŮ0•ˆđŮ•ˆӐ•ĎÚĎĎÉ•ˆؐĎ•ˆݐˆϘ€¨ĎĎĎÉ•ˆؐˆ Ę•ˆؐÉ ސĎ•ˆؐĎ•ˆؐˆАŘĎĎˆ Ę•Ď"•É•ˆ ԐÉ•É•ˆ ϐŮŮËĎÓ•ŘˆݐˆÉ ސĎŘ•ˆ Ę•ˆϐŮŘ ސĎÉ•ˆАˆůˆůĎÉ•ˆАˆůˆôĎˆ Ę•ˆϐĎĎˆЈĘ•ˆϐϐŘ•ˆϐِِِِ™€ •–‘•–˙鐗––––é˙Ӑ͐–é˙˙˙˙˙ôÍëÜćÍ–ěćÍëéćÍëéć——͐ń˙â˙â˙ܐ͐ĺÍÖ––֐͐–÷–éćÍ–éć——͐ĺÍ–˙â˙ϐ˙â˙ܐ—Í––çÜÜÜ˙ؐ֐————ѐËÚÚ0GѐÉˆ Í•ˆӐ@Θ€ƒˆߐËÚÚ0GѐÉˆ Í•ˆӐ@Θ€”•———ѐĎ˜€¤Ď˜€ŹĎ˜€žˆ Ę €€€8–ˆ™€żÝŐ €‚j€–ˆ™€Ɛě.•ˆ @€ňؘ€˘€ň Ҙ€ÎŐ•ˆߘ€žˆ8ؘ€Ϙ€žˆߘ€Óːˆ Ę €O€7€i–ˆ™€֐ݐĐˆ Ď•ˆԐˆ󐐈ˆ ԐÉ ސë˙ăää˙̐ސѐˆߘ€ՈJؘ€ꘀՈ$ߘ€í˙͐ˆѐˆýˆѐˆęx•Đˆᐈŕˆߐˆހ{–ˆ getSelection Extension currentReview cReviewIDapp beginPriv oReviewInfoCollab getReviewInfoendPriv oReviewers AnnotsString#IDS_TRACKER_REVIEWER_TYPE_INITIATOR Initiator"IDS_TRACKER_REVIEWER_TYPE_REQUIREDRequired"IDS_TRACKER_REVIEWER_TYPE_OPTIONALOptionalIDS_TRACKER_REVIEWER_TYPE_ADDED UninvitedIDS_WORKFLOW_STATE_INPROGRESSActiveIDS_WORKFLOW_STATE_ENDEDEndedIDS_WORKFLOW_STATE_SUSPENDED SuspendedIDS_WORKFLOW_STATE_CORRUPTED Corrupted nComments nNewComments undefinedcNamecTitlelengthcEmailacrobatinternal?mailto=escape cEmailLinkcStatuscRolenTotalCommentsnUnreadCommentsbHasParticipatedXML setSettingsignoreCommentsURLcIveSent cIveReceivedTitle#<div class="bread_crumb"> <aclassblueLinkhref>cReviewsSuperGroup</a> >  </div>acrobat:Inbox?gotoLevel=1style="unicode-bidi: embed;" SharedReviewdisplay: none;acrobat:Review?open=&via=filePathLink&via=viewCommentsLinkcServerbIsEnded bIsCorrupted bIsSuspendedacrobat:Review?resume=cToResumeActive+acrobat:Review?showHelpForCorruptedWorkflowcErrorreplace viewerTypematchReaderIDS_PRODUCT_VARIANT_READERIDS_PRODUCT_VARIANT_ACROBATcDefListErrorProp nbsp_placeholdercSentcDefListSentPropcDefListReceivedOnProp cReceived cSentUsing%dateTimeSentRecvd% %serverName%EBRcEmailAttachmentBBR+IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS_SRNone,IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS_SR Restricted cAccessLevelInvalid cDeadlinecDeadlineUpdatecNonebIsCommentRepositoryDeletedacrobat:Review?changeDeadline=acrobat:Review?addDeadline=cWorkflowsFileStatefont-weight: bold;acrobat:Review?end= ended-iconic pdf-iconic cNewByTotal cNewByActive nNewReviewersacrobat:Review?emailInitiator=!acrobat:Review?emailAllReviewers=acrobat:Review?invite=0acrobat:Review?newSharedReviewWithSameReviewers=ń<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> P<div id="pg_sent_details" style="margin-left: 35px;"> <br/> !<div class="buttons"> titleY<span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;">cViewCommentsButton</span> </div>' <br/> ,<div style="margin-left: -6px;"> 5<table class="definitionListTableSmall"> <tr> <th><span class="dontWrap">cDefListFileLocationProp</th> <td><span class="blueLink"></td> </tr> cDefListStatusPropspanstyle color:blue;(cHowDoIFixThis)</a>cClickcHere)</span>tr[<td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif"/><span style="color:red;">cDefListAccessLevelPropcDefListDeadlineProp </table> divclass="buttons" class="change-deadline-iconic"cChangeDeadline cAddDeadlineclass="end-review-iconic" cEndReview # <br/> </span><div class="dottedLine"></div>' <br/> G<span class="reviewers-iconic" style="font-weight:bold; font-size:12;">cReviewersLabeltabledefinitionListTableSmall cDefListCommentsPropcDefListReviewersPropclass="email-initiator-iconic"cEmailInitiatorclass="email-all-iconic"cEmailAllReviewersclass="add-reviewer-iconic" cAddReviewers$class="review-same-reviewers-iconic"cNewWithSameReviewers! <br/> </div> .<div class="borderedDivDetailPage"> \<table id="reviewerList" class="borderedTable" cellpadding="15" cellspacing="0"> bgcolorcTableHeaderColor<th style="margin-left: 10px;">cTableHeaderEmailcTableHeaderReviewercTableHeaderTitleth<center>cTableHeaderNumberOfComments<br/>cTableHeaderNewByTotal </center>cTableHeaderReviewerType </tr> </table> </div> </body> </html> Namespacehttp://www.w3.org/1999/xhtmlbodyid prependChild reviewerListAddedcUnreadByTotal / cTableOddRowColorcTableEvenRowColor td </tr> appendChildutilstreamFromString toXMLString&nbsp;utf-8saveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙Á šs€ĽŸĽĂ;T7ˆʈ AnnotsString˙˙˙˙ÁšschemesşĽëĽÄT=Tˆ Έ:˙˙˙˙Á+š role1role2nRole1nRole2nďđœˆQ˙˙˙˙T7WQˆQ˙˙˙˙T7WQVVŃŃˆȈ˙˙˙˙Á+š role1role2nRole1nRole2:đŇđ¤ˆQ˙˙˙˙T7WQˆQ˙˙˙˙T7WQVVŃŃˆȈ˙˙˙˙Áš reviewer1 reviewer2emailID1emailID2ńŔňŹ ‰S˙˙˙˙äT5äT5ä: ?g‰R˙˙˙˙äT5äT5ä:@T5 ¸ ä:WQT5 ¸ ä:WQVV>ŕ•ˆ—ŕ;•××ˆ͐ˆŠ cRolecEmail toLowerCase˙˙˙˙e%cProductVariant%%new%%total%%new%%active%NBSP_PLACEHOLDERNBSP_PLACEHOLDERň"°i]8–­GGž#˙˙˙˙Á&: š&€Í @ČdialogfeedLLINK extensionitemsgroup aReviewListiitemdocID reviewInfobIsSharedReview bIsInitiatednActiveReviewers oReviewers curReviewer nComments cSentRecvdcSentRecvdLinkcNoReviewsInFeedcFeedIconClass viewXHTMLcTopArrowXHTMLbodyxhtml borderedDiv tableXHTMLcurrentcurValtrav evenOddRow reviewIndex curReview cComments cReviewers cRowColor reviewXHTMLstm argumentscűŚ"ü2 Š)˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙Q; ¸ äYB]\ä:QZ\Š ˙˙˙˙Qˆ˙˙˙˙ ¸ ä:)ˆ˙˙˙˙ ¸ ä=ä:Š˙˙˙˙QA55 f>Š ˙˙˙˙Q5mA55 ˆ ˙˙˙˙@8Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙A55 Ů ˙˙˙´A5; äR6 Qˆ˙˙˙˙KąmMŠ ˙˙˙˙Qˆ˙˙˙˙ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ%˙˙˙˙7 Dˆ˙˙˙˙; E(Qˆ ˙˙˙˙5ˆ ˙˙˙˙7ˆ˙˙˙˙ @Š ˙˙˙˙Q; ¸ ä:Q; ¸ äˆ ˙˙˙˙ä:Š ˙˙˙˙Q; ¸ ä:Qˆ ˙˙˙˙@ A55 ¸ äˆ ˙˙˙˙ä:Qˆ ˙˙˙˙5ˆ˙˙˙˙7=Š˙˙˙˙Qˆ ˙˙˙˙5ˆ˙˙˙˙7Š˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů Yˆ ˙˙˙˙5]ˆ˙˙˙˙ˆ ˙˙˙˙5ˆ ˙˙˙˙5]ˆ˙˙˙˙ˆ ˙˙˙˙5 =]ˆ˙˙˙˙ˆ ˙˙˙˙5>]ˆ˙˙˙˙ˆ ˙˙˙˙5>]>]ˆ˙˙˙˙ˆ ˙˙˙˙5 >] ˆ˙˙˙˙ˆ ˙˙˙˙5!B]!‰˙˙˙˙ä="ä=#ˆ˙˙˙˙=$ˆ˙˙˙˙5%=&ˆ ˙˙˙˙5'ä:](ˆ˙˙˙˙])\8Qˆ˙˙˙˙>Š˙˙˙˙Qˆ ˙˙˙˙5*Š˙˙˙˙Qˆ˙˙˙˙KxmMŠ˙˙˙˙Qˆ˙˙˙˙= Sˆ˙˙˙˙ˆ˙˙˙˙75Š˙˙˙˙Qˆ˙˙˙˙; ˆ˙˙˙˙# ?Š˙˙˙˙QQăL˙˙˙ŠNˆ ˙˙˙˙ˆ ˙˙˙˙Ů ?7ˆ˙˙˙˙6Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů ?75=+ˆ ˙˙˙˙ˆ ˙˙˙˙Ů ?7A5+6Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů ?75!=>ˆ ˙˙˙˙ˆ ˙˙˙˙Ů ?7 5=,A5-=.6QăL˙˙űQNˆ˙˙˙˙5%ˆ˙˙˙˙A5/ A50Š˙˙˙˙Qˆ˙˙˙˙5%ˆ˙˙˙˙ˆ˙˙˙˙ˆ ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙A51Š˙˙˙˙Q=ˆ˙˙˙˙5%ˆ˙˙˙˙A52 A53Š˙˙˙˙Qˆ˙˙˙˙5%ˆ˙˙˙˙=4 =5Š˙˙˙˙Qˆ˙˙˙˙Qˆ ˙˙˙˙Ů >Ÿż=6ż=7ż=8ż=9=:=;¨Ŕˆ˙˙˙˙˛§Š=<ż==Ŕˆ˙˙˙˙ł=>=>=?ż=@Ŕˆ˙˙˙˙ł=A=B=C=D°Š˙˙˙˙Qˆż=Eż=7ż=Fż=Gż=9=:=;¨Ŕˆ˙˙˙˙˛§Š=<ż==Ŕˆ˙˙˙˙ł=>=>=H=B=C=D°Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙; uż=Iż=9=J=K¨Ŕˆ ˙˙˙˙˛§Š=<ż=LŔA5Mł=>=N=OŔˆ˙˙˙˙ł=P°Š˙˙˙˙Qťż=Iż=9=J=K¨Ŕˆ ˙˙˙˙˛§Š=<ż=LŔA5Mł=>=N=Oż=9=J=K¨Ŕˆ˙˙˙˙˛§Š=<ż=LŔˆ˙˙˙˙ł=>=N=OŔˆ˙˙˙˙ł=P°Š˙˙˙˙Q@Š˙˙˙˙Q;Qä=RäRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤S­KDmMŠ ˙˙˙˙Qˆ ˙˙˙˙ŁTŚ7=Sˆ ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNˆ˙˙˙˙ ¸U äˆ˙˙˙˙ä:Qˆ ˙˙˙˙Ů >b@Š˙˙˙˙Q;Qä=RäRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤V­KDmMŠ ˙˙˙˙Qˆ ˙˙˙˙ŁTŚ7=Wˆ ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNż=Xż=9=Y=Z¨Ŕ;[˛§Š=<=\ż=]ŔA5^ł=_=\ż=`ŔA5ał=_=\ż=`ż=bŔA5cł=dŔA5eł=f=_=\ż=`ż=bŔA5gł=dŔA5hł=f=_=i=j°Š˙˙˙˙Qˆ˙˙˙˙ ¸k äˆ˙˙˙˙ä:Q?Š˙˙˙˙Qmˆ ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙?Š ˙˙˙˙Q}mˆ ˙˙˙˙ˆ ˙˙˙˙75ˆ˙˙˙˙5].ˆ ˙˙˙˙ˆ ˙˙˙˙?ˆ ˙˙˙˙ˆ ˙˙˙˙78Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙>˙˙˙{ˆ ˙˙˙˙?ˆ˙˙˙˙$ˆ ˙˙˙˙ˆ ˙˙˙˙?ˆ˙˙˙˙8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţŇBŠ!˙˙˙˙Q>Š"˙˙˙˙QSmˆ ˙˙˙˙ˆ"˙˙˙˙7Š#˙˙˙˙Q=Š$˙˙˙˙Qˆ#˙˙˙˙5)8=ˆ#˙˙˙˙5=lˆ#˙˙˙˙5Š$˙˙˙˙Q=Š%˙˙˙˙Qˆ#˙˙˙˙5)8=ˆ#˙˙˙˙5 =lˆ#˙˙˙˙5Š%˙˙˙˙Qˆ!˙˙˙˙ Š!˙˙˙˙Qˆ!˙˙˙˙;m ;nŠ&˙˙˙˙Qż=9=Y=Z¨Ŕˆ&˙˙˙˙˛§Š=<=\ż=oż=9=J=K¨Ŕˆ#˙˙˙˙5(˛§Š=<ż=LŔˆ#˙˙˙˙5ł=>=N=p=\ż=qŔˆ#˙˙˙˙5ł=p=\ż=qż=bŔˆ$˙˙˙˙ł=f=p=\ż=qż=bŔˆ%˙˙˙˙ł=f=p=i°Š'˙˙˙˙Qˆ˙˙˙˙ ¸k äˆ'˙˙˙˙ä:Qˆ"˙˙˙˙# ?Š"˙˙˙˙QQăˆ"˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ý˜;r ¸s äˆ˙˙˙˙ ¸t ä: ¸u ä ä=vä:ä=wä:Š(˙˙˙˙Q; ¸ ä:Q; ¸x äˆ˙˙˙˙ ¸t ä: ¸u ä ä=vä:ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸y äYˆ(˙˙˙˙]z\ä:QœĆvŠQ;{ ¸| ä=}ˆä:Q;{ ¸| äˆ5~ä:Q9âä=}ˆä:Q9âäˆ5~ä:QÇÂė‘ĎĎŘŘĘˆސĎÔ•ˆ䐐Ë•ˆ Ę 5Q–ˆؘ€ˆHؘ€˜€ˆᘀˆ֐Ë0€´ŃÝâŘ•8•÷•8•Ëˆѐˆ䐈ѐË•8•ˆᐐ萐␐ˆא•ÓÉëÉâÉސÉސ–ÉސÉސ˙Ԑј€@É•ËŘË0{ѐĎ•8•âĎ•ˆ ᐐˆ鐐ĺ•ˆ 搐ĺ•ˆ ňpИ€^Ř ŕŘćĘÉ•ˆՐˆŘ ŕŘ ސĘĐ€š•ˆ™€p•––˙––—ː———֐ˆ™€…•–––˙ž€———ѐĘĎp•ˆ–˙Ր֘€Ąˆ–˙˙áŃ˜€ŠËÚÚ0GѐÉˆ Í•ˆӐ@Θ€śˆߐĐ•ËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€ʐ–çÜÜřň—ѐˆߐˆ Ę €€€3–ˆ™€ِÝŐ }e€Š–ˆ ™€ŕç •@ʐˆ 阀߈ؘ€嘀߈Ҙ€čŐ•ˆ ߘ€؈:ؘ€阀؈ߘ€íːˆ Ę €S€;€m–ˆ™€ńÝĎÎ•ˆ 󐐐ϐΕˆ 󐐐ˆˆ ԐÉ ސë˙ăäěćŃˆߘ€đˆBؘ€ ˜€đˆ ߘ€ ˙͐ˆѐˆýˆѐˆęx•Đˆᐈŕˆߐˆހ{–ˆ ExtensionItemsXML setSettingsignoreCommentsisGroupSelection getSelectionGroupcurrentReviewsInFeed aReviewInfolengthArray undefinedapp beginPrivCollab getReviewInfoendPrivpush SharedReviewTitle cFileNamenSent nReceivednSentRecvdTime cDeadline nCommentsnTotalComments nNewCommentsnUnreadCommentsnActiveReviewers nNewReviewerscDeadlineUpdateacrobatInbox?container= &selectFeed=URL#Guid cFileLinkbIsSharedReview oReviewers cNoDeadline (cUpdated)cIveSent cIveReceivedcNoReviewsInFoldercNoSentReviewscNoJoinedReviewsreviews-sent-iconicreviews-joined-iconicö<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> &<div class="summary_page"> <spanclass> <span style="font-weight:bold;"></span>. <br/> <br/> <span> &#8226; <br/> </span> </div> </body> </html>ţ<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <div> 4<div id="mainDiv" class="summary_page">  <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div>#<div class="bread_crumb"> ahref<span class="blueLink">cReviewsSuperGroup</a> >  </div> Namespacehttp://www.w3.org/1999/xhtmlbodyid prependChilddiv borderedDivIDH<table class="borderedTable" cellpadding="15" cellspacing="0"> trbgcolorcTableHeaderColor <th style="padding-left: 10px;">cTableHeaderFileName</th><th>cTableHeaderDeadline<center>cTableHeaderNumberOfComments<br/>cTableHeaderNewByTotal </center>cTableHeaderNumberOfReviewerscTableHeaderNewByActive </tr> </table> appendChild / cTableOddRowColorcTableEvenRowColor <td style="padding-left: 10px;"></td><td>utilstreamFromString toXMLStringreplace&nbsp;utf-8saveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙Á šs˘űÁű;T7ˆʈ AnnotsString˙˙˙˙ÁšschemesÜűüT=Tˆ'Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDER–P m 3; Š¤ Gä GZ´Ž{ăQ˙˙˙˙Ážš' dialog myReviewsURNfeedË"Ş$=WQ†T ¸ ä:1T ¸ ä:WQA ¸ äTäVä:Q,T ¸ ä:WQA ¸ äTäVä:Q-ĆvWQ; ¸ äVä:QǐÉ‘Î,•ŇˆڐŇˆŐx•ĘˆՀ{Ž>urn://ns.adobe.com/Acrobat/Tracker/ReviewTracker/MyReviews.rssisItemSelectiongetFeed showItemView showFeedViewconsoleprintln˙˙˙˙e k˙˙˙˙Áńš 6dialogurlparamsiaÇ$Œ&0 T ¸ ä=ä:>ÚT ¸ ä=ä:?7 ¸ ä=ä:WQVKœmMWQVV7 ¸ ä=ä:WQV>7x=y=y$z[‰5˙˙˙˙äV?7ä:QA; ¸ äYC] 9 â äV?7ä:] \ä:QăL˙˙˙fNÖ•ë5€ŸËÜep‘m €>mʘ€:ˆ ՐP•ˆ ÷PΐˆindexOfacrobat:internal?split?&= newFoldermailtoappmailMsgbUIunescapecToPŸ˙˙˙˙Áęš5 selectionresult)3-cZY=];5]=]‚]‚]\`Y= ];5 ]= ]‚]‚]\`9 â ä:GY= ];5]=]‚]‚]\@`\WQV”•ĘĎĘĘĎ•ĘĎĘĘĎÎB••ĘĎĘĘĐĘ˜€€ˆŒ SendForReviewcName AnnotsStringIDS_SEND_FOR_REVIEW cDisplayName'local://A_SendByEmailForReview_Sm_N.pngcIconURL onExecute onEnabledSendForSharedReviewIDS_SEND_FOR_SHARED_REVIEW&local://A_SendForSharedReview_Sm_N.pnghasHankoSendForApprovalIDS_SEND_FOR_APPROVALlocal://A_J_Approve_Sm_N.png˙˙˙˙Áš selectiondocő)*k9âäTä:Qˆ+ӈANSendForReview˙˙˙˙Áš selectiondoc:*s*l9âäTä:ˆ,ӈ#ANSendForReviewEnabled˙˙˙˙Áš selectiondoc7+g+r9âäTä:Qˆ+ӈANSendForSharedReview˙˙˙˙Áš selectiondoc‚+Ŕ+s9âäTä:ˆ+ӈ)ANSendForSharedReviewEnabled˙˙˙˙Áš selectiondoc„,Ž,z9âäTä:Qˆ+ӈANStartApproval˙˙˙˙Áš selectiondocÉ,-{9âäTä:ˆ+ӈ#ANSendForReviewEnabled˙˙˙˙ÁďšG selectionresultZ-„1ƒ;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVVŮYC] \8QVVŮY= ];5 ]‚]T5]\8QVÎˆː•ĘĎĘ˜€Í˜€–ˆː•ĘĎĘ˜€ŸÍ˜€Ľˆِˆː•ĘĎĘ˜€ŻĐˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE bSeparatorRemoveIDS_REVIEW_PANEL_REMOVE_FOLDERgroup˙˙˙˙Áš selectiondoc.M.‹‰:˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondocm.Ç.‰;˙˙˙˙äT55ä:ˆ݈5feedURL˙˙˙˙Áš selectiondocX/˜/š‰<˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondoc¸/0Ÿ‰=˙˙˙˙äT55ä:ˆ݈7feedURL˙˙˙˙Á%š selectiondocä0C1Ť‰8˙˙˙˙äT55äA5ä:Qˆäˆ:feedURLgroup˙˙˙˙Áš selectionĄ1Ý1ľT55ˆΈ"feed Description˙˙˙˙ÁŚš  selection reviewMethodsitemresulttitleř1×3ş Y;5];5];5]\WQT5WQ;5WQV ¸ ä äVV5 ˆ˙˙˙˙77ä:WQV5 WQV ¸ ä äVä:•ĎĎÔĚÎˆѐސĚˆو) AnnotsStringIDS_REVIEW_PANEL_EMAILEBRIDS_REVIEW_PANEL_ONLINEBBRIDS_REVIEW_PANEL_SHARED SharedReviewitemIDS_REVIEW_PANEL_REVIEW_OF_TIPreplace ExtensionTitle{type}{title}˙˙˙˙ÁKš selection bIsInitiatedó35ĚT55ˆ˙˙˙˙ CBWQV;5;5×А•ˆАˆˈ>feedURL AnnotsString IDS_REVIEW_PANEL_MY_REVIEWS_DESC)IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS_DESC˙˙˙˙ÁâšC selectionresult@5d9×;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVVŮYC] \8QVVŮY= ];5 ]‚]\8QVÎˆː•ĘĎĘ˜€ä͘€ęˆː•ĘĎĘ˜€ó͘€ůˆِˆː•ĘĎÍ˜€ˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE bSeparatorCreateNewFolder"IDS_REVIEW_PANEL_CREATE_NEW_FOLDER˙˙˙˙Áš selectiondocő536߉:˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondocS6­6ä‰;˙˙˙˙äT55ä:ˆ݈5feedURL˙˙˙˙Áš selectiondoc>7~7î‰<˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondocž7ú7ó‰=˙˙˙˙äT55ä:ˆ݈7feedURL˙˙˙˙Á%š  selectiondocurl×8?9˙T55WQ‰5˙˙˙˙äVä:QŃˆӈfeedURL˙˙˙˙Ášm- selectionresult sendToMenufoldersiorigFolderName“9ĹE ;äRWQVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY= ];5 ]ZY= ];5 ]‚]\`YC]\`\] \8QVVŮ?75 WQ; ¸ äT>755ä:WQVKţmMWQVV7WQ;5=DQ;5=0VVVV7 ¸ ä=ä=ä:8Qf;5=QVVVV7 ¸ ä=ä=ä:8QVVVV7 ¸ ä=ä=ä:8QVVŮYV]VV7]‚]\8QăL˙˙˙NVÎˆː•ĘĎÍ˜€0ˆِˆː•ĘĎ”•ĘĎĎ˜€O•Ô˜€Uא䐐5€ːËć+•ˆ됐Đ•ˆ搈搐ˆː•ČĚÖ˜€€ˆŒArraylengthRemovecName AnnotsString)IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED cDisplayName onExecute bSeparator MoveToFolderIDS_REVIEW_PANEL_MOVE_TO_FOLDERNoneIDS_REVIEW_PANEL_FOLDER_NONEoSubMenuCollabgetReviewFoldersfeedURLappplatformWINMACreplace&&&UNIX___˙˙˙˙ÁđšU selectiondoc bIsInitiated bHasEBROrBRRitypeitem extension reviewType^:T= T>755ˆ˙˙˙˙ CBWQBWQVĄ>WQ„mTV75WQV=YTV75WQV5WQVˆ˙˙˙˙7WQV=DQV=CWQ$V# ?WQQăVTŮ˙˙˙s‰6˙˙˙˙äVE QV ä:QŮА• •ˆ $€„x€’–ˆ™€ĐÉ•ĐĚŃŘ•ˆ •@€ˆ+̘€&˜€ˆӘ€,ˆԈ.ɈfeedURLtypeitem ExtensionEBRBBRlength@’˙˙˙˙Á˝š@ selectiondoc reviewIDsitypeitem extensionreviewIDĄ>–@; ;äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰7˙˙˙˙äT>755äVä=ä:QÎˆ $ma{–ˆ™€@ĐÉ•ĐĚŃˆ И€?ˆ,̘€H˜€?ˆӘ€LˆéˆHArraytypeitem ExtensionlengthfeedURL{˙˙˙˙Ážš@ selectiondoc reviewIDsitypeitem extensionreviewID°CEj;äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰7˙˙˙˙äT>755äVäA5ä:QÎˆ $ma{–ˆ™€oĐÉ•ĐĚŃˆИ€nˆ+̘€w˜€nˆӘ€{ˆęˆPArraytypeitem ExtensionlengthfeedURLcName{˙˙˙˙Á š39f selectionresult sendToMenufoldersiorigFolderNamečE1hƒ;äRWQVVŮY=];5]‚]\8QVVŮYC]\8Q; 5 ¸ ä ä: ĹVVŮY= ];5 ]‚]‚]\8QVVŮY=];5]‚]‚]\8QVVŮY=];5]‚]‚]\8QVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY=];5]‚]‚ ]\8QVVŮY=];5]‚ ]\8Q; 5 ¸ ä ä: …VVŮY=];5]‚ ]‚ ]\8QVVŮY=];5]‚ ]‚]\8QVVŮYC]\8Q; 5 ¸ ä ä: TVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY=];5 ]‚]\8QVVŮY=!];5"]ZY=#];5$]‚]\`YC]\`\]%\8QVVŮ?75%WQ;& ¸' äT5(5)ä:WQVKţmMWQVV7WQ; 5*=+DQ; 5*=,0VVVV7 ¸- ä=.ä=/ä:8Qf; 5*=0QVVVV7 ¸- ä=.ä=1ä:8QVVVV7 ¸- ä=1ä=2ä:8QVVŮYV]VV7]‚]\8QăL˙˙˙NVÎˆː•ĘĎÍ˜€‘ˆِˆÜ•ˆː•ĘĎĘ˜€ŸÍ˜€ľˆː•ĘĎĘ˜€żÍ˜€Ոː•ĘĎĘ˜€ß͘€đˆː•ĘĎÍ˜€űˆِˆː•ĘĎĘ˜€͘€ˆː•ĘĎÍ˜€ˆÜ•ˆː•ĘĎĘ˜€&͘€9ˆː•ĘĎĘ˜€C͘€PˆِˆÜ•ˆː•ĘĎÍ˜€^ˆِˆː•ĘĎÍ˜€lˆː•ĘĎ”•ĘĎĎ˜€}•Ô˜€ƒ×â5€ːËć+•ˆ됐Đ•ˆ搈搐ˆː•ČĚÖ˜€ĄˆŒArraylength OpenReviewcName AnnotsStringIDS_ATTACHLAUNCH_OPEN cDisplayName onExecute bSeparatorapp viewerTypematchChangeDeadline IDS_REVIEW_PANEL_CHANGE_DEADLINE onEnabled AddDeadlineIDS_REVIEW_PANEL_ADD_DEADLINE EndReviewIDS_REVIEW_PANEL_END_REVIEWRemoveIDS_REVIEW_PANEL_REMOVE_REVIEWEmailInitiator IDS_REVIEW_PANEL_EMAIL_INITIATOREmailReviewers#IDS_REVIEW_PANEL_EMAIL_PARTICIPANTSInviteIDS_REVIEW_PANEL_INVITENewWithSameReviewers(IDS_REVIEW_PANEL_NEW_WITH_SAME_REVIEWERS ConvertToPDF0IDS_REVIEW_PANEL_CREATE_PDF_FROM_TRACKER_DETAILSCreateNewFolder"IDS_REVIEW_PANEL_CREATE_NEW_FOLDER MoveToFolderIDS_REVIEW_PANEL_MOVE_TO_FOLDERNoneIDS_REVIEW_PANEL_FOLDER_NONEoSubMenuCollabgetReviewFoldersfeedURLplatformWINMACreplace&&&UNIX___˙˙˙˙Á š selectionŁFćF‹; ¸ äT55ä:Qˆ߈#app launchURLitemLink˙˙˙˙ÁFš selectiondocID@HúH™T55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆ Ę•ˆۈ8item Extension undefinedapp launchURLacrobat:Review?changeDeadline=˙˙˙˙Áąš- selection reviewType isInitiateddocIDbIsCommentRepositoryIntactIçKŸT55ˆ˙˙˙˙7WQV=BT55ˆ˙˙˙˙7WQV'=D QV BT55ˆ˙˙˙˙7WQ‰?˙˙˙˙äVä:WQV B‰>˙˙˙˙äVä:ŰÉ•ˆ’Űˆ Ј% •ˆ’ŰÖˆ •ˆ’ˆӈ item Extension SharedReview undefined˙˙˙˙ÁFš selectiondocIDLGMšT55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆ Ę•ˆۈ5item Extension undefinedapp launchURLacrobat:Review?addDeadline=˙˙˙˙Á˛š/ selection reviewType isInitiateddocIDbIsCommentRepositoryIntactbM5PżT55ˆ˙˙˙˙7WQV=BT55ˆ˙˙˙˙7WQV'=D QV BT55ˆ˙˙˙˙7WQ‰?˙˙˙˙äVä:WQV B‰>˙˙˙˙äVä: ŰÉ•ˆ’Űˆ Ј% •ˆ’ŰÖˆ •ˆ’ˆˆԈitem Extension SharedReview undefined˙˙˙˙ÁFš selectiondocIDÖP…QŮT55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆ Ę•ˆۈ-item Extension undefinedapp launchURLacrobat:Review?end=˙˙˙˙ÁŠš selection reviewType isInitiateddocID QSßT55ˆ˙˙˙˙7WQV=BT55ˆ˙˙˙˙7WQV BT55ˆ˙˙˙˙7WQ‰@˙˙˙˙äVä:ˆ/˙˙˙˙ŰÉ•ˆ’Űˆ •ˆ’Űˆ݈2item Extension SharedReview˙˙˙˙Á8š  selectiondoc reviewType?TÖTôT55ˆ˙˙˙˙7WQ‰A˙˙˙˙äT5äVä:QŰˆ܈6item Extension˙˙˙˙ÁFš selectiondocdocIDŻUiVT55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆĘ•ˆۈ8item Extension undefinedapp launchURLacrobat:Review?emailInitiator=˙˙˙˙Á1š selectiondoc isInitiatedƒV%WT55ˆ˙˙˙˙7WQV'=D QV ŰˆˆЈ%item Extension undefined˙˙˙˙ÁFš selectiondocdocIDĐWXT55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆĘ•ˆۈ;item Extension undefinedapp launchURL!acrobat:Review?emailAllReviewers=˙˙˙˙ÁFš selectiondocdocIDŹYdZ T55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆ Ę•ˆۈ0item Extension undefinedapp launchURLacrobat:Review?invite=˙˙˙˙Áš" selectiondoc isInitiated reviewTypedocIDZ˘\&T55ˆ˙˙˙˙7WQV BT55ˆ˙˙˙˙7WQV=BT55ˆ˙˙˙˙7WQ‰@˙˙˙˙äVä:ˆ/˙˙˙˙CŰˆ •ˆ’ŰÉ=•Űˆ␐ˆŠ item Extension SharedReview˙˙˙˙ÁFš selectiondocdocID_]0^=T55ˆ˙˙˙˙7WQV'= ; ¸ ä=Vä:QŰˆ Ę•ˆۈJitem Extension undefinedapp launchURL0acrobat:Review?newSharedReviewWithSameReviewers=˙˙˙˙ÁKš selectiondoc reviewType isInitiatedK^—_CT55ˆ˙˙˙˙7WQV=BT55ˆ˙˙˙˙7WQVŰÉ•ˆ’ŰˆŒitem Extension SharedReview˙˙˙˙Áš selectionę`:aX; ¸ ä=ä:Qˆ׈-app launchURLacrobat:Review?convertToPDF˙˙˙˙Á%š  selectiondocurlb†beT55WQ‰5˙˙˙˙äVä:QŃˆӈfeedURL˙˙˙˙ÁEš selectiondocextŁc`duT55WQ; ¸ äT55äVˆ˙˙˙˙7ä=ä:QŃˆóˆ>item ExtensionCollabsetReviewFolderfeedURL˙˙˙˙ÁTš selectiondocitemfeedextBg h˜ T5WQT5WQV5WQ; ¸ äV5äVˆ˙˙˙˙7äA5ä:QĚĚĚˆďˆ<itemfeed ExtensionCollabsetReviewFolderURLcNameReaderReaderReader˙˙˙˙Áš[hnh¤Cˆ*Š ˙˙˙˙Á6š driverURLĽhÓiŚT=DQT=DQT= CBĎĎÉ•ˆ—ˆŠ 4urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker7urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup3urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker˙˙˙˙Áš selectionńij°BˆŠ ˙˙˙˙Áš selectionIjpjľBˆŠ ˙˙˙˙Áš selectionŽj´jşCˆŠ ˙˙˙˙Á8š  selection reviewTypeŃjbkżT55ˆ˙˙˙˙7WQ‰A˙˙˙˙äT5äVä:Űˆ܈=item Extension˙˙˙˙Áš selection“kškĹCˆŠ ˙˙˙˙Áš selectionékQlʉB˙˙˙˙äT5ä=ä:ˆވNitemReview˙˙˙˙Á š X selectionaFeedURL bIsInitiated bHasEBROrBRRitypeitem extension reviewType}l„oĎ T>755 ¸ ä ä:WQV>7ˆ˙˙˙˙ CBWQBWQVĄ>WQ„mTV75WQV=YTV75WQV5WQVˆ˙˙˙˙7WQV=DQV=CWQ$V# ?WQQăVTŮ˙˙˙s‰6˙˙˙˙äVE QV ä:äĎА• •ˆ$€„x€’–ˆ™€ېАÉ•ĐĚŃŘ•ˆ•@€ڈ)̘€昀ڈӘ€ěˆԈ5ɈfeedURLsplittypeitem ExtensionEBRBBRlength#Z’˙˙˙˙Áš selectionŁoÉoďCˆŠ ˙˙˙˙ÁMš selectionurlgroupçoÎpôT55WQT5WQV'=#‰8˙˙˙˙äVäVä:QCBŃĚˆĘ•ˆאˆ—ˆŠ feedURLgroup undefined˙˙˙˙Áš selectionq(qCˆŠ ˙˙˙˙ÁMš selectionurlgroupYqPrT55WQT5WQV'=#‰9˙˙˙˙äVäVä:QCBŃĚˆĘ•ˆאˆ—ˆŠ feedURLgroup undefined˙˙˙˙ÁšprƒrCˆ Š ˙˙˙˙Áš selectionsrcdst¤rĘrCˆ6Š ˙˙˙˙Á"š : selectionsrcdstitemfeedextfoldersi newFolderjęr|uT5WQT5WQV5WQ; ¸ äV5ä:WQTŮ>EQTŮ>5; ¸ äV5äVˆ˙˙˙˙7ä=ä:QTKƒmMWQ@WQVK*mMWQTV7VV7VV7WQăL˙˙˙ŘNV@6; ¸ äV5äVˆ˙˙˙˙7äVä:Q ăL˙˙˙NĚĚĚÝÚ•ˆ’5€†Ë•5-ːĎ•ˆԐ •ˆě@Έ itemfeed ExtensionCollabgetReviewFoldersURLlengthsetReviewFolderš†Ż-˙˙˙˙Áš3 resultŇu§y;ZY=]=];5];5]= ] ‚] ‚] \`Y=]= ];5];5]=] ‚] ‚] \`\WQV”•ĘĘĎĎĘĘ˜€JϘ€O•ĘĘĎĎĘĘ˜€YԘ€`ˆŒbuttoncTypeRT:GoBackOnlinecName AnnotsStringIDS_GO_ONLINE_LABEL_TEXT cDisplayNameIDS_GO_ONLINE_TIP_TEXTcTip!local://C_OnlineComments_Lg_N.pngcIconURL onExecute onEnabledRT:RemoveOfflineIDS_REVIEW_PANEL_REMOVE_BUTTONIDS_REVIEW_PANEL_REMOVE_TIP!local://C_RemoveFromList_Md_N.png˙˙˙˙Á1š  selectiondocIDév^wET55ˆ˙˙˙˙7WQ; ¸ äVä:QŰˆՈitem ExtensionCollab goBackOnline˙˙˙˙Áš selectionywźwJT5=ˆψ typeitem˙˙˙˙Áš selectionÉx!yU‰A˙˙˙˙äT5ä=ä:Qˆވ5itemOffline˙˙˙˙Áš selection ¸? ä; ¸8 ä: ¸9 ä ä=:ä:ä:Q;< ¸@ ä:Q;A ¸B äY;5]C\ä:Q_ĆvŠQ;D ¸E ä=Fˆä:Q;D ¸E äˆ5Gä:QÇ¢€•ˆ €ވ •ˆ€Żˆ€łˆ€żˆ €o‘ĎĎŢŢŘŘˆސ•ÓŐË0€-ѐÝŘ=•âˆᐕ˙Ԑéß˜€“ʐ•™€š•––Ő˜€Ľ——͐ŰŇ0€Ԑ Í•7€ŃԐĚ•–˙ʐőÍˆ ᐐ@Θ€ż˙ʐˆѐˆůˆѐˆăx€ÇАˆᐈŕ€{–ˆ getSelectiongetFeed ExtensionItemsXML setSettingsignoreCommentsTitle cListTitle aReviewListlengthacrobatInbox?container= &selectFeed=URL#Guid cFileLinkReview?remove= cDeleteLink cFileName viewXHTMLë<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="pg_joined"> <h1></h1>ľ <div class="content_offline"> <table id="listEntries" class="offlineList" cellspacing="0" cellpadding="0"> </table> </div> </div> </body> </html>xhtml Namespacehttp://www.w3.org/1999/xhtmlitableid listEntriesj serverXHTML<tr> <td class="label"><ahrefclass="online-review-iconic"></a></td> <td class="trash">><img src="AdobeTracker/trash.gif" height="30" width="30"/></a> </tr> appendChildstmutilstreamFromString toXMLStringreplace&nbsp;utf-8app beginPrivCollabsaveTrackerHTMLendPrivdialogloadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙Á šs3{R{s;T7ˆʈ AnnotsString˙˙˙˙Ášschemesl{›{tT=TˆΈ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDERt—ÉŃć-˙˙˙˙ÁűšJ‰NČdialog selectiontitle extensiononlinestrs arguments…sÎ Š˙˙˙˙Q<ˆ˙˙˙˙ ¸ ä: ˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Q;5Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä äˆ˙˙˙˙5ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Q; ¸ äYB] \ä:Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QYˆ˙˙˙˙] ;5 ] ;5 ];5]ˆ˙˙˙˙ˆ˙˙˙˙7];5]ˆ˙˙˙˙ˆ˙˙˙˙7]ˆ˙˙˙˙= =]ˆ˙˙˙˙]\Š˙˙˙˙Qˆ˙˙˙˙nż=ż=ż=Ŕ; ł==ż== =!¨Ŕ;˛§Š="=#ż==$=!¨=%Š=&¨Ŕ;˛§Š="=#ż='ż=(Ŕ; ł=)=*Ŕ;ł=+=,=-=.ż=/ż=0ż=1Ŕ;ł=2=3ż=4Ŕ;ł=5=6ż=1Ŕ;ł=2=3ż=4ż==$=&¨Ŕ;˛§Š="Ŕ;ł=7=5=8=9=:=;°oQn<;= ¸> ä; ¸? ä: ¸ ä ä=@ä:ä=Aä:o <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> "<h1 class="review-browser-iconic"></h1> <divstyle> a$color: #000000;text-decoration: nonehrefA<div style="padding: 5px; background-color: #FFE4E1;"> <b></b>  </div> </a><br/> </div> .<div class="content_offline_detail"> <dl> <dt></dt> <dd></dd> </a> </dl> </div> </body> </html>stmutilstreamFromString toXMLString&nbsp;utf-8app beginPrivCollabsaveTrackerHTMLendPrivdialogloadhtml{title}NBSP_PLACEHOLDERNBSP_PLACEHOLDER˙˙˙˙Áš selectionő0@ˆŠ ˙˙˙˙Ášm- selectionresult sendToMenufoldersiorigFolderNameHš5;äRWQVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY= ];5 ]ZY= ];5 ]‚]\`YC]\`\] \8QVVŮ?75 WQ; ¸ äT>755ä:WQVKţmMWQVV7WQ;5=DQ;5=0VVVV7 ¸ ä=ä=ä:8Qf;5=QVVVV7 ¸ ä=ä=ä:8QVVVV7 ¸ ä=ä=ä:8QVVŮYV]VV7]‚]\8QăL˙˙˙NVÎˆː•ĘĎÍ˜€Cˆِˆː•ĘĎ”•ĘĎĎ˜€b•Ô˜€hא䐐5€ːËć+•ˆ됐Đ•ˆ搈搐ˆː•ČĚÖ˜€“ˆŒArraylengthRemovecName AnnotsString)IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED cDisplayName onExecute bSeparator MoveToFolderIDS_REVIEW_PANEL_MOVE_TO_FOLDERNoneIDS_REVIEW_PANEL_FOLDER_NONEoSubMenuCollabgetReviewFoldersfeedURLappplatformWINMACreplace&&&UNIX___˙˙˙˙Áš selectiondoc‘Ł‘=‰6˙˙˙˙äBä:Qˆш%˙˙˙˙Á˝š@ selectiondoc reviewIDsitypeitem extensionreviewIDđ’ĺ”N ;äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰7˙˙˙˙äT>755äVä=ä:QÎˆ $ma{–ˆ™€SĐÉ•ĐĚŃˆ И€Rˆ,̘€[˜€RˆӘ€_ˆéˆHArraytypeitem ExtensionlengthfeedURL{˙˙˙˙Ážš@ selectiondoc reviewIDsitypeitem extensionreviewID˙—ě™};äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰7˙˙˙˙äT>755äVäA5ä:QÎˆ $ma{–ˆ™€‚ĐÉ•ĐĚŃˆИ€ˆ+̘€Š˜€ˆӘ€ŽˆęˆPArraytypeitem ExtensionlengthfeedURLcName{˙˙˙˙ÁĽš + selectionresult7š@–ZY=];5]‚]\`YC]\`Y=];5]‚]\`Y= ];5 ]‚]\`\WQV”•ĘĎĎ˜€˘•Ë•ĘĎĎ˜€Ž•ĘĎÔ˜€¸ˆŒ OpenReviewcName AnnotsStringIDS_ATTACHLAUNCH_OPEN cDisplayName onExecute bSeparator GoBackOnlineIDS_GO_ONLINE_LABEL_TEXTRemoveIDS_REVIEW_PANEL_REMOVE_REVIEW˙˙˙˙Á š selectionӚ›; ¸ äT55ä:Qˆ߈#app launchURLitemLink˙˙˙˙Á1š  selectiondocdocIDŔ›:œ¨T55ˆ˙˙˙˙7WQ; ¸ äVä:QŰˆՈitem ExtensionCollab goBackOnline˙˙˙˙Áš selectiondocťœą‰A˙˙˙˙äT5ä=ä:Qˆވ5itemOffline˙˙˙˙Áš selection[—ťT55ˆΈ"feed Description˙˙˙˙Á\š selectionresulttitle˛¨žŔ ;5WQV ¸ ä ä;5ä:WQT55WQV ¸ ä äVä:ÎˆăŃˆو) AnnotsStringIDS_REVIEW_PANEL_REVIEW_OF_TIPreplaceIDS_REVIEW_PANEL_OFFLINEitemTitle{type}{title}˙˙˙˙ÁšҞĺžČCˆ*Š ˙˙˙˙Á6š driverURLŸH ĘT=DQT=DQT= CBĎĎÉ•ˆ—ˆŠ 4urn://ns.adobe.com/Acrobat/Tracker/UI/OfflineTracker7urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewsSuperGroup3urn://ns.adobe.com/Acrobat/Tracker/UI/ReviewTracker˙˙˙˙Áš selectionf  ÔBˆŠ ˙˙˙˙Áš selectionž ĺ ŮBˆŠ ˙˙˙˙Áš selectionĄ)ĄŢCˆŠ ˙˙˙˙Áš selectionFĄœĄă‰A˙˙˙˙äT5ä=ä:ˆވ<itemOffline˙˙˙˙Áš selectionĎĄőĄčCˆŠ ˙˙˙˙Áš selection%˘Ž˘í‰B˙˙˙˙äT5ä=ä:ˆވOitemOffline˙˙˙˙Áš selectionş˘?Łň‰6˙˙˙˙äBä:Qˆш%˙˙˙˙Áę š.b/ˆresult argumentsŠŁŃű  Š˙˙˙˙QY;5];5];5];5]= ] ;5 ] ;5 ];5];5];5];5];5]‚]‚]‚]‚]Y=]ZY=] =!]"=#]$ZY=%] =&]'\`\](\`\](\])\Š˙˙˙˙Q;* ¸+ ä:Qˆ˙˙˙˙;* ¸, äˆ˙˙˙˙5ä:6Qˆ˙˙˙˙;* ¸, äˆ˙˙˙˙5ä:6Q;* ¸- ä:Qˆ˙˙˙˙Âė•ĎĎĎĎĘĎĎĎĎĎĎĎĘ˜€ʘ€’Ę˜€ <ʘ€ P•Ę”•ĘĘĘ”•Ęń˜€ dˆѐˆѐˆʈ AnnotsStringIDS_TRACKER_SERVER_STATUScLabelServerStatusIDS_TABLE_HEADER_SERVER_NAMEcTableHeaderServerName!IDS_TABLE_HEADER_NUM_ACTIVE_FILEScTableHeaderNumActiveFilesIDS_TABLE_HEADER_NUM_ERRORScTableHeaderNumErrorsNBSP_PLACEHOLDERnbsp_placeholderIDS_TRACKER_NONEcNone"IDS_TRACKER_SERVER_FILETYPE_REVIEWcFileTypeReview IDS_TRACKER_SERVER_FILETYPE_FORM cFileTypeFormIDS_TABLE_HEADER_FILE_NAMEcTableHeaderFileNameIDS_TABLE_HEADER_STATUScTableHeaderStatusIDS_TABLE_HEADER_ERRORcTableHeaderErrorIDS_TABLE_HEADER_TYPEcTableHeaderTypeonSelectionChanged showFeedView showItemView handleLinkPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙Ábš dialog§ȧT ¸ ä:A ¸ äTä:Q=T ¸ ä:DQT ¸ ä:A ¸ äTä:QÎ•ˆ֐╈шisItemSelection showItemViewisFeedSelectionisGroupSelection showFeedView˙˙˙˙Á š^‚ČdialogLLINK selectionfeed extensionitemsaServersjoServerextworkflowsOnThisServercountOfWorkflowsInError cServerStatusxhtml viewXHTMLtableServersXHTMLi evenOddRowindex curServer cRowColor serverXHTMLstm arguments姸% Š˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Q; ¸ äYB]\ä:QZ\Š ˙˙˙˙Qˆ˙˙˙˙KbmMŠ ˙˙˙˙Qˆ˙˙˙˙ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5Š ˙˙˙˙Qˆ ˙˙˙˙ˆ,˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙ˆ-˙˙˙˙7Š˙˙˙˙Q=Š˙˙˙˙Qˆ˙˙˙˙>=Š˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů Y‰˙˙˙˙ä= ä= ˆ˙˙˙˙= ˆ˙˙˙˙5 =ˆ ˙˙˙˙5ä:]ˆ ˙˙˙˙5]ˆ˙˙˙˙]ˆ˙˙˙˙]ˆ ˙˙˙˙Ů ]\8QăL˙˙ţ N;ä=äRŠ˙˙˙˙Qż=ż=ż=ŔA5ł==ż=ż=ż= ż=!ŔA5ł="="=#ż=$ż=%ż=&='=(¨Ŕ;)˛§Š=*=+ż=,ż=-ŔA5.ł=/=0=+ż=1ŔA52ł=0=+ż=1ż=-ŔA53ł=/=0=+ż=1ż=-ŔA54ł=/=0=5=6=7=8=9=:=;°Š˙˙˙˙Q@Š˙˙˙˙Q;ä=äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤<­KDmMŠ˙˙˙˙Qˆ˙˙˙˙Ł=Ś7=>ˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNBŠ˙˙˙˙Q>Š˙˙˙˙Qŕmˆ ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙;? ;@Š˙˙˙˙Qż=&='=(¨Ŕˆ˙˙˙˙˛§Š=*=Aż=Bż=-ż=&=C=D¨Ŕˆ˙˙˙˙5˛§Š=*="=/=E=Aż=Bż=&=F=G¨Ŕˆ˙˙˙˙5˛§Š=*ż=HŔˆ˙˙˙˙5ł="=I=E=Aż=Bż=-Ŕˆ˙˙˙˙5ł=/=E=Aż=Bż=-Ŕˆ˙˙˙˙5ł=/=E=J°Š˙˙˙˙Qˆ˙˙˙˙ ¸K äˆ˙˙˙˙ä:Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţ ;L ¸M äˆ˙˙˙˙ ¸N ä: ¸O ä ä=Pä:ä=Qä:Š˙˙˙˙Q;R ¸S ä:Q;T ¸U äˆ˙˙˙˙ ¸N ä: ¸O ä ä=Pä:ä:Q;R ¸V ä:Qˆ˙˙˙˙ ¸W äYˆ˙˙˙˙]X\ä:QœĆvŠQ9YâYä=Zˆä:Q9YâYäˆ5[ä:Q;\ ¸] ä=Zˆä:Q;\ ¸] äˆ5[ä:QÇÂė‘ĎĎŢŢŘŘˆސĎË0€eѐÝŘÝÝĎË•ˆϐˆא•˙ԐӐΐΐߘ€=ڐ™€C•–—Ȑ͐––㐐–––çéÜéă——————ѐËÚÚ0GѐÉˆ Í•ˆӐ@Θ€nːˆ Ę €ŕ€Ȁú–ˆ™€qÝˆˆ ԐÉ ސë˙Ґ˙ăńëŃˆߘ€pˆ2ؘ€€˜€pˆߘ€ƒ˙͐ˆѐˆýˆѐˆęx•Đˆߐˆސˆᐈŕ€{–ˆ getSelectiongetFeed ExtensionItemsXML setSettingsignoreCommentsstatus-ok-iconicstatus-issue-iconiclengthacrobatInbox?container= &selectFeed=URL#Guid cServerLinkTitle cServerName cServerStatus nNumErrorsnNumActiveFiles Namespacehttp://www.w3.org/1999/xhtmlř<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> $<div class="bread_crumb"> cLabelServerStatus &gt; </div> 5<div id="pg_serverstatus_summary"> &<div class="summary_page"> #<span class="servers-super-iconic"> <span style="font-weight:bold;"></span>. <br/> <br/> D<div class="borderedDivSummaryPage" id="borderedDivID"> ]<table id="tableServers" class="borderedTable" cellpadding="0" cellspacing="0"> <trbgcolorcTableHeaderColor> <th width="60px;"><center>cTableHeaderStatus </center></th><th>cTableHeaderServerNamecTableHeaderNumActiveFilescTableHeaderNumErrors </tr> </table> </div> </div> </div> </body> </html>tableid tableServerscTableOddRowColorcTableEvenRowColor <td>spanclass</td>ahref<span class="blueLink"></a> </tr> appendChildutilstreamFromString toXMLStringreplace&nbsp;utf-8app beginPrivCollabsaveTrackerHTMLendPrivloadhtmlmyReviewTrackerDebugAlert EXCEPTION: stackconsoleprintln˙˙˙˙Á šs¨=¨;T7ˆʈ AnnotsString˙˙˙˙ÁšschemesX¨€¨T=Tˆ'Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDERKúčGČe˙˙˙˙ÁŮ šdƒšČdialogLLINK selection extension cServerName aWorkflowsworkflowext cWorkflowIDpropsbWorkflowHasErrorcTopArrowXHTMLxhtml viewXHTMLbodyitableWorkflowsXHTML evenOddRowindex curWorkflow cRowColor workflowXHTMLstm arguments;¸Í’# Š˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙QZ\Š˙˙˙˙Qˆ˙˙˙˙ˆ,˙˙˙˙7KŔmMŠ ˙˙˙˙Qˆ˙˙˙˙ˆ,˙˙˙˙7ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙ˆ&˙˙˙˙7Š ˙˙˙˙QYˆ ˙˙˙˙ˆ'˙˙˙˙7]ˆ ˙˙˙˙ˆ*˙˙˙˙7]=]ˆ ˙˙˙˙ˆ(˙˙˙˙7]ˆ ˙˙˙˙ˆ)˙˙˙˙7]\Š ˙˙˙˙Qˆ ˙˙˙˙5= ˆ ˙˙˙˙A5 6Q3ˆ ˙˙˙˙5= ˆ ˙˙˙˙A5 6Qˆ ˙˙˙˙ˆ+˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙=3ˆ ˙˙˙˙=6 Qˆ ˙˙˙˙A56Qćˆ ˙˙˙˙=6 Qˆ ˙˙˙˙5= U; ¸ ä:Qˆ ˙˙˙˙; ¸ äˆ ˙˙˙˙ä:6Q; ¸ ä:Qiˆ ˙˙˙˙5= P; ¸ ä:Qˆ ˙˙˙˙; ¸ äˆ ˙˙˙˙ä:6Q; ¸ ä:Qˆ ˙˙˙˙5;ˆ ˙˙˙˙A56Qˆ˙˙˙˙ˆ˙˙˙˙Ůˆ ˙˙˙˙8QăL˙˙ýBN; ¸ äYB]\ä:Q@Š˙˙˙˙Qż=ż== =!¨Ŕˆ˙˙˙˙˛§Š="ż=#ŔA5$ł=%=&='Ŕˆ˙˙˙˙ł=(°Š˙˙˙˙Q;)ä=*äRŠ˙˙˙˙Qż=+ż=,ż=-ż=.ż=/ż=0Ŕˆ˙˙˙˙ł=%=%=1=2=3ż=4ż=5ż==6=7¨Ŕ;8˛§Š="=9ż=:ż=;ŔA5<ł===>=9ż=?ŔA5@ł=>=9ż=?ŔA5Ał=>=9ż=?ŔA5Bł=>=C=D=E=F=G°Š˙˙˙˙Q@Š˙˙˙˙Q;)ä=*äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤H­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁIŚ7=Hˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNˆ˙˙˙˙ ¸J äˆ˙˙˙˙ä:Q@Š˙˙˙˙Q;)ä=*äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤K­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁIŚ7=Lˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNBŠ˙˙˙˙Q>Š˙˙˙˙Qżmˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙;M ;NŠ˙˙˙˙Qż==6=7¨Ŕˆ˙˙˙˙˛§Š="=3ż=Oż=;ż==P=Q¨Ŕˆ˙˙˙˙5 ˛§Š="=%===R=3ż=Oż== =!¨Ŕˆ˙˙˙˙5˛§Š=S¨="Ŕˆ˙˙˙˙5ł=&=R=3ż=OŔˆ˙˙˙˙5ł=R=3ż=OŔˆ˙˙˙˙5ł=R=T°Š˙˙˙˙Qˆ˙˙˙˙ ¸U äˆ˙˙˙˙ä:Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ˙˙˙˙Ů˙˙ţ,;V ¸W äˆ˙˙˙˙ ¸X ä: ¸Y ä ä=Zä:ä=[ä:Š˙˙˙˙Q; ¸ ä:Q; ¸\ äˆ˙˙˙˙ ¸X ä: ¸Y ä ä=Zä:ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸] äYˆ˙˙˙˙]^\ä:QœĆvŠQ;_ ¸` ä=aˆä:Q;_ ¸` äˆ5bä:Q9câcä=aˆä:Q9câcäˆ5bä:QÇÂė‘ĎĎŢŘŘĎŐ0€ĂѐçÝ•ŘŘĘŘăÔ•ˆڐÔ•ˆՐÝĎ.•ˆԐˆڐˆԐÔP•ˆ ѐˆ 鐈 ֐Ô•ˆ ѐˆ 鐈 ј€ÍÔ•ˆՐˆ됐ˆސËˆ–˙ՐѐÚ™€㕐–––搐—͐––çéÜÜÖ————ѐËÚÚ0GѐÉˆ Í•ˆӐ@Θ€ ˆߐËÚÚ0GѐÉˆ Í•ˆӐ@Θ€ ːˆ Ę €ż€§€ٖˆ™€ Ýˆˆ ԐÉ ސë˙Ґ˙ܐäŢŃˆߘ€ ˆ4ؘ€ *˜€ ˆߘ€ -˙͐ˆѐˆýˆѐˆęx•Đˆᐈŕˆߐˆހ{–ˆ getSelection ExtensionTitle cWorkflowName cWorkflowTypecWorkflowTypeDisplaycWorkflowOpenLinkcWorkflowDeleteLinkReviewcFileTypeReviewForm cFileTypeFormcWorkflowStatusstatus-ok-iconiccWorkflowErrorcNonestatus-issue-iconicapp beginPrivCollabgetReviewErrorendPriv FormWorkflowgetFormWorkflowError undefinedlengthXML setSettingsignoreComments"<div class="bread_crumb"> <ahref><span class="blueLink">cLabelServerStatus</span></a> >  </div> Namespacehttp://www.w3.org/1999/xhtmlř<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> <div> &<div class="summary_page"> #<span class="servers-super-iconic"> <span style="font-weight:bold;">3 <br/> <br/> </div> </div> .<div class="borderedDivDetailPage"> ^<table id="tableWorkflows" class="borderedTable" cellpadding="15" cellspacing="0"> trbgcolorcTableHeaderColor <th width="60px;"><center>cTableHeaderStatus </center></th><th>cTableHeaderFileNamecTableHeaderTypecTableHeaderError </tr> </table> </div> </body> </html>bodyid prependChildtabletableWorkflowscTableOddRowColorcTableEvenRowColor<td>spanclass</td>style="color:#0000FF;" </tr> appendChildutilstreamFromString toXMLStringreplace&nbsp;utf-8saveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙Á šst¸“¸–;T7ˆʈ AnnotsString˙˙˙˙ÁšschemesŽ¸߸—T=Tˆ Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDER5 ƒŮ GuG–Ă˙˙˙˙Á­š"dialogurlparamsia:͢Î< T ¸ ä=ä:>–T ¸ ä=ä:?7 ¸ ä=ä:WQVKXmMWQVV7 ¸ ä=ä:WQV>7x=y z!; ¸ äV?7ä:QăL˙˙˙ŞNÖ•ë5[ːÜe,‘mʐˆ אPΐˆindexOfacrobat:internal?split?&=returnToInitiatorCollabP[˙˙˙˙Á“š 0 selectionresult$ŃÔl ;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVÎˆː•ĘĎĘ˜€ y͘€ ˆː•ĘĎĘ˜€ ˆÍ˜€ ŽˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE˙˙˙˙Áš selectiondocŮŃŇt ‰:˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondoc7Ň‘Ňy ‰;˙˙˙˙äT55ä:ˆ݈5feedURL˙˙˙˙Áš selectiondoc"ÓbÓƒ ‰<˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondoc‚ÓŢÓˆ ‰=˙˙˙˙äT55ä:ˆ݈7feedURL˙˙˙˙Áš selection'ÔCÔ‘ @ˆ,Š ˙˙˙˙Áš selection^ÔšÔ“ T55ˆΈ"feed Description˙˙˙˙Á˘š1 selectionitem extensionbAllWorkflowsAreOkayworkflowextbWorkflowHasErrorˇÔט T5WQV5WQCWQVˆ,˙˙˙˙7KImMWQVˆ,˙˙˙˙7V7WQVˆ+˙˙˙˙7WQV=BWQ ăL˙˙˙šNV;5;5ĚĚ•Ď0LːŐŃÉ•ˆ•@Θ€ ­•ˆАˆˈ<item Extension AnnotsString"IDS_TRACKER_ALL_WORKFLOWS_ARE_OKAY'IDS_TRACKER_SOME_WORKFLOWS_ARE_IN_ERROR1L˙˙˙˙Áš selection#×@׳ Bˆ'Š ˙˙˙˙Áš selection\×y×´ Bˆ'Š ˙˙˙˙Áš>result`Ř<áť Y;5]9âä;5ä:];5]‚]‚] Y= ] ZY= ] =]=]ZY=] =]\`\]\`\]\]\WQ; ¸ ä:QV; ¸ äV5 ä:6 Q; ¸ ä:QV•ĎŢĎĘ˜€ Éʘ€ ř•Ę”•ĘĘĘ”•Ęë˜€! ˆѐˆ␈ѐˆŒ AnnotsStringIDS_RSS_EMPTY_VIEW_TITLE cWhatIsTitleCBSetProductVariantIDS_RSS_EMPTY_VIEW_BODY cWhatIsTextIDS_RSS_SUBSCRIBE_TO_RSS_FEEDcSubscribeToRSSFeedTextonSelectionChanged showEmptyViewPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙ÁšdialogŠŮÂŮÄ A ¸ äTä:Qˆш showEmptyView˙˙˙˙Áőš/N%dialogLINKcSubscribeToRSSFeedLink viewXHTMLstmćŮ ßÉ †‚WQ=WQ; ¸ äYB]\ä:Qż=ż=ż=ż=ż=ŔA5 ł= = ż= ŔA5 ł===ż=ż===¨ŔV˛§Š=¨=ż=ŔA5ł======°WQ; ¸ äV ¸ ä: ¸! ä ä="ä:ä=#ä:WQ;$ ¸% ä:Q;& ¸' äV ¸ ä: ¸! ä ä="ä:ä:Q;$ ¸( ä:QT ¸) äYV]*\ä:QMĆvWQ;+ ¸, ä=-Vä:Q;+ ¸, äV5.ä:Qǐ‘ÉÉˆސ™€ ؕ–––ܐ—Ȑ—͐–˙“———ː˙‘ˆѐˆ÷ˆѐˆŢx•Ęˆېˆڀ{–ˆ&acrobat:Inbox?subscribeToRSSFeed=dummyXML setSettingsignoreCommentsë<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> $<div class="summary_page"> <div> <h3> cWhatIsTitle</h3> <p> cWhatIsText </p> </div> <div class="buttons"> <ahrefclass="rss-iconic"><span class="blueLink">cSubscribeToRSSFeedText</span></a> </div> </body> </html>utilstreamFromString toXMLStringreplace&nbsp;utf-8app beginPrivCollabsaveTrackerHTMLendPrivloadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙Ášschemes"ÚJÚÍ T=Tˆ'Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDERŤ˙˙˙˙Áš selection`á|á!@ˆ,Š ˙˙˙˙Áš selectionášá!@ˆ,Š ˙˙˙˙Áš selection×áôá!Bˆ'Š ˙˙˙˙Áš selectionâ-â!Bˆ'Š ˙˙˙˙Áš@result˜ă<đ !Y;5];5];5];5]‚] ‚] Y= ] ZY= ]=]=]ZY=]=]\`\]\`\]\]\WQ; ¸ ä:QV; ¸ äV5 ä:6 Q; ¸ ä:QV•ĎĎĎĎĘ˜€!/ʘ€!l•Ę”•ĘĘĘ”•Ęë˜€!€ˆѐˆ␈ѐˆŒ AnnotsStringIDS_REVIEW_PANEL_MY_REVIEWScIveSent$IDS_REVIEW_PANEL_PARTICIPANT_REVIEWS cIveReceivedIDS_REVIEW_PANEL_OFFLINE_DOCScOffline%IDS_TRACKER_REVIEWS_SUPER_GROUP_TITLEcReviewsSuperGrouponSelectionChanged showEmptyViewPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙Ášdialogřä0ĺ*!A ¸ äTä:Qˆш showEmptyView˙˙˙˙ÁŒš9t9dialogLINKhaveOfflineReviewsisReadercVisibleOfflineReviewscVisibleMyReviews viewXHTMLstmTĺ î/!†‚WQ; ¸ äYB]\ä:Q; ¸ ä:Q;5WQ; ¸ ä:Q;5= WQV=  = WQV=  = WQż= ż= ż=ŔA5ł==ż=ż=ż=ŔA5ł===ż=ż===¨ŔV˛§Š==ż===¨Ŕˆ˙˙˙˙˛§Š=ż=ŔA5 ł==!="=#ż=$ż===¨Ŕˆ ˙˙˙˙˛§Š=ż=ŔA5%ł==!="=#ż===¨ŔV˛§Š==ż===¨Ŕˆ ˙˙˙˙˛§Š=ż=ŔA5&ł==!="='=(=)=*°WQ;+ ¸, äV ¸- ä: ¸. ä ä=/ä:ä=0ä:WQ; ¸ ä:Q; ¸1 äV ¸- ä: ¸. ä ä=/ä:ä:Q; ¸ ä:QT ¸2 äYV]3\ä:Q~ĆvWQ;4 ¸5 ä=6Vä:Q;4 ¸5 äV57ä:Q98â8ä=6Vä:Q98â8äV57ä:Qǐ‘ÉˆސˆѐΐˆѐԐ ؐ ؐ™€!G•–—Ȑ͐–㐐––˙ő˙֐˙——ː˙‘ˆѐˆ÷ˆѐˆŢx•Ęˆېˆڐˆِˆ؀{–ˆXML setSettingsignoreCommentsapp beginPrivCollabhaveOfflineReviewsendPriv viewerTypeReader display:noneř<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> $<div class="bread_crumb"> cReviewsSuperGroup &gt; </div> )<div class="super_group_page"> #<span class="reviews-super-iconic"> <span style="font-weight:bold;"></span>+ <br/> <br/> )<p style="line-height:25px;"> <spanstyle>&#8226; ahref<span class="blueLink">cIveSent</a> <br/></span> <span>&#8226; cIveReceivedcOffline </p> </div> </body> </html>utilstreamFromString toXMLStringreplace&nbsp;utf-8saveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙Ášschemesĺ¸ĺ3!T=Tˆ'Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDER˙˙˙˙Á“š 0 selectionresultuđSó‡!;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVÎˆː•ĘĎĘ˜€!”͘€!šˆː•ĘĎĘ˜€!ŁÍ˜€!ŠˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE˙˙˙˙Áš selectiondoc*ńhń!‰:˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondocˆńâń”!‰;˙˙˙˙äT55ä:ˆ݈5feedURL˙˙˙˙Áš selectiondocsňłňž!‰<˙˙˙˙ä:Qˆψ˙˙˙˙Áš selectiondocÓň/óŁ!‰=˙˙˙˙äT55ä:ˆ݈7feedURL˙˙˙˙Áš selectionróóŹ!Bˆ'Š ˙˙˙˙Áš selectionŤóČó­!Bˆ'Š ˙˙˙˙Áę šVˇbˆresult arguments$őXkľ!  Š˙˙˙˙QY‚];5];5];5];5] ;5 ] ;5 ] ;5];5];5];5];5];5];5]9âä=ä:]9âä=ä:] 9âä=!ä:]";5#]$;5%]&;5'](=)]*;5+],;5-].;5/]0;51]2@]3@]4?]5?]6@]7@]8@]9@]:Z\];Z\]‚]?‚]@‚]A‚]B‚]C‚]DY=E]FZY=G]H=I]J=K]LZY=M]H=N]O\`\]P\`\]P\]Q\Š˙˙˙˙Q;R ¸S ä:Qˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5ä:6Qˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5Dä:6DQˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5Cä:6CQˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5@ä:6@Qˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5Aä:6AQˆ˙˙˙˙;R ¸T äˆ˙˙˙˙5Bä:6BQ;R ¸U ä:Qˆ˙˙˙˙Âė•Ę˜€!ĚϐĎĎĎĎĎĎĎĎĎĎĎĎŮŮŮĎĎĎĘĎĎĎĎ––––––––ĘĘĘĘ˜€"ʘ€"ʘ€"ľĘ˜€#Rʘ€#řʘ€$€Ę˜€$ѕʐ”•ĘĘĘ”•Ęń˜€$ĺˆѐˆѐˆʈonSelectionChanged AnnotsString IDS_TRACKER_LATEST_UPDATES_TITLEcLatestUpdatesIDS_TRACKER_REVIEWS_UPDATEScReviewsUpdatesIDS_TRACKER_NO_REVIEWS_UPDATEScNoReviewsUpdatesIDS_TRACKER_FORMS_UPDATES cFormsUpdatesIDS_TRACKER_NO_FORMS_UPDATEScNoFormsUpdatesIDS_TRACKER_SERVER_STATUS cServerStatus&IDS_TRACKER_UBER_TABLE_HEADER_FILENAMEcTableHeaderFileName&IDS_TRACKER_UBER_TABLE_HEADER_DEADLINEcTableHeaderDeadline*IDS_TRACKER_UBER_TABLE_HEADER_NUM_COMMENTScTableHeaderNumberOfComments+IDS_TRACKER_UBER_TABLE_HEADER_NUM_REVIEWERScTableHeaderNumberOfReviewers-IDS_TRACKER_UBER_TABLE_HEADER_UNREAD_BY_TOTALcTableHeaderUnreadByTotal*IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_TOTALcTableHeaderNewByTotal+IDS_TRACKER_UBER_TABLE_HEADER_NEW_BY_ACTIVEcTableHeaderNewByActivegetFormsString*IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDENTScTableHeaderRespondentsAndNew/IDS_FORMS_TRACKER_TABLE_HEADER_TOTAL_RECIPIENTScTableHeaderTotalRecipients-IDS_FORMS_TRACKER_TABLE_HEADER_DISTRIBUTED_ONcTableHeaderDistributedOn.IDS_TRACKER_UBER_TABLE_HEADER_NUM_ACTIVE_FILEScTableHeaderNumberOfActiveFiles(IDS_TRACKER_UBER_TABLE_HEADER_NUM_ERRORScTableHeaderNumberOfErrors)IDS_TRACKER_UBER_TABLE_HEADER_SERVER_NAMEcTableHeaderServerNameNBSP_PLACEHOLDERnbsp_placeholderIDS_TRACKER_UNREAD_BY_TOTALcUnreadByTotalIDS_TRACKER_NEW_BY_ACTIVE cNewByActiveIDS_SHARED_REVIEW_NO_DEADLINE cNoDeadline"IDS_SHARED_REVIEW_DEADLINE_UPDATEDcUpdated formsXHTML reviewsXHTMLreviewsSectionHasUpdatesformsSectionHasUpdatesreviewsAggInfo formsAggInforeviewsSectionFeedformsSectionFeedaFormsWorkflowsaReviewsWorkflowsaServersInErrorsetReviewsSectionHasUpdatessetFormsSectionHasUpdatesupdateReviewsXHTMLupdateFormsXHTMLupdateServersXHTML showFeedView showEmptyViewPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙Á‘š "dialoghaveCollabWorkflowshaveFormWorkflowsdő÷š!; ¸ ä:Q;5WQ;5WQ; ¸ ä:Q;5=EQVBE QVBA ¸ äTä:QA ¸ äTä:Qˆѐΐΐˆѐć•ˆ֐ˆшapp beginPrivCollab haveReviews FormWorkflowhaveFormWorkflowsendPriv viewerTypeReader showEmptyView showFeedView˙˙˙˙Á š hasUpdateséţ!AT6Qˆʈ+reviewsSectionHasUpdates˙˙˙˙Á š hasUpdates_"AT6Qˆʈ)formsSectionHasUpdates˙˙˙˙Á¸ šVśŠČdialogaggInfobHasAWorkflowWithTrueUpdatesfileNamefileMap numErrors tableXHTML borderedDivxhtmlicurrentcurValtrav evenOddRow curWorkflow cComments cReviewers cRowColortrXHTML arguments„" Š˙˙˙˙Qˆ˙˙˙˙QA5@R; ¸ ä:QA; ¸ ä:6QA5 ¸ äAä:Q; ¸ ä:Q; ¸ ä:QA5 ¸ ä:Š˙˙˙˙Q; ¸ ä:QBŠ˙˙˙˙QAZ\6Qˆ˙˙˙˙K2mMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙5 Š˙˙˙˙Qˆ˙˙˙˙>A5A5Ů Yˆ˙˙˙˙] ˆ˙˙˙˙5 ] ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5 ]ˆ˙˙˙˙5]\8QCŠ˙˙˙˙QA5A5Ů ?75=%A5A5Ů ?7A5 6QA5A5Ů ?758A5A5Ů ?7 5=!A5"=#6QWA5A5Ů Yˆ˙˙˙˙5]ˆ˙˙˙˙5 ]ˆ˙˙˙˙5]\8QăL˙˙ýĐNˆ˙˙˙˙ ZAż=%ż=&ż='ŔA5(ł=)=)=*ż=+ŔA5,ł=-=.°6$QAż=/ż=&ż='ŔA5(ł=)=)=0°6$Qż=1ż=2=3=4¨Ŕ;5˛§Š=6=7ż=8ŔA59ł=:=7ż=;ŔA5<ł=:=7ż=;ż==ŔA5>ł=?ŔA5@ł=A=:=7ż=;ż==ŔA5Bł=?ŔA5Cł=A=:=D=E°Š˙˙˙˙Q@Š ˙˙˙˙Q;Fä=GäRŠ ˙˙˙˙QA5$ˆ ˙˙˙˙¤H­KDmMŠ ˙˙˙˙Qˆ ˙˙˙˙ŁIŚ7=Jˆ ˙˙˙˙Š ˙˙˙˙Q ăL˙˙˙žNˆ ˙˙˙˙ ¸K äˆ˙˙˙˙ä:Q?Š ˙˙˙˙Q mA5ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙?Š˙˙˙˙QtmA5ˆ˙˙˙˙75ˆ ˙˙˙˙5W(A5ˆ˙˙˙˙?A5ˆ˙˙˙˙78Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙>˙˙˙„ˆ˙˙˙˙?ˆ ˙˙˙˙!A5ˆ˙˙˙˙?ˆ ˙˙˙˙8Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙A5Ů ˙˙ţäBŠ˙˙˙˙Q>Š ˙˙˙˙Q!mA5ˆ ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙5>Ů=ˆ˙˙˙˙5=Lˆ˙˙˙˙5Š˙˙˙˙Q=ˆ˙˙˙˙5=Lˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙;M ;NŠ˙˙˙˙Qż=2=3=4¨Ŕˆ˙˙˙˙˛§Š=6=7ż=Oż=2=P=Q¨Ŕˆ˙˙˙˙5 ˛§Š=6ż=RŔˆ˙˙˙˙5 ł=)=S=T=7ż=UŔˆ˙˙˙˙5ł=T=7ż=Uż==Ŕˆ˙˙˙˙ł=A=T=7ż=Uż==Ŕˆ˙˙˙˙ł=A=T=D°Š˙˙˙˙Qˆ˙˙˙˙ ¸K äˆ˙˙˙˙ä:Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙A5Ů ˙˙ýÍÂėĘČ•ˆѐˆאˆԐˆј€"ˆѐˆېˆѐËˆ̐Ë0€5ѐÝŘË€Š•ˆ ѐ•ÎÓÓÓÓÓÓÓÓÓÖˆ ːß•ˆ ŕŮ•ˆ ěp̐ˆ ѐ•ÓÓß˜€"Iˆ Ę•ˆ‘–㐐–—Ȑ—Íˆ’ˆ‘–ă˜€"a͐–çÜÜřň—ѐËÚ×0GѐÉˆÍ•ˆ Ӑ@Θ€"|ˆߐˆ Ę € €ň€!–ˆ™€"€ÚŐ t\€–ˆ™€"‡ä •@ʐˆ 㘀"†ˆؘ€"Œ˜€"†ˆ Ҙ€"Ő•ˆܘ€"ˆDؘ€"˜€"ˆܘ€"”ːˆ Ę €!€ €8–ˆ™€"˜Ú˜€"Đ•óóˆˆ ԐÉ ސë˙ăäěćŃˆߘ€"—ˆDؘ€"°˜€"—ˆܘ€"°ˆ(reviewsAggInfoapp beginPrivCollabgetAggregateReviewInfo setHandlerendPriv sectionFeedaReviewsWorkflowserrorslength cFileNamedocLink cFileLink totalCommentsnTotalCommentsunreadCommentsnUnreadCommentslastUpdateTimeiLastUpdateTime newReviewers nNewReviewersactiveReviewersnActiveReviewersdeadline cDeadlinedeadlineUpdatedbDeadlineUpdatednNumberOfErrors serverName cServerName cNoDeadline (cUpdated) reviewsXHTML$<div class="summary_page"> #<span class="reviews-super-iconic"> <span style="font-weight:bold;">cReviewsUpdates</span>( <br/> <br/> <span> &#8226; cNoReviewsUpdates </span> <br/> </div>H<div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> | <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div>`<table id="updatedReviewsList" class="borderedTable" cellpadding="15" cellspacing="0"> <trbgcolorcTableHeaderColor> <th style="padding-left: 10px;">cTableHeaderFileName</th><th>cTableHeaderDeadline<center>cTableHeaderNumberOfComments<br/>cTableHeaderNewByTotal </center>cTableHeaderNumberOfReviewerscTableHeaderNewByActive </tr> </table> Namespacehttp://www.w3.org/1999/xhtmldivid borderedDivID appendChild / cTableOddRowColorcTableEvenRowColor <td style="padding-left: 10px;">ahref<span class="blueLink"></a></td><td>t88!nÁGČ5˙˙˙˙Á´ šM–ČdialogaggInfobHasAWorkflowWithTrueUpdatesfileNamefileMapcRecipientsResponded tableXHTML borderedDivxhtmlicurrentcurValtrav evenOddRow isFirstRow curWorkflow cRowColortrXHTML arguments942ľ" Š˙˙˙˙Qˆ˙˙˙˙QA5@R; ¸ ä:QA; ¸ ä:6QA5 ¸ äAä:Q; ¸ ä:Q; ¸ ä:QA5 ¸ ä:Š˙˙˙˙Q; ¸ ä:QBŠ˙˙˙˙QAZ\6Qˆ˙˙˙˙KmMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QA5A5Ů Yˆ˙˙˙˙] ˆ˙˙˙˙5 ] ˆ˙˙˙˙5 ]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]ˆ˙˙˙˙5]\8QA5A5Ů ?75>CŠ˙˙˙˙Q=A5A5Ů ?75Š˙˙˙˙Qˆ˙˙˙˙=A5A5Ů ?75=Š˙˙˙˙QA5A5Ů ?7ˆ˙˙˙˙6QăL˙˙ţeNˆ˙˙˙˙ ZAż= ż=!ż="ŔA5#ł=$=$=%ż=&ŔA5'ł=(=)°6QAż=*ż=!ż="ŔA5#ł=$=$=+°6Qż=,ż=-=.=/¨Ŕ;0˛§Š=1=2ż=3ŔA54ł=5=2ż=6ŔA57ł=5=2ż=6ż=8ŔA59ł=:=5=2ż=6ż=8ŔA5;ł=:=5=<==°Š˙˙˙˙Q@Š ˙˙˙˙Q;>ä=?äRŠ ˙˙˙˙QA5ˆ ˙˙˙˙¤@­KDmMŠ ˙˙˙˙Qˆ ˙˙˙˙ŁAŚ7=Bˆ ˙˙˙˙Š ˙˙˙˙Q ăL˙˙˙žNˆ ˙˙˙˙ ¸C äˆ˙˙˙˙ä:Q?Š ˙˙˙˙Q mA5ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙?Š˙˙˙˙QtmA5ˆ˙˙˙˙75ˆ ˙˙˙˙5W(A5ˆ˙˙˙˙?A5ˆ˙˙˙˙78Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙>˙˙˙„ˆ˙˙˙˙?ˆ ˙˙˙˙!A5ˆ˙˙˙˙?ˆ ˙˙˙˙8Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙A5Ů ˙˙ţäBŠ˙˙˙˙QCŠ˙˙˙˙Q>Š ˙˙˙˙QĹmA5ˆ ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙5>}ˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙;D ;EŠ˙˙˙˙Qż=-=.=/¨Ŕˆ˙˙˙˙˛§Š=1=2ż=Fż=-=G=H¨Ŕˆ˙˙˙˙5 ˛§Š=1ż=IŔˆ˙˙˙˙5 ł=$=J=K=2ż=LŔˆ˙˙˙˙5ł=K=2ż=Lż=8Ŕˆ˙˙˙˙5ł=:=K=2ż=Lż=8Ŕˆ˙˙˙˙5ł=:=K=<°Š˙˙˙˙Qˆ˙˙˙˙ ¸C äˆ˙˙˙˙ä:Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙A5Ů ˙˙ţ)ÂėĘČ•ˆѐˆאˆԐˆј€"ˆѐˆېˆј€"Čːˆ̐Ë0€ ŃÝˆѐ•ÎÓÓÓÓÓÓÓÖŰ•ˆːéˆîpːˆ였"çˆ Ę•ˆ‘–㐐–—Ȑ—Íˆ’ˆ‘–ă˜€"˙͐–çÜÜéă—ѐËÚ×0GѐÉˆÍ•ˆ Ӑ@Θ€#ˆߐˆ Ę € €ň€!–ˆ™€#ÚŐ t\€–ˆ™€#%ä •@ʐˆ 㘀#$ˆؘ€#*˜€#$ˆ Ҙ€#-Ő•ˆܘ€#ˆBؘ€#.˜€#ˆܘ€#2ːËˆ Ę €ŀ­€ܖˆ™€#8Ú˜€#=Đ•ˆ ˆ ԐÉ ސë˙ăäńëŃˆߘ€#7ˆBؘ€#M˜€#7ˆܘ€#Mˆ( formsAggInfoapp beginPriv FormWorkflowgetAggregateFormWorkflowInfo setHandlerendPriv sectionFeedaFormsWorkflowslength cFileNamedocLink cFileLink distributedOncDistributedOntotalRecipientsnTotalRecipientstotalRespondentsnTotalRespondentsnewRespondentsnNewRespondentslastUpdateTimeiLastUpdateTimeerrorsnNumberOfErrors serverName cServerName ()cRecipientsResponded formsXHTML$<div class="summary_page"> !<span class="forms-super-iconic"> <span style="font-weight:bold;"> cFormsUpdates</span>( <br/> <br/> <span> &#8226; cNoFormsUpdates </span> <br/> </div>H<div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> | <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div>^<table id="updatedFormsList" class="borderedTable" cellpadding="15" cellspacing="0"> <trbgcolorcTableHeaderColor> <th style="padding-left: 10px;">cTableHeaderFileName</th><th>cTableHeaderDistributedOn<center>cTableHeaderRespondentsAndNew </center>cTableHeaderTotalRecipients </tr> </table> Namespacehttp://www.w3.org/1999/xhtmldivid borderedDivID appendChildcTableOddRowColorcTableEvenRowColor <td style="padding-left: 10px;">ahref<span class="blueLink"></a></td><td>ĚÜ…!ťGČ ˙˙˙˙Á° š;ěŽČdialog oServersInfocurrent curWorkflow cServerName serverName serverMap tableXHTML borderedDivxhtmli evenOddRowcurValtrav curServer cRowColortrXHTML arguments]2;IR# Š˙˙˙˙QY\Š˙˙˙˙Q>Š˙˙˙˙Q+mA5ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙5> ވ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7@+ˆ˙˙˙˙ˆ˙˙˙˙Y>]>]\8Qˆ˙˙˙˙ˆ˙˙˙˙7 5ˆ˙˙˙˙56Qˆ˙˙˙˙5ˆ˙˙˙˙ˆ˙˙˙˙75,ˆ˙˙˙˙ˆ˙˙˙˙7ˆ˙˙˙˙56Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A5Ů˙˙ţĂ>Š˙˙˙˙Q+mA5ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙5> ވ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7@+ˆ˙˙˙˙ˆ˙˙˙˙Y>]>]\8Qˆ˙˙˙˙ˆ˙˙˙˙7 5ˆ˙˙˙˙56Qˆ˙˙˙˙5ˆ˙˙˙˙ˆ˙˙˙˙75,ˆ˙˙˙˙ˆ˙˙˙˙7ˆ˙˙˙˙56Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A5Ů˙˙ţĂAZ\6Qˆ˙˙˙˙KŠmMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QA5A5ŮYˆ˙˙˙˙]ˆ˙˙˙˙=ˆ˙˙˙˙ˆ˙˙˙˙]ˆ˙˙˙˙5]ˆ˙˙˙˙5]>] \8QăL˙˙˙YNA5Ů>A= 6 QAż= ż= ż=ŔA5ł===°6 Qż=ż===¨Ŕ;˛§Š==ż=ŔA5ł==ż=ż=ŔA5ł===ż=ż=ŔA5 ł===!="°Š ˙˙˙˙Q@Š ˙˙˙˙Q;#ä=$äRŠ ˙˙˙˙QA5 ˆ ˙˙˙˙¤%­KDmMŠ ˙˙˙˙Qˆ ˙˙˙˙Ł&Ś7='ˆ ˙˙˙˙Š ˙˙˙˙Q ăL˙˙˙žNˆ ˙˙˙˙ ¸( äˆ ˙˙˙˙ä:QBŠ ˙˙˙˙Q?Š˙˙˙˙Q mA5ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙?Š˙˙˙˙QtmA5ˆ˙˙˙˙75ˆ˙˙˙˙5W(A5ˆ˙˙˙˙?A5ˆ˙˙˙˙78Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙>˙˙˙„ˆ˙˙˙˙?ˆ˙˙˙˙!A5ˆ˙˙˙˙?ˆ˙˙˙˙8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A5Ů˙˙ţä>Š˙˙˙˙QmA5ˆ˙˙˙˙7Š˙˙˙˙Q;) ¸* ä:Qˆ˙˙˙˙ 5 ;+ ¸, äˆ˙˙˙˙5ä:6 Qˆ˙˙˙˙ 5 ;- ¸. äˆ˙˙˙˙5ä:6 Q;) ¸/ ä:Qˆ ˙˙˙˙ Š ˙˙˙˙Qˆ ˙˙˙˙;0 ;1Š˙˙˙˙Qż===¨Ŕˆ˙˙˙˙˛§Š==2ż=3ż==4=5¨Ŕˆ˙˙˙˙5˛§Š=ż=6Ŕˆ˙˙˙˙5ł==7=8=2ż=9ż=Ŕˆ˙˙˙˙5 ł==8=2ż=9ż=Ŕˆ˙˙˙˙5ł==8=:°Š˙˙˙˙Qˆ ˙˙˙˙ ¸( äˆ˙˙˙˙ä:Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A5Ů˙˙ýÖÂėĐ˜€#Zˆ Ę €+€€B–ˆ™€#[ÚĐ•8•ŘŐ•ˆҐ•–ɘ€#kˆçp—畈瘀#ZˆDؘ€#m˜€#Zˆܘ€#rˆ Ę €+€€B–ˆ™€#sÚĐ•8•ŘŐ•ˆҐ•–ɘ€#ƒˆçp—畈瘀#rˆBؘ€#…˜€#rˆܘ€#‰ˆ̐Ë0€ŹŃÝˆѐ•ÎčÓÓŇ˜€#™Í•ˆ̐ˆ’ˆ‘–ă˜€#¨Í–çÜéă—ѐËÚ×0GѐÉˆÍ•ˆ Ӑ@Θ€#ˆߐËˆ Ę € €ň€!–ˆ™€#ȐÚŐ t\€–ˆ™€#ϐä •@ʐˆ 㘀#Έؘ€#Ԙ€#Έ Ҙ€#×Ő•ˆܘ€#LjBؘ€#ؘ€#Ljܘ€#݈ Ę €€€/–ˆ™€#ސڐˆѐˆîp—ˆîp—ˆѐˆ ˆ ԐÉ ސë˙ăńëŃˆߘ€#݈Bؘ€#ô˜€#݈ܘ€#ôˆ'aReviewsWorkflowsnNumberOfErrors cServerNameiLastUpdateTimelengthaFormsWorkflowsaServersInError# cServerLinknActiveWorkflows serversXHTMLH<div xmlns="http://www.w3.org/1999/xhtml" class="summary_page"> #<span class="servers-super-iconic"> <span style="font-weight:bold;"> cServerStatus</span>| <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div>^<table id="updatedFormsList" class="borderedTable" cellpadding="15" cellspacing="0"> <trbgcolorcTableHeaderColor> <th style="padding-left: 10px;">cTableHeaderServerName</th><th><center>cTableHeaderNumberOfActiveFiles </center>cTableHeaderNumberOfErrors </tr> </table> Namespacehttp://www.w3.org/1999/xhtmldivid borderedDivID appendChildapp beginPrivCollabgetNumberOfReviewsOnServer FormWorkflow getNumberOfFormWorkflowsOnServerendPrivcTableOddRowColorcTableEvenRowColor <td style="padding-left: 10px;">ahref<span class="blueLink"></a></td><td> </tr>u/D!zÂGĐŹrB B˙˙˙˙Áý šK}Čdialog"bDisplayToggleSynchronizerIconLink"cDisplayToggleSynchronizerIconLinkcToggleSynchronizerLinkIconiccToggleBezelLinkIconiccToggleSynchronizerIconcToggleDisplayBezelcToggleSynchronizerIconLinkcToggleDisplayBezelLink viewXHTMLmainContainerDivxhtmlidownButtonsXHTMLstm arguments^IN[ř# Š˙˙˙˙Q†;5=Š˙˙˙˙Qˆ˙˙˙˙= =Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Qˆ˙˙˙˙; ¸ ä:Q;5-;5 Š˙˙˙˙Q= Š˙˙˙˙Q(;5 Š˙˙˙˙Q= Š˙˙˙˙Q; ¸ ä:Q=Š˙˙˙˙Q; ¸ ä:Q;5-;5Š˙˙˙˙Q=Š˙˙˙˙Q(;5Š˙˙˙˙Q=Š˙˙˙˙Q; ¸ ä:Qˆ˙˙˙˙ ¸ ä=ä;5=;5;5ä:Š˙˙˙˙Q=Š ˙˙˙˙Q=Š ˙˙˙˙Qż=ż=ż=ŔA5ł== =!°Š ˙˙˙˙Q@Š ˙˙˙˙Q;"ä=#äRŠ ˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙¤$­KDmMŠ˙˙˙˙Qˆ˙˙˙˙Ł%Ś7=&ˆ˙˙˙˙Š ˙˙˙˙Q ăL˙˙˙žNA5'A ¸( ä:Qˆ ˙˙˙˙ ¸) äA5*ä:QA5+A ¸, ä:Qˆ ˙˙˙˙ ¸) äA5-ä:QA5'D QA5+A ¸. ä:Qˆ ˙˙˙˙ ¸) äA5/ä:Qż=0ż=1=2=3¨Ŕˆ˙˙˙˙˛§Š=4¨Ŕˆ˙˙˙˙˛§Š=5¨Ŕˆ ˙˙˙˙˛§Š=6ż=7Ŕˆ˙˙˙˙ł=8=9=:ż=1=2=3¨Ŕˆ˙˙˙˙˛§Š=5¨Ŕˆ ˙˙˙˙˛§Š=6ż=7Ŕˆ˙˙˙˙ł=8=9=;°Š˙˙˙˙Qˆ ˙˙˙˙ ¸) äˆ˙˙˙˙ä:QA ¸< ä>ä:QA ¸= ä>ä:Q;> ¸? äˆ ˙˙˙˙ ¸@ ä: ¸ ä ä=Aä:ä=Bä:Š˙˙˙˙Q; ¸ ä:Q; ¸C äˆ ˙˙˙˙ ¸@ ä: ¸ ä ä=Aä:ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸D äYˆ˙˙˙˙]E\ä:QœĆvŠQ9FâFä=Gˆä:Q9FâFäˆ5Hä:Q;I ¸J ä=Gˆä:Q;I ¸J äˆ5Hä:QÇÂė‘ÚÉ ސĎĎĎÉ•ˆѐĘ(•ˆԐˆԐˆԐˆϐˆѐĎˆѐĘ(•ˆԐˆԐˆԐˆϐˆѐˆç쐐ϐϐ™€$-•–—ȐŸ€$7—Ń˜€$<ːÚÚ0GѐÉˆ Í•ˆӐ@Θ€$J•ˆ͐ˆܘ€$R•ˆ͐ˆܘ€$ZŇ•ˆ͐ˆܐ‘•˙ň˙ِѐˆߐˆϐˆϘ€$p˙͐ˆѐˆýˆѐˆęx•Đˆߐˆސˆᐈŕ€{–ˆappplatformWINdisplay: none; beginPrivCollabisSynchronizerIconShown AnnotsStringIDS_TRACKER_REMOVE_SYNC_ICON$turn-off-notification-in-tray-iconicIDS_TRACKER_RESTORE_SYNC_ICON#turn-on-notification-in-tray-iconicendPrivisDisplayBezelEnabled%IDS_TRACKER_REMOVE_NOTIFICATION_BEZEL'turn-off-notification-in-acrobat-iconic&IDS_TRACKER_RESTORE_NOTIFICATION_BEZEL&turn-on-notification-in-acrobat-iconicreplace {product} viewerTypeReaderIDS_PRODUCT_VARIANT_READERIDS_PRODUCT_VARIANT_ACROBAT%acrobat:Review?toggleSynchronizerIcon-acrobat:Review?toggleDisplayNotificationBezelě<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> #<div class="bread_crumb"> cLatestUpdates &gt; </div>I <div id="mainContainer"> </div> </body> </html> Namespacehttp://www.w3.org/1999/xhtmldivid mainContainerreviewsSectionHasUpdatesupdateReviewsXHTML appendChild reviewsXHTMLformsSectionHasUpdatesupdateFormsXHTML formsXHTMLupdateServersXHTML serversXHTMLY<div class="buttons" style="margin: 20px 0 0 35px;"> <br/> <br/> <aclassstylehref><span class="blueLink"></span></a>  </div>setReviewsSectionHasUpdatessetFormsSectionHasUpdatesutilstreamFromString toXMLString&nbsp;utf-8saveTrackerHTMLloadhtmlmyReviewTrackerDebugAlert EXCEPTION: stackconsoleprintln˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDERYsG˙˙˙˙ÁDšCˆAdialogLINK cWelcomeStrcWhatIsReviewTitlecWhatIsReviewTextcCreateSharedReviewTextcCreateSharedReviewLinkcCreateEmailReviewTextcCreateEmailReviewLinkcWhatIsFormTitlecWhatIsFormTextcCreateFormTextcCreateFormLinkcDistributeFormTextcDistributeFormLink viewXHTMLstmn[źg€$†‚WQ; ¸ äYB]\ä:Q;5WQ;5WQ9âä;5ä:WQ;5WQÔä= ä= ä:WQ;5 WQÔä= ä= ä:WQ;5 WQ9âä;5ä:W Q;5W QÔä= ä=ä:W Q;5W QÔä= ä=ä:W Qż=ż=ż=ż=ż=ŔVł==ż=ŔVł==ż=ŔVł=== ż=!ż="=#=$¨ŔV˛§Š=%¨=&ż='ŔVł=(=)=ż="=#=$¨ŔV˛§Š=*¨=&ż='ŔVł=(=)== ż=+ż=ŔVł==ż=ŔV ł=== ż=!ż="=#=$¨ŔV ˛§Š=,¨=&ż='ŔV ł=(=)=ż="=#=$¨ŔV ˛§Š=-¨=&ż='ŔV ł=(=)==.=/=0°WQ;1 ¸2 äV ¸3 ä: ¸4 ä ä=5ä:ä=6ä:WQ;7 ¸8 ä:Q;9 ¸: äV ¸3 ä: ¸4 ä ä=5ä:ä:Q;7 ¸; ä:QT ¸< äYV]=\ä:Q~ĆvWQ;> ¸? ä=@Vä:Q;> ¸? äV5Aä:Q9BâBä=@Vä:Q9BâBäV5Aä:Qǐ‘ÉˆސÎÎÝÎŘÎŘÎÝÎŘÎŘ™€$œ•–––—•ÍŮ—•—͐–˙–˙Í–Ů—•—͐–˙–˙———ː˙‘ˆѐˆ÷ˆѐˆŢx•Ęˆېˆڐˆِˆ؀{–ˆXML setSettingsignoreComments AnnotsStringIDS_TRACKER_WELCOMEIDS_TRACKER_NO_REVIEWS_TITLECBSetProductVariantIDS_TRACKER_NO_REVIEWS_BODY IDS_TRACKER_CREATE_SHARED_REVIEWacrobatReview?initiate=SharedReviewIDS_TRACKER_CREATE_EMAIL_REVIEWReview?initiate=EmailReviewIDS_TRACKER_NO_FORMS_TITLEIDS_TRACKER_NO_FORMS_BODYIDS_TRACKER_CREATE_SHARED_FORMForms?action=createForm"IDS_TRACKER_DISTRIBUTE_SHARED_FORMForms?action=distributeFormń<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> 2<div class="content_uber_summary_page"> <div> <div class="error">  </div> <h3></h3> <p>  </p> </div> !<div class="buttons"> <ahrefclass="create-shared-iconic"><span class="blueLink"></span></a>class="create-email-iconic"<div> class="create-form-iconic"class="distribute-form-iconic" </div> </body> </html>utilstreamFromString toXMLStringreplace&nbsp;utf-8app beginPrivCollabsaveTrackerHTMLendPrivloadhtmlconsoleprintln EXCEPTION: stackmyReviewTrackerDebugAlert˙˙˙˙ÁšschemesŞ[Ň[„$T=Tˆ'Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDERÉ˙˙˙˙Áš selection|k˜kń$@ˆ,Š ˙˙˙˙Áš selectionškŐkň$@ˆ,Š ˙˙˙˙Áš selectionóklô$Bˆ'Š ˙˙˙˙Áš selection,lIlő$Bˆ'Š ˙˙˙˙ÁxšJßt/oü}% ;'=k; ¸ ä=ä;5äY‚]\ä:Q; ¸ ä=äCä:Q;'=EQ; 5 = <; ¸ ä= ä;5 äY‚]\ä@äCä:Q; ¸ ä=ä;5äY‚]\ä:Q; ¸ ä=ä;5äY‚]\ä:Q; ¸ ä=äCä:Q; ¸ äY=];5]Y;5]Y;5]=]\]Y;5]=]\] Y;5!]="]\]#Y;5$]=%]\]&\]'=](\ä:Q; ¸ äY=)];5*]Y;5+],;5-]&\]'=,](C].\ä:Q; ¸ äY=/];50]Y;51]/;52]3\]'=3](C].B]4\ä:Q; ¸ äY=5];56]Y;57]8;59]:\]'=8](C].B]4\ä:Q; ¸ äY=;];5<]Y;5];5=]>;5?]@\]'=](C].B]4\ä:Q; ¸ äY=A];5B]Y;5C]D;5E],;5F]G\]'=D](C].C]4\ä:Q;;I6HQˆĚ•ˆސՐˆِˆâ•ˆސِˆސՐˆސՐˆِˆ͐•ĘĎ•Ď•ĎĐ•ĎĐ•ĎĐ•ĎÖĐˆ͐•ĘĎ•ĎŐĘĚˆ͐•ĘĎ•ĎŐĘ–̐ˆ͐•ĘĎ•ĎŐĘ–̐ˆ͐•ĘĎ•ĎĎŐĘ–̐ˆ͐•ĘĎ•ĎĎŐĘ–̐ˆЈ Collab undefined addAnnotStoreNONE AnnotsStringIDS_STORE_NONEcreatesetStoreNoSettingsADBCappplatformWINDBIDS_STORE_DATABASEDAVFDFIDS_STORE_DAVFDFFSFDFIDS_STORE_FSFDFsetStoreFSBased addStateModelReviewcNameIDS_ACTION_REVIEWcUINameIDS_STATE_NONENoneIDS_STATE_ACCEPTA_Accept_Sm_N.png cIconNameAcceptedIDS_STATE_REJECTA_Reject_Sm_N.pngRejectedIDS_STATE_CANCELLEDA_Cancel_Sm_N.png CancelledIDS_STATE_COMPLETEDA_Complete_Sm_N.png CompletedoStatescDefault CollabStatusIDS_ACTION_COLLABIDS_STATE_COLLAB_ACTIVEModifiedIDS_STATE_COLLAB_COMPLETEDbHiddenMarkedIDS_ACTION_MARKEDIDS_STATE_MARKEDIDS_STATE_UNMARKEDUnmarkedbHistoryPrivacyIDS_ACTION_PRIVACYIDS_STATE_PUBLICPublicIDS_STATE_PRIVATEPrivateApprovalStatusIDS_ACTION_APPROVALIDS_STATE_APPROVAL_CONFIRMApproveIDS_STATE_APPROVAL_DENYRejectBasicIDS_ACTION_BASICIDS_STATE_CREATEDCreatedIDS_STATE_MODIFIEDIDS_STATE_DELETEDDeletedinviteANDefaultInvite˙˙˙˙Ášdocusersettingsĺo p %@ˆ.Š ˙˙˙˙ÁKšdocusersettingsćpq%TT6QT;6QTEQT=;äTäTäR@ˆ/̈Έ&ŇވK collabDBRoot collabDBFlagsCBFNiceTableNameADBCAnnotStore˙˙˙˙ÁTš docusersettings rŁr% TEQT=?;äTäTäTT55=ä;5äR@ˆ.Ň:˙Š FSAnnotStoreCollabdocID/ fileSystemWebDAV˙˙˙˙ÁIš docusersettingsss% TEQT=4;äTäTäTT55=äR@ˆ.Ň/öˆl FSAnnotStoreCollabdocID/˙˙˙˙e˙˙˙˙ encodeSMBurlűš 'path escapedPath componentsicmplenÁ~y€Œ% TEä×ä:=EQT ¸ ä=ä:×˙ť=WQT ¸ ä×ä:UQT ¸ ä=ä:WQVKOmMWQVV7WQV9âäVä:=WQ9âä=Vä:QăL˙˙˙łNVŮ WQV ¸ ä>äV?ä:˙•ÉˆՐؐ5RːËˆŕˆ␐̐ˆ׈$substrsmb:indexOf#split/encodeURIComponent DebugAlert escapedPath :length„R˙˙˙˙globalCheckForSameSMBLocationőš5smbURLdatasmbFolderChosenAsUNCfileLocationChosenvź…Ą% TWQV ¸ ä ä=ä:WQT55WQV ¸ ä>äV ¸ ä=ä:ä:WQ; ¸ ä:Q; ¸ äVäCä:WQ; ¸ ä:QV ¸ ä ä=ä:WQV ¸ ä:V ¸ ä:TC6 QTB6 Q˜€%§—ˆސŃˆ鐈ѐˆڐˆѐˆސÝ•ˆϐˆʈ=replacedocpath substring lastIndexOf/app beginPrivCollabconvertDIPathToPlatformPathendPriv toLowerCase/Error_DocumentLocationAndRepositoryLocationSame\/+$\/+$˙˙˙˙ DebugAlert#šstringԅX†ź%; ¸ ä:Q; ¸ ä:Qˆѐˆшapp beginPrivendPriv˙˙˙˙ DebugThrow7šeisDebugo†ˆÄ%; ¸ ä:Q;5WQ; ¸ ä:Q=pˆѐΐˆѐˆŽ app beginPrivCollab debugPrintlnendPriv˙˙˙˙ SharedString šstrIDˆJˆÓ%;T7ˆʈ AnnotsString˙˙˙˙ getDriver?š( reviewType`ˆâ‰Ř%Tx=y=yz===c;‘m •mʘ€%ܐˆ –P•ˆ –P•ˆ –P•ˆ SharedReviewFormDistribution9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com2urn://ns.adobe.com/Collaboration/Forms/Acrobat.com˙˙˙˙Ášdata@ŠzŠě%9âäT5ä:ˆ؈/IWEmailStepDescription reviewType˙˙˙˙ÁšdataV‹‹ř%9âäT5ä:ˆ؈/IWEmailStepDescription reviewType˙˙˙˙Ášdata–Œˌ&9âä=äBä:ˆ׈* IWBrowseDoc SharedReview˙˙˙˙Ášdata‹ɍ &9âä=äBä:ˆ׈3IWDistributionServer SharedReview˙˙˙˙ÁšdataŎ˙Ž&9âä=äBä:ˆ׈/IWIdentityDialog SharedReview˙˙˙˙Ášdatađ/&9âä=ä:ˆՈ4IWSharedReviewDocCenterLogin SharedReview˙˙˙˙Ášdata ‘O‘"&9âä=ä:ˆՈ7IWSharedReviewDocCenterCreateID SharedReview˙˙˙˙Ášdata2’y’)&9âä=ä:ˆՈ<$IWSharedReviewDocCenterCreateConfirm SharedReview˙˙˙˙ÁšdataL““0&9âäTä=äBä:ˆۈ8IWNewInternalServer SharedReview˙˙˙˙Ášdataƒ”Ȕ8&9âä=äBä:ˆ׈:IWDistributeStepDescription SharedReview˙˙˙˙Ášdataš•ř•@&9âä=ä:ˆՈ4IWSaveProfileStepDescription SharedReview˙˙˙˙ÁšdataŹ–ĺ–H&9âä=ä:ˆՈ.IWEmailStepDescription SharedReview˙˙˙˙Ášdataí—&˜T&9âä=äBä:ˆ׈. IWBrowseDocFormDistribution˙˙˙˙Ášdata+™m™\&9âä=äBä:ˆ׈7IWDistributionServerFormDistribution˙˙˙˙Ášdataiš§šd&9âä=äBä:ˆ׈3IWIdentityDialogFormDistribution˙˙˙˙Ášdata˜›ۛl&9âä=ä:ˆՈ8IWSharedReviewDocCenterLoginFormDistribution˙˙˙˙Ášdatašœ˙œs&9âä=ä:ˆՈ;IWSharedReviewDocCenterCreateIDFormDistribution˙˙˙˙Ášdataâ-žz&9âä=ä:ˆՈ@$IWSharedReviewDocCenterCreateConfirmFormDistribution˙˙˙˙Ášdata!Ÿ]Ÿ‚&9âä=äBä:ˆ׈1IWSubmitButtonFormDistribution˙˙˙˙ÁšdataF  Š&9âäTä=äBä:ˆۈ<IWNewInternalServerFormDistribution˙˙˙˙ÁšdataĄĘĄ’&9âä=äBä:ˆ׈>IWDistributeStepDescriptionFormDistribution˙˙˙˙Ášdatať˘ţ˘š&9âä=ä:ˆՈ8IWSaveProfileStepDescriptionFormDistribution˙˙˙˙Ášdata˛ŁďŁ˘&9âä=ä:ˆՈ2IWEmailStepDescriptionFormDistribution˙˙˙˙ÁšdataϤ ĽŻ&9âä=ä:ˆՈ1IWSharedReviewDocCenterLogin ShareFile˙˙˙˙ÁšdataňĽ1Śś&9âä=ä:ˆՈ4IWSharedReviewDocCenterCreateID ShareFile˙˙˙˙Ášdata§a§˝&9âä=ä:ˆՈ9$IWSharedReviewDocCenterCreateConfirm ShareFile˙˙˙˙Ášdata7¨l¨Ä&9âä=äBä:ˆ׈*IWBrowseAnyDoc ShareFile˙˙˙˙ÁšdatabŠ˜ŠĚ&9âä=ä:ˆՈ+IWEmailStepDescription ShareFile˙˙˙˙ÁšdataŞťŞŘ&9âä=ä:ˆՈ1IWSharedReviewDocCenterLogin ShareFile˙˙˙˙Ášdata˘ŤáŤß&9âä=ä:ˆՈ4IWSharedReviewDocCenterCreateID ShareFile˙˙˙˙ÁšdataÍŹ­ć&9âä=ä:ˆՈ9$IWSharedReviewDocCenterCreateConfirm ShareFile˙˙˙˙Ášdataç­Ží&9âä=äBä:ˆ׈*IWBrowseAnyDoc ShareFile˙˙˙˙ÁšdataAŻ}Żů&9âä=ä:ˆՈ1IWSharedReviewDocCenterLogin ShareFile˙˙˙˙Ášdata[°š°'9âä=ä:ˆՈ4IWSharedReviewDocCenterCreateID ShareFile˙˙˙˙Ášdata‡ąËą'9âä=ä:ˆՈ9$IWSharedReviewDocCenterCreateConfirm ShareFile˙˙˙˙Ášdataä˛#ł'9âä=ä:ˆՈ4IWSharedReviewDocCenterCreateID ShareFile˙˙˙˙Ášdata´T´'9âä=ä:ˆՈ9$IWSharedReviewDocCenterCreateConfirm ShareFile˙˙˙˙ GetStepNumąš*name reviewTypeľĄÁ 'Tx=y2=yč=y°=y =yDzoTx=yd=ya=y^=y\= yZ= yX= yV= yT= yR=yPzS>L?E×=×5×-×%××× × ˇTx=yn=yk=yh=yf= yd= yb=y`= y^= y\= yZ=yXz[>T?M×E×=×5×-×%×××  × ĺTx=y2= y/= y,=y*=y(z+>$?×× ×Tx=y= y= yz >?× Tx= y= yz>? ×˙×˙c€Ş‘m €']m €'›m €'ťm €'Ńmʘ€'$c€¸‘m €'-m €'2m €'7m €'  <˙˙˙˙ DebugPrintlnLš obj?ĚÓĚ-(; ¸ ä:Q;5; ¸ äTä:Q; ¸ ä:QˆѐĘ•ˆڐˆшapp beginPrivCollab debugPrintlnconsoleprintlnendPriv˙˙˙˙ TestReviewTš!HdocmethodparamspropîĚ3Ń7( ; ¸ ä:Q; ¸ ä:WQ; ¸ ä:Q=WQYV]=]= ] = ] = ]=]=];äR]V]V=]× ]>]=]\WQ; ¸ ä=ä:QVK.mMWQ; ¸ äV=VV7ä:QăL˙˙˙ÔN; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QˆѐԐˆѐÉ•ČĘĘĘĘĘĘĎČÎ—–ϐˆא51ˈ쐐ˆѐˆՐˆшapp beginPrivCollabGetActiveDocIWendPrivEMAILdocme@example.com initiator some-guididsmb://camelot/sync/testsource1urn://ns.adobe.com/Collaboration/SharedReview/SMBdriver*invitee1@example.com, invitee2@example.cominviteesoptional1@copmany.comccDatesentDatedistributionMethodUPLOAD requireSave versionInfo accessLeveljYour document has been distributed to reviewers as an email attachment and saved to your local hard drive. bezelMessageconsoleprintlnRegistering review - params: => registerReviewę1˙˙˙˙ANCreateMLSElementŰš 3 namewidthmeSŃ!ÓZ(T ¸ ä ä:WQY=]T]C]T]\WQV‘VYZT`Y=]\`\]\6QVV?76QY= ]= ] ZY=]=]\`V`\] \VŘ•ĘČ–͐ •ˆôˆΐˆ•ĘĘ”•ĘĎĎ˜€(vˆŒ match static_texttypename wrap_namewidth" zstring_widthdiffview align_topalign_childrenelements^\%bullet\%(.*)˙˙˙˙ANCreateMLSEElementsFromArrayĽš! nameOrArraywidthaiLÓzÔy( T; Z\TŮĹ=%Z9âäTäTä:`\Z\WQTKAmMWQV ¸ äZ9âäTV7äTä:`\ä:WQăL˙˙˙ÁNVÉ–ˆĎ•ˆŕÉ5Dːˆ˙ˆŒ undefinedlengthANCreateMLSElementconcat[D˙˙˙˙ANCreateTipElements(š:tipwidthtipDesc›ÔúÖ†(T  Z\ZY=]T]ZY=]=]ZY=]=]; 5 ]; 5 ] \`9 â äTäYZT`; 5 ×`\]\ä:`\]\`\ ¸ äT5ZY=]=]T]\`\ Z\ä:]\`\ˆ •ˆ–ˆ”•ĘČ”•ĘĘ”•ĘĘĎÔ˙Ԑ0ɐ•ĘĘÓŐˆclustertypewidthview align_rowalign_childrenimagetip1item_idCollab tipIconWidth tipIconHeightheightANCreateMLSElementdiffelementsconcat align_rightalign˙˙˙˙ANCreateSkipElementssš " skipLabelwidth×Iب(T  Z\ZY=]T]ZY=]=]=];5 ] \`\] \`\ˆ •ˆ–ˆ”•ĘČ”•ĘĘĘá˜€(şˆviewtypewidth check_boxskipitem_id align_left alignment AnnotsStringIDS_DONT_SHOW_AGAINnameelements˙˙˙˙CBSetProductVariantRš sjŘ4Ů˝(T ¸ ä ä;5 ¸ ä=ä:@;5;5ä:ˆѐÝ•ĎĎˆ-replaceapp viewerTypematchExchange AnnotsStringIDS_PRODUCT_VARIANT_ACROBATIDS_PRODUCT_VARIANT_READER{cProductVariant}˙˙˙˙CBIsValidEmail=š addremailREPŮ9ÚĆ( WQT;E)QT=EQT ¸ äVä:@ÉˆóˆH undefinedmatchx^([a-zA-Z0-9_\-\.\/]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,63}|[0-9]{1,3})(\]?)$˙˙˙˙ANFancyAlertImpl  o š=`ŤŘtitlecontenttipbuttonsdontShowMeAgainokcancelotherwidthhonourDSMACancelArg alertWidthhonourDSMACanceldesccaiccciditemheadermlsetebabcbidresult argumentsWÚ ëÍ( Š˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙;5Š ˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙BŠ ˙˙˙˙QYˆ˙˙˙˙]ˆ˙˙˙˙]\Š˙˙˙˙QZ\Š˙˙˙˙Qˆ˙˙˙˙KômMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Q=ˆ˙˙˙˙Š˙˙˙˙QZ\Š˙˙˙˙Q;Š˙˙˙˙Qˆ˙˙˙˙5LY=]ˆ˙˙˙˙5] = ] C] = ]\Š˙˙˙˙Qˆ˙˙˙˙58ˆ˙˙˙˙ˆ˙˙˙˙ŮY=]=] \8Qˆ˙˙˙˙5lˆ˙˙˙˙ˆ˙˙˙˙ŮY=]ˆ˙˙˙˙]ˆ˙˙˙˙55]ˆ˙˙˙˙55]\8Qˆ˙˙˙˙5„9âäˆ˙˙˙˙5äYZˆ ˙˙˙˙`ˆ˙˙˙˙5ˆ˙˙˙˙55Y=]\`\]\ä: Z\Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙ŮY=]=]ˆ˙˙˙˙ ¸ äˆ˙˙˙˙lZY=]=]= ]Zˆ˙˙˙˙`\ ¸ äZˆ˙˙˙˙`\ä:] \`\Zˆ˙˙˙˙`\ä:] \8QăL˙˙ýNˆ˙˙˙˙Y9!â!äˆ˙˙˙˙äˆ ˙˙˙˙ä:Š˙˙˙˙Qˆ˙˙˙˙ ¸ äˆ˙˙˙˙ä:Š˙˙˙˙QZ\Š˙˙˙˙Qˆ˙˙˙˙KŃmMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Q="ˆ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙ŮY=#]ˆ˙˙˙˙]ˆ˙˙˙˙] =$]\8Qˆ˙˙˙˙ˆ˙˙˙˙9%â%ä=&ˆ˙˙˙˙='ä{w)%8QăL˙˙˙1Nˆ˙˙˙˙EQˆ˙˙˙˙EQˆ ˙˙˙˙gˆ˙˙˙˙ˆ˙˙˙˙ŮY=(]ˆ˙˙˙˙])ˆ˙˙˙˙]*ˆ ˙˙˙˙]+=$]\8Qň˙˙˙˙EQˆ˙˙˙˙Yˆ˙˙˙˙ˆ˙˙˙˙ŮY=,]ˆ˙˙˙˙])ˆ˙˙˙˙]*=$]\8QTˆ˙˙˙˙Fˆ˙˙˙˙ˆ˙˙˙˙ŮY=-]ˆ˙˙˙˙])=$]\8Qˆ˙˙˙˙ˆ˙˙˙˙ŮY=]=]ˆ˙˙˙˙lZY=.]=/]ˆ˙˙˙˙50ˆ˙˙˙˙50;152] =]\`\ Z\] \8Qˆ˙˙˙˙ˆ˙˙˙˙ŮY=]=]=$]Z\ ¸ äˆ˙˙˙˙ä:] \8Qˆ˙˙˙˙‚63Qn4‚o4Qˆ˙˙˙˙;465Qˆ˙˙˙˙‚66Qˆ ˙˙˙˙ˆ˙˙˙˙;467Qˆ˙˙˙˙Yˆ˙˙˙˙] ZY=]=]ˆ˙˙˙˙] \`\] \68Q;9 ¸: ä:Q;9 ¸; äˆ˙˙˙˙ä:Š˙˙˙˙Q;9 ¸< ä:Qˆ˙˙˙˙ÂėÉ琐Éސ•ÎŮĎË0€÷ѐÝŮĎĎÎ•ˆ•ĘÓĘ–Ő˜€(ěΕˆא•ĘÍ˜€(ôΕˆא•ĘÎŘŰ˜€(ţÎ˙˙ѐˆܐʐʐÚg•ÉĘĘĘ˙‘瘀)É•ěˆ萐ĎË0€ÔѐÝŮˆܐʐΐΐ͐ˆ˙€))çb•ˆܐʐΐΐΐҐŘT•ˆܐʐΐΐҐÉ•ˆܐʐΐ͘€)FˆܐʐʐÉgɐ•ĘĘÎçŐÍˆܐʐʐʐ☀)ZˆԘ€)mˆИ€)sˆԐˆԐÉ•ˆԐˆΐΐ”•ĘĘŕ˜€)‡ˆѐ䐈ѐˆʈCollabAlertWithHelpWidthcontentdontShowMeAgainicn undefinedheader static_texttypenamedialogfontbold align_fill alignmentbulletlength" iconimageitem_idwidthheighttextANCreateMLSElement zstring_widthdiffview align_rowalign_childrenconcat align_leftelementsANCreateTipElementsbtnbutton align_righteval (function(dialog) { dialog.end(''); })ok_cancel_otherok_name cancel_name other_name ok_cancelok check_boxdsmalabel AnnotsStringIDS_DONT_SHOW_AGAIN initializesaveChangesToDSMAcommitothercancel descriptionapp beginPriv execDialogendPriv˙˙˙˙Á–š # dialogiliccç-čZ) Y=]A5A55B]\WQA5K’T ¸ ä>ä×ä:=.=T ¸ ä ä=ä:UQů;5=EQTŮ×ÓT ¸ ä>ä:WQV= EQV= DQV= EQV= EQT ¸ ä?ä:=hT ¸ ä×˙ä:=T=UQ; ¸ ä:Q; ¸ äTä:UQ; ¸ ä:QT ¸ ä ä: =T ¸ ä>ä×ä:==TUQ=TUQTĘ•Ů)•ˆ鐐ᕐԐüÖ•×$Čp•ˆѐˆؐˆј€)ŁˆŐ•Ů$͐ˆ͘€)ވŒ lengthsubstr\\smb:replace/appplatformWINcharAtazAZ:\ beginPrivCollabconvertMappedDrivePathToSMBURLendPrivmatch//\\ ^[a-z]+:.*˙˙˙˙ANSMBURLToPlatformPathš  smbUrl3ď^đŻ)9âä=Tä:Q;5=_TEQT ¸ ä>ä×ä:=8T ¸ ä×ä:UQT ¸ ä ä=ä:UQTˆِĐ•â•ˆՐˆސˆŒ DebugAlertsmbUrl 1appplatformWINsubstrsmb:replace\\/˙˙˙˙ SplitAddrsšaddrsaddrVec resultVecjiaddr¸đÇńż) T ¸ ä ä:WQZ\WQ>WQVKHmMWQVV7 ¸ ä ä=ä:WQVVV# ?WQV8QăL˙˙˙şNVŘÉ•5Kːâ •ˆܐˆŒsplitreplace$1 \;|\n|\r\n|\r^\s*(\S(?:.*\S)?)\s*$0K˙˙˙˙CBTrustPropagateWizHšwstepspčńaňĎ) T5WQVK)mMWQVV9âäVV7ä:8QăL˙˙˙ŮNTĚ5,ːˆ琈Œ stepsANTrustPropagateAll,˙˙˙˙CBCreateStepNavElements<š=navs activeStepresulti iconElement staticElement‡ň:őŘ) Z\WQTK mMWQY=];5];5]\WQY=];5 ] \WQVV5 ¸ ä ä??Vä:6 QVV5 ¸ ä äTV7ä:6 Q?V?TV= 6 QV ¸ äZY=]=]ZV`V`\]\`\ä:WQăL˙˙ţâNVÉ5€#ː•ĘĎÔ•ĘÔˆꐈꐐË•ˆΐˆԐʐʐˆŒimagetypeCollab navIconWidthwidth navIconHeightheight static_text AnnotsStringIDS_TITLE_TMPLnamereplaceitem_idnav1concatview align_rowalign_childrenelements\%num\%\%text\%#˙˙˙˙CBStartWizStep  ¤š3ŕWdialogtitlenavs activeStepheadingtexttiptipDesc finishString descriptionnoStepscancelPrevNextFinishWidth wizFramesstepDescriptioniWő’÷)YZY;5]\`Y;5]\`Y;5]\`YT]\`Y;5]\`\]\WQZ\WQT ;D QT ‹VVŮY= ] = ] ZY= ] ;5]=]C]\`\ ¸ ä9âäTäTä:ä:]\8QVVŮY=] = ] ZY= ] ;5]ZY= ] T];5]=]C]\`\ ¸ ä9âäTä;5ä:ä: ¸ äT 5ä: ¸ ä9âäTä;5äTä:ä:]\`Y=] =] =] ZY=] =!] =] ZY="] ;5]=#]$V]\`Y=%] ×]\`Y="] =&]=']$V]\`Y="] =(]=)]$V]\`\]\`\]\`\]\8Q9*â*äY‚])‚]'‚]#YT];5]ZY=] =+] V]\`\]\]\ä:WQT K(mMWQV=VVT V78QăL˙˙˙ÚNVT6Q;, ¸- ä:Q;, ¸. äVäTä:Q;, ¸/ ä:QT ¸0 ä=)ä:QT ¸1 ä=#ä:QV52Ĺ=V ¸2 äTä:QV˙˙̐ÉĎˆ •ˆː•ĘĘ˜€*”•ĘĎĘÔâ˜€*ˆː•ĘĘ”•ĘĎ”•ĘČĎĘÔéÔď•ĘĘĘ”•ĘĘĘ”•ĘĎĘÍ•ĘĚ•ĘĘĘÍ•ĘĘĘě˜€*VАʐʐʐ•ČĎ”•ĘĘâ˜€*j5+ːÉ•ˆؐˆ̐ˆѐˆِˆѐˆՐˆ՘€*zˆĎ•ˆӐˆŒ AnnotsString IDS_CANCEL string_width IDS_PREVIOUSIDS_NEXT IDS_UPLOADmax undefinedlengthclustertype align_leftalign_children static_text IDS_STEPSnamedialogfontboldconcatCBCreateStepNavElementselementsviewCollab wizardHeightheight wizardWidthwidthANCreateMLSEElementsFromArray descriptionANCreateTipElements align_right alignment align_rowbuttoncnclitem_idgap*prev*prev*next*nextANTrustPropagateAllalign_distributeapp beginPriv execDialogendPriv makeDefault makeCancel initialize˙˙˙˙Ášdialog]ţxţW*T ¸ ä:Qˆψnext˙˙˙˙ÁšdialogŒţŤţX*T ¸ ä:Qˆψprevious˙˙˙˙ÁšdialogżţÜţY*T ¸ ä:QˆψcancelŰ+˙˙˙˙CBRunSimpleWizšF@wizard startStepNum endStepNumdata descriptionŽ/€* 9âäYˆ˙˙˙˙]T]T>ˆ˙˙˙˙5Ů?T]T]‚]‚]‚] ‚] ‚] ‚] Y; 5]; 5]\]\ä:WQ; ¸ ä:QV5; ¸ äVä:6Q; ¸ ä:QV5ĐÎČçČĘ˜€*Ę˜€*­Ę˜€*łĘ˜€*¸Ę˜€*Őʘ€*ç•ĎŢ˜€*íˆѐˆ␈ѐˆɈANTrustPropagateAllwizard curStepNumstepslength endStepNumdatanextpreviouscancel commitCurStep startStep initializeCollab wizardWidthwidth wizardHeightheight descriptionapp beginPrivresult execDialogendPriv˙˙˙˙ÁÔš EnextStepfilterŁt‡*A ¸ äCä:QA5WQA55WQsmÔäA5äV?ä: NVA5A ¸ äV?ä:QA5 ¸ ä= ä:Q$V?WQăVA5˙˙˙†VA5A5 ¸ ä= ä:QˆϐĘĎ(•ˆ™€*ˆÖI•Ę•ˆؐˆؐ@ʐˆ t€*Žˆ ј€*›Ę$؈ commitCurStep curStepNumwizard stepFilterdata endStepNum startStepdialogendfnsh-˙˙˙˙Áƒš7 prevStepfilterŒÂ*A ¸ äBä:QA5WQA55WQRmV>DQÔäA5äV?ä: "A ¸ äV?ä:QV?WQăC˙˙˙°Âˆϐʐϐ(U•ˆ™€*¤ËˆÖ•ˆӐ@ʐˆ t€*Łˆ Ș€*ވ commitCurStep curStepNumwizard stepFilterdata startStep-U˙˙˙˙Á(š Ř\­*A ¸ äBä:QA5 ¸ ä=ä:Qˆϐˆ؈ commitCurStepdialogendcncl˙˙˙˙Á:š nextyćł*A5EQA55"A5 ¸ äA5äTä:Q×•ˆ݈'curStepcommitdialog˙˙˙˙Áš"I9stepNumwizSteptitlesiwiztitle˙É ¸*9âä=Tä:QA55T7WQAV ¸ äA5ä:6QA5A56QAT6QZ\WQA55K;mMWQV ¸ äZA55V75 `\ä:WQăL˙˙˙ÇNA55A575 WQA9 â äA5 äVäVäA5äV5 äV5#V5 ¸ ä ä:@äV5äV5äA55äA5äV5ä: 6 QA5 ¸ äYTA5;5ˆ˙˙˙˙5];5];5]=]=] \ä:QA5 ¸! äYT>]\ä:QˆِÓˆܐˆҐˆʐÉÍ0>ːˆů˜€*Éېˆó˙ݐˆӐĘçĎĎĘĐˆăˆ* DebugPrintln!$$$> in startStep: step number = wizardstepscurDescriptioncreatordata curStepNumconcattitlecurStepCBStartWizStepdialogheadingtextsplittiptipDesc finishStringnoStepsload endStepNum AnnotsStringIDS_NEXTnext IDS_PREVIOUSprev IDS_CANCELcnclC_Info_Xl_N.pngtip1C_GotoNextView_Sm_N.pngnav1enable \n|\r\n|\r>˙˙˙˙ÁĐš1dialogă EŐ*AT6QTA6Q; ¸ ä:QT; ¸ ä‚ä:6QT; ¸ ä‚ä:6QT; ¸ ä‚ä:6Q; ¸ ä:QA5 5 Ĺ= A5 ‚6 QA ¸ äA5 ä:QˆʐˆʐˆѐˆߐˆߐˆߐˆѐˆŇ•ˆѐˆԈ dialogmonitorapp beginPrivnexttrustPropagatorFunctionpreviouscancelendPrivwizard stepFilter undefined startStep curStepNum˙˙˙˙ÁšŠ Ľ Ű*A5 ¸ ä:Qˆ;҈monitornext˙˙˙˙Ášă Ü*A5 ¸ ä:Qˆ?҈monitorprevious˙˙˙˙Áš>[Ý*A5 ¸ ä:Qˆ=҈monitorcancel˙˙˙˙šdatastepNumňâ*Bˆ8Š ˙˙˙˙CBStartWizStepNew  iš:ŇPdialogtitlenavs activeStepheadingtexttiptipDesc finishString descriptionnoStepscancelPrevNextFinishWidth wizFramesstepDescriptioniPƒô*YZY;5]\`Y;5]\`Y;5]\`YT]\`Y;5]\`\]\WQZ\WQVVŮY=] = ] = ] =]=]=]=]ZY=] Z\ ¸ ä9âäTä;5ä:ä: ¸ äT 5ä: ¸ ä9âäTä;5äTä:ä:]\`Y=] = ] = ] ;5];5];5 ]!ZY=] ="] = ] ZY=#] ;5$]%=&]= ] V]\`Y='] = ] \`Y=#] =(]%=)]V]\`Y=#] =*]%=+]V]\`Y=#] ;5]%=,]V]\`\]\`\]\`\]\8Q9-â-äY‚]+‚])‚],YT]%>]!>];5.]/ZY=] =0] V]\`\]\]\ä:WQT K(mMWQV=VVT V78QăL˙˙˙ÚNVT61Q;2 ¸3 ä:Q;2 ¸4 äVäTä:Q;2 ¸5 ä:QT ¸6 ä=+ä:QT ¸7 ä=,ä:QV58Ĺ=9V ¸8 äTä:QV˙˙̐Éˆː•ĘĘĘĘĘĘĘ”•ĘÍéÔď•ĘĘĘĎĎĎ”•ĘĘĘ”•ĘĎĘĘÍ•ĘĎ•ĘĘĘÍ•ĘĘĘÍ•ĘĎĘě˜€+GАʐʐʐ•Č––Ď”•ĘĘâ˜€+^5+ːÉ•ˆؐˆ̐ˆѐˆِˆѐˆՐˆ՘€+nˆĎ•ˆӐˆŒ AnnotsString IDS_CANCEL string_width IDS_PREVIOUSIDS_NEXT IDS_UPLOADmaxlengthviewtype align_fill alignment align_leftalign_childrenmgrpitem_iddialogBackground back_color topToBottomgradient_direction darkToLight gradient_typeconcatANCreateMLSEElementsFromArrayCollab wizardWidth descriptionANCreateTipElementselementswidthbuttonRowMarginHeight margin_heightwizardMarginWidth margin_width align_rowbuttonIDS_HELPnamehelpgap*prev*prev*next*nextcnclANTrustPropagateAll wizardHeightheightalign_distributedialogapp beginPriv execDialogendPriv makeDefault makeCancel initialize undefined˙˙˙˙Ášdialog9H+T ¸ ä:Qˆψnext˙˙˙˙ÁšdialogMlI+T ¸ ä:Qˆψprevious˙˙˙˙Ášdialog€J+T ¸ ä:Qˆψcancel +˙˙˙˙CBRunSimpleWizNew0šP@wizard startStepNum endStepNumdata descriptionhžŠz+ 9âäYˆ˙˙˙˙]T]T>ˆ˙˙˙˙5Ů?T]ˆ˙˙˙˙]‚]‚]‚] ‚] ‚] ‚] ‚] ‚]Y;5];5]\]\ä:WQ; ¸ ä:QV5; ¸ äVä:6Q; ¸ ä:QV5ĐÎČçÎĘ˜€+÷ʘ€,ʘ€,pʘ€,uʘ€,›Ę˜€,ŻĘ˜€.ßʘ€/Ş•ĎŢ˜€/°ˆѐˆ␈ѐˆɈANTrustPropagateAllwizard curStepNumstepslength endStepNumdatanextpreviouscancel commitCurStep startStep initialize getNextStepgetPreviousStepCollab wizardWidthwidth wizardHeightheight descriptionapp beginPrivresult execDialogendPriv˙˙˙˙Ášš4<unextSteplogEventParamsstartPayloadParamsaddStringToPayloadParams]q/+ A ¸ äCä:QA55CE#QA55A575=A ¸ ä:WQVA5 (A55 = D.QA55 = DQA55 = ÇY\WQY\WQY\WQA55 = 4V=6QV= 6QV=6QűA55 = 4V=6QV= 6QV=6QśA55 = EQˆ˙˙˙˙5>4V=6QV= 6QV=6Q[A55 = EQˆ˙˙˙˙5?/V=6QV=6QV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55 = żˆ˙˙˙˙5>4V= 6QV=6QV=6QDˆ˙˙˙˙5?/V=6QV=6QV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QV=6QV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55 = DQA55 = žV= 6Qˆ˙˙˙˙5!8ˆ˙˙˙˙5!5"=#V=$6Qˆ˙˙˙˙5!5"=%V=&6Qш˙˙˙˙5!5"='V=(6Q ˆ˙˙˙˙5!5"=)V=*6QoA55 = E3QA55!;+EQA55!5"=,V=-6QV=.6QV=.6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55 = 8; ¸ ä:Q; ¸/ ä:Q; ¸ ä:QA50 ¸1 ä=2ä:QA ¸3 äVä:Qˆϐđ•ˆ’АĘ€#•××Ń•ĘĘĘŃ/•ˆΐˆΐˆ ӐŃ/•ˆΐˆΐˆ Ӑç/•ˆΐˆΐˆ Ӑç•ˆΐˆΐˆ ΐˆѐˆՐˆѐŃ•Đ/•ˆ ΐˆ ΐˆӐĐ•ˆ ΐˆ ΐˆΐˆ ѐˆ Րˆ ѐˆΐˆΐˆѐˆՐˆѐč•ˆΐÎ€3•Ů•ˆ ӐŮ•ˆ ӐŮ•ˆ ӐŮ•ˆ Ӑ˙•ˆ Ӑˆ Ӑˆ ΐˆ ѐˆՐˆ ѐŃ•ˆ ѐˆ ѐˆ ѐˆݐˆш commitCurStepdata delayOpenDocwizardsteps curStepNumname IWBrowseDoc getNextStep endStepNum reviewType ShareFile SharedReviewFormDistributioncatWizardsubcatevntCompletetype UploadFileapp beginPrivCollabAVUMLogEventWrapperendPrivShareFilePayloadUploadFilePayloadAVUMStartPayloadWrapper Exit_StatusvalAVUMAddStringToPayloadWrapper Server_TypeserverURL9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com Acrobat_Com1urn://ns.adobe.com/Collaboration/SharedReview/SMBNetwork_Folder8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint SharePoint4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV Web_Server undefined,urn://ns.adobe.com/Collaboration/Forms/EmailEmailUnknownAVUMEndPayloadWrapperdialogendfnsh startStep˙˙˙˙ÁJš prevStepfilter‰/Y0÷+A ¸ äBä:QA5WQA55WQA ¸ ä:WQA ¸ äVä:QˆϐʐϐĐˆш commitCurStep curStepNumwizard stepFiltergetPreviousStep startStep˙˙˙˙Á.š,(ilogEventParamsstartPayloadParamsaddStringToPayloadParamsu0N?,A55=D.QA55=DQA55=ÇY\WQY\WQY\WQA55=4V=6QV=6QV= 6QűA55=4V=6QV=6QV= 6QśA55=EQˆ˙˙˙˙5 >4V=6QV=6QV= 6Q[A55=EQˆ˙˙˙˙5 ?/V=6QV= 6QV= 6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55=żˆ˙˙˙˙5 >4V=6QV=6QV= 6QDˆ˙˙˙˙5 ?/V= 6QV=6QV= 6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QV=6QV= 6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55=DQA55=žV=6Qˆ˙˙˙˙58ˆ˙˙˙˙55=V=6Qˆ˙˙˙˙55=V=6Qш˙˙˙˙55=V= 6Q ˆ˙˙˙˙55=!V="6QoA55=E3QA55;#EQA555=$V=%6QV=&6QV=&6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QA55=8; ¸ ä:Q; ¸' ä:Q; ¸ ä:QA ¸( äBä:QA5) ¸* ä=+ä:Q××Ń•ĘĘĘŃ/•ˆΐˆΐˆ ӐŃ/•ˆΐˆΐˆ Ӑç/•ˆΐˆΐˆ Ӑç•ˆΐˆΐˆ ΐˆѐˆՐˆѐŃ•Đ/•ˆ ΐˆ ΐˆ ӐĐ•ˆ ΐˆ ΐˆ ΐˆ ѐˆ Րˆ ѐˆΐˆΐˆѐˆՐˆѐč•ˆΐÎ€3•Ů•ˆ ӐŮ•ˆ ӐŮ•ˆ ӐŮ•ˆ Ӑ˙•ˆ Ӑˆ Ӑˆΐˆѐˆ Րˆ ѐŃ•ˆ ѐˆ ѐˆ ј€,mˆϐˆ؈data reviewType ShareFile SharedReviewFormDistributioncatWizardsubcatevntCanceltype UploadFileapp beginPrivCollabAVUMLogEventWrapperendPrivShareFilePayloadUploadFilePayloadAVUMStartPayloadWrappername Exit_StatusvalAVUMAddStringToPayloadWrapper Server_TypeserverURL9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.com Acrobat_Com1urn://ns.adobe.com/Collaboration/SharedReview/SMBNetwork_Folder8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint SharePoint4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV Web_Server undefined,urn://ns.adobe.com/Collaboration/Forms/EmailEmailUnknownAVUMEndPayloadWrapper commitCurStepdialogendcncl˙˙˙˙Á:š nextk?Ř?p,A5EQA55"A5 ¸ äA5äTä:Q×•ˆ݈'curStepcommitdialog˙˙˙˙Á<š+dVstepNumwizSteptitlesiwiztitleń?MGu,9âä=Tä:QA55T7WQAV ¸ äA5ä:6QA5A56QAT6QZ\WQA55K;mMWQV ¸ äZA55V75 `\ä:WQăL˙˙˙ÇNA55A575 WQA55 = DŠQA55 = DsQA55 = D\QA55 =DEQA55 =D.QA55 =DQA55 =™A9âäA5äVäVäA5äV5äV5#V5 ¸ ä ä:@äV5äV5äA55äA5äV5ä: 6Q”A9âäA5äVäVäA5äV5äV5#V5 ¸ ä ä:@äV5äV5äA55äA5äV5ä: 6QA5 ¸ äYTA5;5 ˆ˙˙˙˙5]!;5"]#;5$]%=&]'=(])\ä:QA5 ¸* äYT>]#\ä:QˆِÓˆܐˆҐˆʐÉÍ0>ːˆů˜€,†Ű××××××Ń€”•ˆó˙␐ˆó˙ݐˆӐĘçĎĎĘĐˆăˆ+ DebugPrintln!$$$> in startStep: step number = wizardstepscurDescriptioncreatordata curStepNumconcattitle reviewType ShareFile SharedReviewSharedReviewEmailFormDistributionFormDistributionEmailDocCenterLoginDocCenterSignupcurStepCBStartWizStepNewdialogheadingtextsplittiptipDesc finishStringnoStepsCBStartWizStepload endStepNum AnnotsStringIDS_NEXTnext IDS_PREVIOUSprev IDS_CANCELcnclC_Info_Xl_N.pngtip1C_GotoNextView_Sm_N.pngnav1enable \n|\r\n|\r \n|\r\n|\r>˙˙˙˙ÁĐš1dialoggGÍI›,AT6QTA6Q; ¸ ä:QT; ¸ ä‚ä:6QT; ¸ ä‚ä:6QT; ¸ ä‚ä:6Q; ¸ ä:QA5 5 Ĺ= A5 ‚6 QA ¸ äA5 ä:QˆʐˆʐˆѐˆߐˆߐˆߐˆѐˆŇ•ˆѐˆԈ dialogmonitorapp beginPrivnexttrustPropagatorFunctionpreviouscancelendPrivwizard stepFilter undefined startStep curStepNum˙˙˙˙ÁšH-HĄ,A5 ¸ ä:Qˆ;҈monitornext˙˙˙˙ÁškHŠH˘,A5 ¸ ä:Qˆ?҈monitorprevious˙˙˙˙ÁšĆHăHŁ,A5 ¸ ä:Qˆ=҈monitorcancel˙˙˙˙šdatastepNumzI›I¨,Bˆ8Š ˙˙˙˙Á Zš T¤^wizarddata curStepNum endStepNumnextStep nextStepNamefilteralwaysUseServeroldNameoldPathnewPathŒJ’Ż,A5WQA5WQA5WQA5WQVWQ=WQV5WQV5=ôA55V75 x= yP= yŒ= y°= y=y<=yo=yĽ=yČz9âäA55ä:WQV;ňV55WQV55W QV ¸ ä>äV ¸ ä=ä:?ä:W QVV ¸ ä ä=ä:9âä=;ä:6QVV V56 QVV6!QVB6"QV5!5#9âä=$;ä:VC6%QVB6%QA55%˘9&â&ä='ä:Q9(â(äVäYC])=*]+\ä: (9&â&ä=,ä:Q= WQ69&â&ä=-ä:Q9.â.äVä:Q=/WQD90â0ä:B=WQ!9.â.äVä:Q=/WQ= WQ91â1äVäV5ä:WQÍA55"=WQńA55%˘9&â&ä=2ä:Q9(â(äVäYC])=*]+\ä: (9&â&ä=,ä:Q= WQ69&â&ä=3ä:Q9.â.äVä:Q=/WQD90â0ä:B=WQ!9.â.äVä:Q=/WQ91â1äVäV5ä:WQŸA554C=5WQ!9.â.äVä:Q=/WQ91â1äVäV5ä:WQ?9.â.äVä:Q=/WQ91â1äVäV5ä:WQ˙A55"=WQ91â1äVäV5ä:WQÂ9.â.äVä:Q=/WQ91â1äVäV5ä:WQ‚=WQ91â1äVäV5ä:WQU90â0ä:B=WQ=/WQ91â1äVäV5ä:WQV=eRmÔäVäV?ä: 0VVV?WQ VWQ!V?WQăVV˙˙˙ŞV V5=6 Đ9&â&ä=7A55V75 ä:QA55V75 x= yP= y˘= yD= yš=yĐ=yl=yW=yzzĹ9âäA55ä:WQV;V55WQV55W QV ¸ ä>äV ¸ ä=ä:?ä:W QVV ¸ ä ä=ä:9âä=;ä:=86QVV V56 QVB6"QVV6!QV5!59=:;=WQ9&â&ä=;V5!5<5=ä:QŃV5!5#9âä=$;ä:VC6%QVB6%QA55%˘9&â&ä='ä:Q9(â(äVäYC])=>]+\ä: (9&â&ä=,ä:Q= WQ69&â&ä=-ä:Q9.â.äVä:Q=/WQŢ90â0ä:B=WQťV5!5#;?5@-9.â.äVä:QnA=oAQvV5!5#9âä=B;ä:-9.â.äVä:QnA=oAQ!9.â.äVä:Q=/WQ9&â&ä=CV5!5<5=ä:Q= WQ91â1äVäV5ä:WQiA55"C=WQ+A55!;EQA55!59=D=WQëA55!;EQA55!59=:3A55EC=FWQ=WQ‹A55%˘9&â&ä=2ä:Q9(â(äVäYC])=>]+\ä: (9&â&ä=,ä:Q= WQ69&â&ä=3ä:Q9.â.äVä:Q=/WQŢ90â0ä:B=WQťV5!5#;?5@-9.â.äVä:QnA=oAQvV5!5#9âä=B;ä:-9.â.äVä:QnA=oAQ!9.â.äVä:Q=/WQ9&â&ä=GA55Hä:Q9&â&ä=IA55Eä:Q91â1äVäV5ä:WQ˝A554C=5WQ!9.â.äVä:Q=/WQ91â1äVäV5ä:WQ]9.â.äVä:Q=/WQ91â1äVäV5ä:WQ9.â.äVä:QV5!5#;?5@=WQIV5!5#9âä=B;ä:=WQ=/WQ91â1äVäV5ä:WQwA55"C=WQśA55!;EQA55!59=D=WQvA55!;EQA55!59=:D90â0ä:B=WQ!9.â.äVä:Q=/WQ91â1äVäV5ä:WQ‚=WQ91â1äVäV5ä:WQU90â0ä:B=WQ=/WQ91â1äVäV5ä:WQV=eRmÔäVäV?ä: 0VVV?WQ VWQ!V?WQăVV˙˙˙ŞV:V5=JŰ9&â&ä=KA55V75 ä:QA55V75 x= y= y€=LyŁzA554C2=5WQ91â1äVäV5ä:WQ-=LWQ91â1äVäV5ä:WQ–=LWQ91â1äVäV5ä:WQi9&â&ä=Mä:QV5N>2=/WQ91â1äVäV5ä:WQ;OŮPWQV=eRmÔäVäV?ä: 0VVV?WQ VWQ!V?WQăVV˙˙˙ŞVQV5=Q9&â&ä=RA55V75 ä:QA55V75 x= y zWA554C2=5WQ91â1äVäV5ä:WQ;SŮPWQV=eRmÔäVäV?ä: 0VVV?WQ VWQ!V?WQăVV˙˙˙ŞV'VF ˙˙˙˙V?WQVĘĘĘĘ—ɐ̐Î€Ô`€d‘m €,řm €-!m €--m €-4m €->m €-Hm €-Qmʘ€,žŢÉ€핐ŃŃëˆ ţˆ Րˆ̐ˆʐč•ˆ ϐˆ ʐË€•ˆ Րˆ ę#•ˆ Րˆ ΐˆ Րˆ Ӑˆ Θ€,čĐ•ˆ ΐˆ Ӑˆ Θ€,ôˆɐˆߐP•Ë•ˆΐË€•ˆ Րˆ ę#•ˆ Րˆ ΐˆ Րˆ Ӑˆ Θ€-Đ•ˆ ΐˆ Ӑˆ ɘ€-ˆߐP•Í•ˆΐˆӐˆɐˆߐP•ˆӐˆɐˆߐP•Ë•ˆɐˆߐP•ˆӐˆɐˆߐP•ˆɐˆߐP•Đ•ˆΐˆɐˆߐP•É•([•ˆ™€-cˆ Ó+••ˆ tʐˆ —@ʐˆt€-bˆ Θ€-pˆɐÎ€ ˕ˆęÔ`€ ‘m €-Ćm €.m €.m €.m €..m €.Hm €.Qmʘ€-xŢÉ€•ŃŃëˆ ˙•ˆ Րˆʐˆ̐Ó6•ˆ ɐˆ 퐐č•ˆ ϐˆ ʐË€•ˆ Րˆę#•ˆ Րˆ ΐˆ Րˆ Ӑˆ Θ€-ŠĐ•ˆ ΐŘ(•ˆӐˆՐč(•ˆӐˆՐˆ Ӑˆ ɘ€-˝ˆ혀-ÁˆɐˆߐP•Í•ˆΐ핈 ΐí.•Í•ˆ ΐˆ ΐË€•ˆ Րˆ ę#•ˆ Րˆ ΐˆ Րˆ Ӑˆ Θ€-éĐ•ˆ ΐŘ(•ˆӐˆՐč(•ˆӐˆՐˆ Ӑˆ ɘ€-˙ˆᐐˆᐐˆߐP•Í•ˆΐˆӐˆɐˆߐP•ˆӐˆɐˆߐP•ˆӐŘ•ˆ ΐč•ˆ ΐˆɐˆߐP•Í•ˆΐí•ˆ ΐí•Đ•ˆ ΐˆ Ӑˆ ɘ€.CˆߐP•ˆɐˆߐP•Đ•ˆΐˆɐˆߐP•É•([•ˆ™€.cˆ Ó+••ˆ tʐˆ —@ʐˆt€.bˆ Θ€.pˆɐÎ€֕ˆꐐÔ`€!‘m €.†m €.Œmʘ€.xÍ-•ˆɐˆ䐐ˆɐˆߐP•ˆɐˆߐP•ˆՐĘ-•ˆɐˆ䐐ˆΐP•É•([•ˆ™€.žˆ Ó+••ˆ tʐˆ —@ʐˆt€.ˆ Θ€.ŤˆɐÎ€•ˆꐐÔ`b‘mʐÍ-•ˆɐˆ䐐ˆΐP•É•([•ˆ™€.Ј Ó+••ˆ tʐˆ —@ʐˆt€.È Θ€.шɐ[͐ˆt•P•ˆŒwizarddata curStepNum endStepNumnoFunc stepFilter reviewType SharedReviewstepsname IWBrowseDocIWDistributionServerIWSharedReviewDocCenterLogin$IWSharedReviewDocCenterCreateConfirmIWDistributeStepDescriptionIWIdentityDialogIWNewInternalServerIWSaveProfileStepDescriptiongetAlwaysUseServerValue undefineddocdocumentFileNamepath substring lastIndexOf/ cDocumentNamereplace SharedStringIDS_SHARED_REVIEW_FILE_EXTWT cDocumentPathserveraddInternalServerUI*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILUseDocumentCenter DebugAlert\browsedoc step use dc done dist server commit work now checking if silent is possible or notSilentDocCenterLoginbShowProgressMonitor9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comcDriverSilent login: unsuccessfulSilent login : successful DistributionServerStepCommitWorkIWEmailStepDescriptionANValidateIdentity GetStepNum%checking if silent is possible or notsilent login : successfulsignupIWSharedReviewDocCenterCreateIDFormDistributionCurrent step name is :.pdfURL,urn://ns.adobe.com/Collaboration/Forms/Email-FD getnext step data.server.Settings.cSettingSettingscSetting2urn://ns.adobe.com/Collaboration/Forms/Acrobat.com AnnotsString'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL startStepName5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERasdfasf5urn://ns.adobe.com/Collaboration/Forms/InternalServerplaceSubmitButtonIWSubmitButton server type : serverTypeis submit button present : ShareFile2GetNext step for ShareFile: Current step name is :IWBrowseAnyDocLLogged in and files have been chosen, now do we show the email step or not. typeUploadFileStepslengthDocCenterLogin8GetNext step for Doc CenterLogin: Current step name is :DocCenterLoginSteps.pdf$.pdf$Ó[Š[Ŕ[â[˙˙˙˙Á@š]wizarddata curStepNumprevStep prevStepName:’´¨ß. A5WQA5WQA5WQVWQ=WQV5=ŐA55V75x=y<= y_= y‚= yĽ= y = y-zU=WQ9âäVäV5ä:WQ(=WQ9âäVäV5ä:WQű= WQ9âäVäV5ä:WQÎV5C=WQVB6Q)V5= WQ=WQ9âäVäV5ä:WQ_=WQ9âäVäV5ä:WQ2=WQ9âäVäV5ä:WQV=V>V?WQV3V5= A55V75x= yF= yî= y= y4= y¨=yË=yîzV5C=WQVB6QlA55= WQNA55;EQA555== WQ=WQ9âäVäV5ä:WQd=WQ9âäVäV5ä:WQ7= WQ9âäVäV5ä:WQ A55D3QA55;EQA555==WQ=WQ9âäVäV5ä:WQŒ=WQ9âäVäV5ä:WQ_=WQ9âäVäV5ä:WQ2=WQ9âäVäV5ä:WQV=V>V?WQV…V5=îA55V75x=y= yA= ydzŒ= WQ9âäVäV5ä:WQ_= WQ9âäVäV5ä:WQ2=WQ9âäVäV5ä:WQV=V>V?WQV‰V5=vA55V75x= y z-= WQ9âäVäV5ä:WQV=V>V?WQVĘĘĘ—ɘ€.ęÎ€ЕÔ`€’‘m €.ôm €.úm €/m €/m €/mʘ€.ˆɐˆߐP•ˆɐˆߐP•ˆɐˆߐP•Ę•ˆɐˆϐČ•ˆ ΐˆ ɐˆߐP•ˆɐˆߐP•ˆɐˆߐP€/#É• •ˆt•ˆɐÎ€›•Ô`€]‘m €/Am €/Gm €/Mm €/Wm €/_m €/fmʘ€/.Ę•ˆɐˆϐË•ˆ ΐ핈 ΐˆ ɐˆߐP•ˆɐˆߐP•ˆɐˆߐP•ţ•ˆΐˆɐˆߐP•ˆɐˆߐP•ˆɐˆߐP•ˆɐˆߐP€/qÉ• •ˆt•ˆɐÎ€é•Ô`€Ť‘m €/‚m €/ˆmʘ€/|ˆɐˆߐP•ˆɐˆߐP•ˆɐˆߐP•É• •ˆt•ˆɐÎ•Ô`8‘mʐˆɐˆߐÉ• •ˆt•ˆŒwizarddata curStepNumnoFunc reviewType SharedReviewstepsnameIWNewInternalServerIWSharedReviewDocCenterLogin$IWSharedReviewDocCenterCreateConfirmIWEmailStepDescriptionIWDistributeStepDescriptionIWIdentityDialogIWDistributionServer GetStepNumdeliveryMethodLinkClickedUseDocumentCenterFormDistributionIWSubmitButtonserver undefinedURL,urn://ns.adobe.com/Collaboration/Forms/EmailaddInternalServer5urn://ns.adobe.com/Collaboration/Forms/InternalServer ShareFileIWBrowseAnyDocDocCenterLogin˙˙˙˙ÁŇš(ƒ orderClusterTitle disallowPrevshowReaderEnable verifyRaddr descriptionÍŠ(̡/; ¸ ä:Q9âäYT]T]T]‚]‚]‚]‚] ‚] ‚] ‚] ‚] ‚]‚ ]‚ ]‚ ]‚ ]ZY=]=]=]ZY=]=]=]ZY=];5]= ]\`\]\`Y= ]C]!YZ×`YZ\]"\`\]#\]$=%]=]\`\]\`\]&\ä:WQ; ¸' ä:QVˆѐАȐȐȐʘ€/Öʘ€/ćʘ€/ęʘ€/ôʘ€0ʘ€0ʘ€0$ʘ€0/ʘ€0?ʘ€0ˆĘ˜€0Ę˜€0ĄĘ˜€0Д•ĘĘĘ”•ĘĘĘ”•ĘĎÚ˜€0ä•Ę–ďĘé˜€0ďˆѐˆŒapp beginPrivANTrustPropagateAll disallowPrevshowReaderEnable verifyRaddr initialize splitAddrs joinAddrs updateAddrsidleadrboptsemailListsMatchallEmailAddrsValid resolveAddrsremoveDuplicateEmailAddresses#removeDuplicateEmailAddressesInListcommitviewtype align_topalign_children align_fill alignmentalignbutton AnnotsStringIDS_INVITE_ADDRESS_BOOKnameitem_idelements edit_text multilineedit_text_heightprodheightaddr descriptionendPriv˙˙˙˙ÁYšL'dialogĎŞ­ž/A5B6QA55 A5Z\6QA ¸ äTäCä:QA;5 ¸ ä=ä:@6QA5A5E.QA55 Ĺ=  CA55 6 Q; ¸ ä:QA55 A5; 56 Q; ¸ ä:QA55 #A5YC]B]\6QT ¸ ä=ä:QT ¸ äY;5]\ä:Qˆ͐ˆĚ•ˆѐˆӐˆ䐈҈2Ň•–ѐˆѐˆĚ•ˆ֐ˆѐˆĚ•ˆސˆՐˆĺˆ7datacertWarningPoppedaddrs updateAddrscanReaderEnableapp viewerTypematch Exchange-Pro readerEnable undefined beginPrivraddridentityemailendPrivtoolbars Commenting AdvCommentingfocusaddrenableaddressBookAvailableadrb˙˙˙˙ÁšaddrsaddrVec resultVecjiaddr™­ĘŽÖ/ T ¸ ä ä:WQZ\WQ>WQVKHmMWQVV7 ¸ ä ä=ä:WQVVV# ?WQV8QăL˙˙˙şNVŘÉ•5Kːâ •ˆܐˆŒsplitreplace$1 \;|\n|\r\n|\r^\s*(\S(?:.*\S)?)\s*$0K˙˙˙˙Ášaddrs㎯ć/T ¸ ä=ä:ˆՈjoin ˙˙˙˙Ámš dialogdataIn/ŻX°ę/ T=T ¸ äYA ¸ äA55ä:]\ä:Q1A5A ¸ äT ¸ ä:5ä:6Q8•ˆřˆěˆ:load joinAddrsdataaddrsaddr splitAddrsstore˙˙˙˙Áš4!dialogosl°…˛ô/ A55E(QA555EQA55 [A5C6Q; ¸ ä:Q; ¸ äY;5] \ä:Q; ¸ ä:QT ¸ ä:WQA ¸ äV5 ä:WQT ¸ äYVŮ>EQA555  CB]A5 BC]\ä:Qçˆ3Ě•ˆ͐ˆѐˆ琈ѐŇŮˆАЈŃѐאˆdatadoc certifiedcertWarningPoppedapp beginPrivalert AnnotsString/IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIEDcMsgendPrivstore splitAddrsaddrenablelengthnext disallowPrevprev˙˙˙˙ÁŰš 0dialogaddrs joinedAddrs™˛˛´0A ¸ äTäBä:QVQ†A55 ¸ ä=ä:WQ; ¸ ä:Q; ¸ äYV]B] B] \ä:WQ; ¸ ä:QĆvWQÇV6A5A ¸ äV>7ä:6QA ¸ äTäCä:QˆӐ”‘ŕˆѐˆŃx•Ę€{ž€0 •ˆސˆӈ updateAddrsdataaddrsjoin;app beginPriv mailGetAddrscTobCcbBccendPriv splitAddrs˙˙˙˙ev˙˙˙˙Á%šdialogĆ´1ľ09âäA5äA5äA5ä:QˆäˆQCBRunReviewOptionsDialogdatashowReaderEnablecanReaderEnable˙˙˙˙Áwš firstList secondList firstArray secondArrayfirstSortedListsecondSortedListSľ…ś$0 A ¸ äTä:WQA ¸ äTä:WQV ¸ ä: ¸ ä=ä:WQV ¸ ä: ¸ ä=ä:WQVVÔÔăăˆȈ- splitAddrssortjoin;˙˙˙˙Ápš# addrArray invalidIDsiaddrŞśçˇ/0=WQTKTmMWQTV7WQ9âäVä: +V=V=WQVVWQăL˙˙˙ŽNVÉ5WːËˆÓ•É•ˆ ͐ˆ ԐˆŒCBIsValidEmail, W˙˙˙˙Áuš(xBdialogpropsresolvedEmailListemailCategories finalLists invalidIDsresult¸…Ŕ?0 YB]A55 ¸ ä=ä:]=]A55] A55 ] C] \WQA55 =>T ¸ äYB]\ä:QVC6QV;56Q; ¸ ä:Q†; ¸ äVä:WQ-ĆvWQ9âä=ä:QÇ; ¸ ä:QV ¸ ä ä:WQYV>7 ¸ ä×ä:]V?7 ¸ ä×ä:]V×7 ¸ ä×ä:]\WQA ¸ äVä:QA5A ¸! äV5ä:6QA ¸" äTäCä:Q=WQA ¸# äA55ä:WQV=~; ¸ ä:Q; ¸$ ä;5% ¸& ä äVä:ä?ä?ä:WQ; ¸ ä:QV?9âä='ä:Q˜€0D•–áĘĐĐËŃ•ˆܐˆʐˆӐˆѐ‘Řx•ĘˆՀ{–ˆѐŘ•ŘŘŢˆј€0yˆᐈӐɐˆܐÉ•ˆ ѐřˆ ѐ •ˆՈ?bUIdataaddrsjoin;cTocCcsubjcSubjectmsgcMsgbNoError reviewTypeEBRenablenext bShowProgresscProgressMessage AnnotsStringIDS_GEN_STATUS_RESOLVINGapp beginPrivgetResolvedAddresses DebugThrowThrow: SendmailendPrivsplitsubstrtoListccListbccListremoveDuplicateEmailAddresses splitAddrs updateAddrsallEmailAddrsValidalert%IDS_SHARED_REVIEW_UNRESOLVED_MAIL_IDSreplace0The email addresses are not valid. So try again.˙˙˙˙e& %mailids%Â˙˙˙˙Á[š lists´Ŕ°Áˆ0TA ¸ äT5ä:6QTA ¸ äT5ä:6QTA ¸ äT5ä:6QˆސˆސˆވHtoList#removeDuplicateEmailAddressesInListccListbccList˙˙˙˙Á š addrListnewListaddrsiaddrlenĺÁÍÏ0 =WQT ¸ ä ä:WQVKLmMWQVV7WQV ¸ ä=V=ä:@VV=WQăL˙˙˙śNVŮWQV ¸ ä?äV×ä:˜€0•ÉŘ5OːËŕ•ˆڐĚˆ؈";splitmatchlengthsubstr;+O˙˙˙˙ÁŹšx3dialognextĺĂƒÉĄ0A ¸ äTäBä:QT•A ¸ äTä:QA5EQA55 9âäA5äA5äA5ä:QA55 X; ¸ ä:Q; ¸ ä; 5 ä:Q; ¸ ä:Q9âä=ä:QA55x=y=y;z’A5; 56QA5; 56Q‰A5; 56QA55 A5; 56QA5; 56Q-; ¸ ä=A55ä:QˆӐ •ˆј€0ŽĚˆĚ•ˆ 䐈 Ě•ˆѐˆ ܐˆѐˆ ՘€0şË`€Ď‘m €0Ámʘ€0źˆ֐ˆ֐P•ˆ֐Ë•ˆېˆ ֐P•ˆăP•ˆ updateAddrs resolveAddrs verifyRaddrdataraddrCBRunReviewOptionsDialogshowReaderEnablecanReaderEnableapp beginPrivalert AnnotsStringIDS_INVITE_NO_RADDRendPriv DebugThrowNo return address reviewTypeBBREBR cannedSubjIDS_INVITE_DEFAULT_SUBJECT cannedMsgIDS_INVITE_DEFAULT_MESSAGEIDS_SEND_FOR_REVIEW_SUBJ readerEnableIDS_SEND_FOR_REVIEW_PRO_MSGIDS_SEND_FOR_REVIEW_STD_MSGconsoleprintlnUnhandled Review Type: ˙˙˙˙Áyš'‚/@orderClusterTitle disallowPrevbShowInitiatorEmailbShowReaderEnablebCanReaderEnableaddrBookAndAddWidth description]ĚĘÜô0YZY;5]\`Y;5]\`\]\WQ; ¸ ä:Q9âäYT]‚] ‚] ‚] ‚] ‚] ZY=]=]=]ZY=];5]V]= ]\`Y=]=]=]\`\]\`\ ¸ äTyZY=]=]ZY=]= ]C]; 5!];5"]\`\]\`\ Z\ä: ¸ äˆ˙˙˙˙yZY=]=]ZY=]=#]C]; 5!];5$]\`\]\`\ Z\ä:]%\ä:WQ; ¸& ä:QV˙—ˆѐАȐʘ€1ʘ€1/ʘ€18ʘ€1Kʘ€1]”•ĘĘĘ”•ĘĎČĎ•ĘĘă˜€1qt•”•ĘĘ”•ĘĘ–Ďĺ˜€1Út•”•ĘĘ”•ĘĘ–Ďĺ˜€1’אˆѐˆŒ AnnotsStringIDS_INVITE_ADD string_width IDS_INVITE_TOmaxapp beginPrivANTrustPropagateAll disallowPrev initializeidleadrbcbx1commitviewtype align_rowalign_children align_fill alignmentbuttonIDS_INVITE_ADDRESS_BOOKnamewidthitem_id edit_text1adrelementsconcat align_left check_box wrap_nameCollab wizardWidth+IDS_EMAIL_APPROVAL_INVITE_STEP_CC_INITIATORcbx2.IDS_EMAIL_APPROVAL_INVITE_STEP_GRANT_UB_RIGHTS descriptionendPriv˙˙˙˙ÁišP&dialogźÍ‰Ńű0A5B6QA55 A5Z\6QA55Ĺ=A5B6QT ¸ äYA55]\ä:QT ¸ äYA55]\ä:QT ¸ ä=ä:Qˆ˙˙˙˙.A55 Ĺ=A5C6 Q)A55 Ĺ=A5B6 QT ¸ äYA55 ] \ä:QT ¸ äYˆ˙˙˙˙] ; 5 ]\ä:Qˆ͐ˆĚ•ˆѐˆŇ•ˆ͐ˆ搈搈՘€1É)•ˆ Ň•ˆҐˆ Ň•ˆ͐ˆ搈óˆNdatacertWarningPoppedaddrsinitiatorEmail undefinedloadcbx11adrfocus readerEnablecbx2enableappaddressBookAvailableadrb˙˙˙˙Áš2dialogoŃ—Ó1A55E(QA555EQA55 [A5C6Q; ¸ ä:Q; ¸ äY;5] \ä:Q; ¸ ä:QT ¸ ä:WQT ¸ äYV5 Ů>EQA555  CB]A5 BC]\ä:Qçˆ3Ě•ˆ͐ˆѐˆ琈ѐŇˆАՈ&Ńѐאˆdatadoc certifiedcertWarningPoppedapp beginPrivalert AnnotsString/IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIEDcMsgendPrivstoreenable1adrlengthnext disallowPrevprev˙˙˙˙Á•š dialogaddrsŤÓÔ/1 ; ¸ ä:Q; ¸ äYT ¸ ä:5]B]B]\ä:WQ; ¸ ä:QVE QV>7%T ¸ äYV>7]\ä:Qˆѐ˙ˆѐÎ•ˆŕˆ!app beginPriv mailGetAddrsstore1adrcTobCcbBccendPrivload˙˙˙˙Á?šdialogoŁÔJŐ81T ¸ ä:WQV5A5C6QA5B6QŇČ•ˆҐˆ͈!storecbx1datainitiatorEmail˙˙˙˙Áąš &dialogo\Ö)ŘK1T ¸ ä:WQA5V56Qˆ˙˙˙˙EQV5A55gA5V56QA5C6QA55 A5;5 6QA5;5 6QŇˆԐă•ˆԐˆ͐Ë•ˆېˆֈLstoredataaddrs1adrcbx2 readerEnable msgChanged cannedMsg AnnotsString&IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB(IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB˙˙˙˙Áš> subjHeadingisBBR description˙Üdë™1YT]‚]‚]ZY=]=];5] \`Y= ]T] \`Y=]= ] YZYZ\]\`× `\]\]C]=]\`\]\WQ; ¸ ä:Q9âäVä:WQ; ¸ ä:QV•ČĘ˜€1Őʘ€1ʐʐԐ•ĘÍ•ĘĘď–Ú˜€2ˆѐˆ֐ˆѐˆŒisBBR initializecommit edit_texttypesubjitem_idCollab wizardWidthwidth static_textname align_fill alignmentedit_text_heightprodheight multilinemesg descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áš!wPdialogdocNamebNameHasPercentEncodingdecodedDocNameo^Ýąćž1 AA556QAA556QA55EQA555A555!A55 ¸ ä ä:WQ;5= 3V ¸ äV ¸ ä= ä:?ä:WQC;5= .V ¸ äV ¸ ä=ä:?ä:WQBWQ=WQV ¸ ä=ä:×˙E)QA55EQA55Ĺ=CCWQA55 ¸ äA55 ¸ ä=ä:?ä:WQA55 DQA55pVAA5A5 ¸ ä äV=V=ä:6Q,A5A5 ¸ ä äVä:6QA55 DQA55`V1A5A5 ¸ ä äVä:6Q,A5A5 ¸ ä äVä:6QA5B6QT ¸ äYA55]A55]\ä:QT ¸ ä=ä:QT ¸ ä:WQA5V56 QˆҐˆҐáúĐ.•ˆĐ•˜€1łˆ阀1ˇ•Éîˆ?Ň•ˆ•ˆůˆÝ•<•ˆüˆ琐ˆÝ•,•ˆ쐐ˆ琐ˆ͐ˆöˆՐŇˆԈ" cannedSubjdata cannedMsgdocdocumentFileNamedocPathmatchappplatformWIN substring lastIndexOf\MAC:indexOf% decodedURLstring/msg msgChangedreplace ()subjloadmesgfocusnextstore msgOriginal[^\/]*$ %docname% %docname% %docname% %docname%˙˙˙˙ÁzšD-dialognextoÇćzéŐ1T ¸ ä:WQA5V56QA55A55A5C6QA55E QT e; ¸ ä:Q; ¸ ä; 5 ä×ä×ä:×9 â ä= ä:Q; ¸ ä:QA5V56QTE4QA5E(QA555 ¸ ä ä: e; ¸ ä:Q; ¸ ä; 5ä×ä×ä:×9 â ä=ä:Q; ¸ ä:QŇˆԐוˆ͐Ńˆ •ˆѐ䕈ՐˆѐˆԐŐˆâ•ˆѐ䕈Րˆшstoredatamsgmesg msgOriginal msgChangedapp beginPrivalert AnnotsString"IDS_INVITE_CUSTOM_MSG_WILL_BE_LOST DebugThrowDon't lose custom messageendPrivsubjisBBRdocpathmatchIDS_INVITE_FROM_FILEBBR loc invite location bad ^http[s]?\:˙˙˙˙Áś šWŻ.datamaxPDFCommentsSizeresult msgboxtitlepropsë 2 TT5=6Q9âä=ä:QT5Ĺ=D9QT5 D*QT5EQT55T5^; ¸ ä:QT5= ; ¸ äT5ä:QT5CJT; ¸ äYT5]T5]C]\ä:6QKT; ¸ äYT5]T5]C]C]\ä:6Q; ¸ ä:QT5^T5C0; ¸ äT5ä:Q; ¸ ä:QT5T5ŮT58QTC6QT5EQT5= Ÿ; ¸ ä:Q; 5WQ; ¸ ä:QT5EQT55XXV; ¸ ä:Q; ¸ ä;5 ¸ ä äVä:ä×ä×ä:WQ; ¸ ä:QV×9!â!ä="ä:Q; ¸# äT5äCä:E*QT55 ¸# äT5äBä: t; ¸ ä:Q; ¸ äT5;5$;5%ä:Q; ¸ ä:Q9!â!ä=&ä:Q; ¸' äT5äBä:D3QT5=(EQ; ¸) äT5ä:t; ¸ ä:Q; ¸ äT5;5*;5+ä:Q; ¸ ä:Q9!â!ä=,ä:QT5 E#QT5@EQT55-¤; ¸ ä:Q; 5.=/;50;51WQ; ¸ äYV]2;53]4×]5\ä:Q; ¸ ä:Q9!â!ä=6ä:QT5 ¸7 ä;859ä;85:ä:;85;D:QT5 ¸7 ä;859ä;85<ä:;85;t; ¸ ä:Q; ¸ äT5;5=;5>ä:Q; ¸ ä:Q9!â!ä=?ä:QT5 ¸7 ä;85@ä;85Aä:;85;X; ¸ ä:Q; ¸ ä;5Bä:Q; ¸ ä:Q9!â!ä=Cä:QT55DX; ¸ ä:Q; ¸ ä;5Eä:Q; ¸ ä:Q9!â!ä=Cä:QTT5 ¸7 ä;85@ä;85Gä:;85;6FQT55Hh; ¸ ä:Q; ¸ äY;5I]4\ä:Q; ¸ ä:Q9!â!ä=Jä:QňT5F ä; ¸K äT5ä:h; ¸ ä:Q; ¸ äY;5L]4\ä:Q; ¸ ä:Q9!â!ä=Mä:Qc; ¸ ä:Q; ¸ äY;5N]4\ä:Q; ¸ ä:Q9!â!ä=Cä:Q-T5EQT5=O 9âä=PT55ä:Q; ¸ ä:Q; ¸Q äT55ä:WQ; ¸ ä:QV@9!â!ä=Rä:QV5S?1T5V5T6QTV5T6QFV5S×T×6UQ V5S×T×6UQ=VpˆאˆՐˆՈ"󕐐ˆѐΕˆڐĘE•ˆ˙–ˆ˙—ˆѐČ•Ę•ˆ ڐˆ ѐˆ ߘ€2%ˆʐÜ€š•ˆѐΐˆѐç•ˆѐúˆѐ•ˆ՘€2:áˆ.䕐ˆѐˆŐ㐈ѐˆ՘€2C˙Ď•ˆѐˆŐ㐈ѐˆ՘€2Nˆě•ˆѐĐ␈öˆѐˆ՘€2Xúô•ˆѐˆŐ㐈ѐˆ՘€2eô•ˆѐˆܐˆѐˆ՘€2nÍ•ˆѐˆܐˆѐˆ՘€2wˆ“úÍc•ˆѐˆ琈ѐˆڐˆ É•Ůc•ˆѐˆ琈ѐˆڐˆѐˆ琈ѐˆژ€2”Ü•ˆ㐐ˆѐ␈ј€2¤•ˆڐĘ,•ˆ֐ˆ֐Ë•ˆ АË•ˆ ːˆŽ isApproval reviewTypeAPP DebugAlert In IWBrowseDocStepCommitWork doc undefinedpathdocPathapp beginPriv SharedReviewCollabaddDocToDocsOpenedByWizard delayOpenDocopenDocdocFScFScPathbUseConvbHiddenendPriv bringToFrontdocsOpenedByWizardlength msgChangedmaxPDFCommentsSize checkSizefilesizealert AnnotsString IDS_SEND_FOR_REVIEW_DOC_IS_LARGEreplace DebugThrowBig doc isEmailReview IDS_CANT_APPROVE_LAX_EMAIL_MATCHIDS_CANT_REVIEW_LAX_EMAIL_MATCHLax review matchisOnlineReviewBBRisOfflineReviewIDS_CANT_APPROVE_ALREADY_BBRIDS_CANT_REVIEW_ALREADY_BBROn-line review matchdynamicXFAForm viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATcTitleIDS_DYNAMIC_DOC_COMMENTS_MSG1cMsgnIconDynamic documentrequestPermission permissionannot canExportgrantedcreateIDS_CANT_APPROVE_WITH_NO_PERMSIDS_CANT_REVIEW_WITH_NO_PERMSNo permsdocumentfullSaveIDS_CANT_WORKFLOW_WITH_NO_SAVECannot full saveisInCollectionIDS_PDF_PACKAGE_SEND_FOR_REVIEW docModifiablemodify certified8IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIED_ALTERNATEDocument is certifiedisSharedReview2IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_SHARED_REVIEW$This is already a shared review file'IDS_SHARED_REVIEW_DOC_IS_NOT_MODIFIABLEFormDistributiondoc pathAFPrepareFormForDistributionform not distributablestatusoutPathIWStatushalt%mb%˙˙˙˙ÁŐš1Ś&@ reviewType checkSize descriptionĎ ż2Y‚]‚]‚]‚]‚]‚]ZY=];5 ] ;5 ] ;5 ];5]=]=]ZY=]=]=]=]=]C]\`Y=]=]=]ZY=]=]=]\`Y=]; 5!]=]\`\]"\`Y=]=]ZY=#]Xđ] \`Y=]=]=]?]$\`Y=]=]=%]ZY=&]=']× ] × ] \`Y=]9(â(ä=);*ä:]X|] C]+\`\]"\`\]"\`\]"\`\],\WQ;- ¸. ä:Q9/â/äVä:WQ;- ¸0 ä:QV•Ę˜€2őʘ€3ʘ€3.ʘ€3:ʘ€3Rʘ€3q”•ĘĎĎĎĎĘĘ”•ĘĘĘĘĘË•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€3–•ĘĘ”•ĘÍ•ĘĘĘË•ĘĘĘ”•ĘĘ—̐•ĘßČ÷˜€3ˆѐˆ֐ˆѐˆŒ initialize updateDocsbrwsfindSelectedIndexfilscommitviewtypeCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_leftalign_children align_fill alignment static_textnamehdngitem_iddialogfontbold align_rowpopupbutton AnnotsString IDS_BROWSEelementsgap separator align_centerimageicn1 SharedString*IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TIP_DESCWT wrap_name descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á5š!t5dialogtoLoadtoShowtoEnable¨ Ă2 Y\WQY\WQY\WQA55 D>QA55=E'QA55EQA555'A5=6QA5;6QA ¸ äTä:QVB6 QVB6 QVA55;DQA55=6 QA55= DQA55=BA5;5 ¸ ä=ä:@6QVA556QA5ˆ˙˙˙˙6QV9âä=;ä:6QV=6QT ¸ äVä:QT ¸ äVä:QT ¸ äVä:QV5 4T ¸ ä=ä:QT ¸ ä= ä:Q/T ¸ ä=ä:QT ¸ ä=ä:QĘĘĘˆ˙Ë•ˆѐˆѐˆѐˆʐˆʐˆńč•ˆ–ă˜€2݈ԐˆՐˆ㐈ΐˆӐˆӐˆӐČ/•ˆՐˆڐˆՐˆՈdatadocPath reviewTypeFormDistributiondocisInCollectiondocFS undefined updateDocsprevhelpnext SharedReviewcanReaderEnableapp viewerTypematch Exchange-Proenbl checkSizehdng SharedString,IDS_SHARED_REVIEW_BROWSE_DOC_STEP_SUBHEADINGWTicn1C_Info_Xl_N.pngloadvisibleenable makeDefaultbrwsfocus˙˙˙˙ÁAšMdocsfils didSelectidocselectÄ Q ő2 ; ¸ ä:Q;5WQ; ¸ ä:QY\WQBWQVK‹mMWQVV7WQV5 EQV5 ]V5A55WQV5 *VV5 ??VV ?×˙8QV CWQăL˙˙˙wNV EQA552VA55 ¸ ä ä:>7VŮ ?8QA5 ¸ äYV]\ä:QˆѐΐˆѐĘ•5€ŽËËˆψÉ•Řˆ É•ˆ ŐА •ˆΘ€3ˆŐ•ˆ퐐ˆáˆapp beginPriv activeDocsendPrivexternalisInProtectedViewpathdatadocPathisInCollectiondocumentFileNamematchlengthdialogloadfils[^\/]*$IŽ˙˙˙˙Á,š<&dialogpbResultg ý3; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVňV5=H; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QœA5 V5 6 QA5 V56 QA ¸ ä:QA5 5 ;DQA5 5 =WQA5 ¸ äYV]\ä:QT ¸ ä=ä:QˆѐԐˆѐ •ÎC•ˆѐˆ ܐˆ ֐ˆ Ԑˆ Ԑˆ ͐쐈 ᐈ Ոapp beginPriv browseForDocendPrivcFSCSPalert AnnotsString/IDS_WORKFLOW_ERROR_DUETO_BROWSE_SHAREPOINT_FILEdatadocPathcPathdocFS updateDocs undefineddialogenablenextfocus˙˙˙˙ÁPšidoi ś.3A5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙Áĺš'dialogdocsibResultĚc:3; ¸ ä:Q;5WQ; ¸ ä:QA ¸ ä=ä:WQV>EQVVŮA5VV75 6QA55 ; DQA55= WQA5 ¸ äYV]\ä:QVT ¸ ä=ä:QˆѐΐˆѐÖ×•ˆؐěˆᐐ •ˆՈapp beginPriv activeDocsendPrivfindSelectedIndexfilslengthdatadocPathpathdocFS undefineddialogenablenextfocus˙˙˙˙Áš?dialognextdocsi+•R3; ¸ ä:Q;5WQ; ¸ ä:QA ¸ ä=ä:WQV>EQVVŮA5VV75 6QT™A55 Cr†9 â äA5ä:QQĆvWQ;5 = EQV=T ¸ ä=ä:QÇT ¸ ä=ä:QˆѐΐˆѐÖ×•ˆؐ •Ím•‘ˆ Öx•Ęß•ˆ Հ{˘€3nˆ Ոapp beginPriv activeDocsendPrivfindSelectedIndexfilslengthdatadocPathpath delayOpenDocIWBrowseDocStepCommitWork reviewTypeFormDistributionhaltendcnclddoc˙˙˙˙e•˙˙˙˙Áš7Ë3@ reviewType checkSize description_ńBÎ3Y‚]‚]‚]‚]‚]‚]‚]‚]ZY=] ; 5 ] ; 5 ]; 5]; 5]=]=]ZY=] =]=]ZY=] 9âä=;ä:]=]=] C]!\`Y="] =]\`Y=#] 9âä=$;ä:]=]\`Y=#] ;%5&]=]\`\]'\`Y=] =]ZY=(] =)]XČ]=]\`Y="] ×]\`Y=] =*]=]?]+\`Y=] =]=,]ZY=-] =.]× ] × ]\`Y=] =]ZY=] 9âä=/;ä:]\`Y=0] =];%51]\`\]'\`\]'\`\]'\`\]'\`\]2\WQ;3 ¸4 ä:Q95â5äVä:WQ;3 ¸6 ä:QV•Ę˜€3÷ʘ€4ʘ€4,ʘ€4>ʘ€4Lʘ€4Rʘ€4[ʘ€4ᔕʐϐϐϐϐʐʐ”•ĘĘĘ”•ĘßĘĘË•ĘĎ•ĘßĎ•ĘĎÚ˜€5 •ĘĘ”•ĘĘČĎ•ĘĚ•ĘĘĘË•ĘĘĘ”•ĘĘ—̐•ĘĘ”•Ęä•ĘĘ˙̘€5Fˆѐˆ֐ˆѐˆŒ initialize updateDocsfindSelectedIndexsMorsDellinkidlecommitviewtypeCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_leftalign_children align_fill alignment align_row static_text SharedString)IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADINGWTnamehdngitem_iddialogfontboldgapbuttonIDS_SHARE_FILE_MORE_FILES AnnotsString IDS_DELETEelementslist_boxfils separator align_centerimageicn1IDS_SHARE_FILE_TIP_DESC link_text%IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á[šR*dialogtoLoadŽŻ Ň3 Y\WQA55;A5Z\6QŒA55;vA5Z\6Q; ¸ ä:QA55A55Ů; ¸ äA55ä:8Q; ¸ ä:QV= 6 QA55 ?V;56 QA ¸ äTä:QT ¸ ä=ä:QA5ˆ˙˙˙˙6QT ¸ äVä:QT ¸ äYB]\ä:QĘŃ•ˆ֐Ńq•ˆѐˆѐˆůˆ֐ˆΐÍ•ˆӐˆѐˆՐˆՐˆӐˆ܈datadocPath undefineddocListapp beginPrivlengthCollabconvertDIPathToPlatformPathendPrivicn1C_Info_Xl_N.pngtypenext AnnotsString IDS_UPLOAD updateDocsfocussMor checkSizeloadvisiblehelp˙˙˙˙ÁŐšy2toEnabledcl didSelectidxi currIndexokË F$÷3Y\WQY\WQBWQ?WQ>WQcmV# ?WQWQV"WQV?A55Ů V"WQVA55V7V8QV# ?WQQăVA55Ů˙˙˙Œ9âä=ä:Q9âäVä:QA55Ů>WQVV6QVV6QVŁ; ¸ ä:QA5; ¸ äA55>7ä:6 Q; ¸ ä:QA5A55 ¸ äA55 ¸ ä=ä:?äA55 Ůä:6QA5 ¸ äVä:QA5 ¸ äYV]\ä:QĘĘ••ˆ $cWy–ˆ™€4Ďˆˆ ȐÖ•ˆˆ Ȑˆט€3˙ˆ2̘€4˜€3˙ˆۘ€4 ˆՐˆӐÖˆ̐ˆ̐ •ˆѐˆꐈѐˆ˙Ӑˆ֐ˆáˆdatadocListlength DebugPrintln dumping dcl ANDumpObjnextsDelapp beginPrivdocPathCollabconvertPlatformPathToDIPathendPrivdocName substring lastIndexOf/dialogenableloadfils(y˙˙˙˙ÁPšidoii$%4A5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙Ářš* dialogpi*% ',4 ; ¸ ä:Q; ¸ äY×]9âä=;ä:]C]\ä:WQ; ¸ ä:QVKsmMWQVV7a; ¸ ä:QA5 5 A5 5 Ů ; ¸ äVV75ä:8Q; ¸ ä:QăL˙˙˙NA ¸ ä:Qˆѐ˙Ȑˆѐ5vː•ˆѐˆúˆڐˆ͈app beginPrivbrowseForMultipleDocs cFileFilter SharedString'IDS_SHARE_FILE_SELECT_FILE_DIALOG_TITLEWT cWindowTitlebAllowMultipleendPrivdatadocListlengthCollabconvertDIPathToPlatformPathcPath updateDocssv˙˙˙˙ÁËšNdialogindex newDocListi%'•(>4 A ¸ ä=ä:WQZ\WQ>WQ)mVVA55V78QV# ?WQQăVV˙˙˙ÓVWQ+mVVA55V?78QV# ?WQQăVA55Ů?˙˙˙ÂA5V6QA ¸ äTä:QÖÉˆ $)2–ˆؘ€4Cˆ̘€4D˜€4Cˆΐˆ &+C–ˆژ€4Eˆ:̘€4F˜€4EˆݐˆϐˆшfindSelectedIndexfilsdatadocListlength updateDocsgC)2˙˙˙˙Á&š dialogurlŽ(()L4;5WQ; ¸ äVäCä:QÎˆ׈ AnnotsString)IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES_URLapp launchURL˙˙˙˙ÁCšdialogtoLoad>)×)R4Y\WQA55?V;56QT ¸ äVä:QĘÍ•ˆӐˆӈdatatypenext AnnotsString IDS_UPLOADload˙˙˙˙Áyš‘•dialognext tempDocListtempDocList_DIPathifilePath fileName_ibUniquej fileName_jdescdcURL localPath uploadName uploadURL validLocation fileErrorDescresult filePropsď)¨9[4TuZ\WQZ\WQ>WQhm; ¸ ä:Q; ¸ äA55V7ä:WQ; ¸ ä:QVVŮV8QV# ?WQQăVA55Ů˙˙˙‡>WQmVV7 ¸ äVV7 ¸ ä= ä:?äVV7Ůä:WQCWQV?WQ‘mVV7 ¸ äVV7 ¸ ä= ä:?äVV7Ůä:WQVV:VBWQVVŮVV78QVVŮVV78QV# ?WQQăVVŮ˙˙˙fV# ?WQQăVVŮ˙˙ţőVŮ>z9 â äVä:Q9 â äVä:WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9âä=ä:Q; ¸ ä:Q;5W Q; ¸ ä:QV ¸ äV Ů?ä:= V = W QA5Z\6QA55KŤmMWQ; ¸ ä:Q; ¸ äA55V7ä:W Q; ¸ ä:QV ¸ äV ¸ ä= ä:?äV Ůä:W QA5V 6QV V W QA5V 6QA55ô; ¸ ä:QA55 ¸ äV ä: W Q; ¸ ä:QOm9âäA5äCä:WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QV=żA55CW QN; ¸ ä:QA55 ¸ äA55ä: W Q; ¸ ä:QV OA55 ¸ äA55 ¸ ä= ä:?äA55Ůä:W Q1V=CW Q9âä=ä:Q˜N™ăV ˙˙ţ°YV ]V ]×˙]\WQ9 â äVä:QA55A55ŮV8QăL˙˙ýWN€p•ÉÉˆ $h\~–ˆ ™€4cˆ ѐ䐈 ѐˆИ€4bˆ4̘€4h˜€4bˆۘ€4kˆ $€€ö€–ˆ™€4lţ•ˆ Č €‘€…€Ÿ–ˆ™€4pţ• •ˆ •ˆ ԐˆԘ€4oˆ7̘€4y˜€4oˆӘ€4kˆ5̘€4y˜€4kˆӘ€4~Ę•ˆӐ֐ˆѐˆՐˆѐˆ՘€4Œˆѐΐˆѐß•ˆČp•ˆѐÍ0€ŽËˆ ѐ䐈 ѐňˆ ϐːˆϐË•ˆѐˆߐˆѐ(€U•ˆ™€4ŠŰˆѐؐˆѐÉ€ş•Ë •ˆ ʐˆ ѐˆ ˆ琈 ѐ •ˆ ˙АÉ•ˆ •ˆ Րˆ zš€4¨ˆ˘€4͐•ČČĚˆӐˆ 4ۈapp beginPrivCollabconvertPlatformPathToDIPathdatadocListendPrivlength substring lastIndexOf/ ANDumpObj&IWUploadFileError_UniqueFilenameDialog execDialog DebugThrowExit the wizard docCenterURLcharAt filesToUpload cDocumentNamedistributionURLswConn fileExistsIWShowFileErrorok doOverwritecancel localPath uploadName uploadResultÄŽÁUŹţŸ$~˙˙˙˙&IWUploadFileError_UniqueFilenameDialogĚš)d@filesWithSameFileName description(CzJN5 Y‚]‚]Y9âä=;ä:]=]=] >] >] ZY= ] ZY=] =]=] =]=]=]=];5] ;5] ZY=] XÂ]C];5]=]\`Y=] = ]=] XŞ]!XÂ]\`Y="] \`\]#\`\]#\`\]#\]$\WQ;% ¸& ä:Q9'â'äVä:WQ;% ¸( ä:QV•Ę˜€5hʘ€5m•ßĘĘ––”•Ę”•ĘĘĘĘĘĘĘĎĎ”•ĘČ–ϐϐ•ĘĘĘČÍ•ö˜€5Ÿˆѐˆ֐ˆѐˆŒ initializecommit SharedString'IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLEWTname align_leftalign_children align_fill alignment margin_width margin_heightgrouptypeviewmgrpitem_iddialogBackground back_color topToBottomgradient_direction darkToLight gradient_typeCollabwizardMarginWidth static_textwidth wrap_name AnnotsString%IDS_SHARE_FILE_ERROR_UNIQUE_FILE_NAMEtxt0list_boxlistheightokelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙ÁËš 3dialogtoLoadsameFileNameListidocPlatformPathyCTES5 Y\WQY\WQˆ˙˙˙˙K[mMWQ; ¸ ä:Q; ¸ äˆ˙˙˙˙V7ä:WQ; ¸ ä:QVVV"8QăL˙˙˙§N9âä=ä:Q9âäVä:QVV6QT ¸ äVä:QĘĘË0^ːˆѐ␈ѐˆŽ$ϐˆՐˆӐˆ̐ˆӈapp beginPrivCollabconvertDIPathToPlatformPathendPriv DebugPrintln sameFileNameList to be displayed ANDumpObjlistload$^˙˙˙˙ÁšdialoglE€Eh5ˆ˙˙˙˙getFS’šurlJ•KŚ5T ¸ ä ä:DQT ¸ ä ä:;5ST ¸ ä ä:DQT ¸ ä ä:;5;5î•ˆААˆˈmatch fileSystemdefaultWebDAV^\\\\^.+:\\ ^file:\/\/ ^smb:\/\/˙˙˙˙IWShowFileErrorˇšRŠ@data bIsRemotefilePathFromSaveAsDialogdontShowOverWriteOptiondocsidoc radioButton description´K6tŻ5=Š˙˙˙˙Qjˆ˙˙˙˙QBŠ˙˙˙˙Qˆ˙˙˙˙5=$;5=ˆ˙˙˙˙55= EQˆ˙˙˙˙BŠ˙˙˙˙Q€; ¸ ä:Q; ¸ äˆ˙˙˙˙'9 â äˆ˙˙˙˙5ä:ˆ˙˙˙˙5ä:Š˙˙˙˙Q; ¸ ä:QR;5==ˆ˙˙˙˙55= EQˆ˙˙˙˙CŠ˙˙˙˙Qˆ˙˙˙˙ E*Qˆ˙˙˙˙ EQˆ˙˙˙˙5=Ť; ¸ ä:Q;5WQ; ¸ ä:QVKhmMWQˆ˙˙˙˙C UVV7WQˆ˙˙˙˙5 ¸ ä:V5 ¸ ä:CŠ˙˙˙˙QăL˙˙˙šN=WQˆ˙˙˙˙WZY=]=]ˆ˙˙˙˙;5;5]\`Y=]=]= ]!ZY="]=]=#];5$]%\`Y=&];5']=(]\`\])\`Y=*]=+]=,]-ˆ˙˙˙˙5.EQˆ˙˙˙˙;5/;50]\`\wZY=*]=]=,]-ˆ˙˙˙˙;5;5]\`Y=]=]= ]!ZY=1]×]2\`Y="]=]=#];5$]%\`Y=&];5']=(]\`\])\`Y=*]=+]=,]-ˆ˙˙˙˙5.EQˆ˙˙˙˙;5/;50]\`\WQY‚]3‚]4‚]5‚]6‚]‚]+‚](Yˆ˙˙˙˙5=7$98â8ä=9;:ä:98â8ä=;;:ä:]=<]!=]>]=>]>ZY=?]ZY=]=<]!=]=@]=A]B=C]D=E]F; 5G]=; 5G]>ZY=]=<]!=]Xô]2ZY=]=]XX]2C]H;5I]=J]\`\])\`Y=]=<]!=]Xô]2V])\`Y=K];5L]M;5N]O\`\])\`\])\`\])\]P\WQ; ¸ ä:Q9QâQäVä:WQ; ¸ ä:QVĎ ʐË˜€5¸Ô•Đ€˝•č•ˆАˆѐˆÖ"˙”ˆ֐Đ•č•ˆ˘€5͈Јä•ˆѐΐˆѐ5kːË•@•Ëí•ˆԘ€5ŢɐˆÉ€R•”•ĘĘÉ萐•ĘĘĘ”•ĘĘĘÔ•ĘĎÚ˜€5ů•ĘĘĘÝ6”•ĘĘĘÉ萐•ĘĘĘ”•ĘĚ•ĘĘĘÔ•ĘĎÚ˜€6•ĘĘĘÝ혀6'•Ę˜€6oʘ€6wʘ€6‡Ę˜€6¸Ę˜€6Ŕʘ€6Čʘ€6ă•Ô˙”ʐʐ––”•Ę”•ĘĘĘĘĘĘĘĎĎ”•ĘĘĘČ”•ĘĘČ–ĎÚ˜€7 •ĘĘĘČÍ•ĘĎű˜€7!ˆѐˆ֐ˆѐˆŒ bIsRemote reviewType SharedReviewappplatformWINserverURL1urn://ns.adobe.com/Collaboration/SharedReview/SMB beginPrivCollab isDocReadOnlyANSMBURLToPlatformPathdistributionURL cDocumentPathendPrivMAC activeDocs toLowerCasepath static_texttypeaNamitem_id AnnotsString+IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_NAME4IDS_SHARED_REVIEW_FILE_ERROR_ALTERNATE_LOCATION_NAMEnameview align_fill alignment align_rowalign_children edit_textfnamisProtectedModeEnabledreadonlybutton IDS_BROWSEbrwselementsradioovwtoptngroup_idUseDocumentCenter/IDS_SHARED_REVIEW_FILE_ERROR_DUPLICATE_EXISTING/IDS_SHARED_REVIEW_FILE_ERROR_OVERWRITE_EXISTINGgapwidth initializeidlecheckExtensioncommit ShareFile SharedString'IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLEWTIDS_SHARED_REVIEW_WIZARD_TITLE align_left margin_width margin_heightgroupmgrpdialogBackground back_color topToBottomgradient_direction darkToLight gradient_typewizardMarginWidth wrap_nameIDS_SHARED_REVIEW_FILE_ERROR_SRtxt0 ok_cancel IDS_CONTINUEok_name IDS_CANCEL cancel_name descriptionANTrustPropagateAll˙˙˙˙ÁMš'ŔTdialogtoShowtoLoadlocmsg0~YŐa)6 Y\WQY\WQVQVQˆ˙˙˙˙B6Qˆ˙˙˙˙VB6Qˆ˙˙˙˙ Ď; ¸ ä:Q; ¸ äˆ˙˙˙˙5ä:WQ; ¸ ä:Q9âä= ; ä:WQV ¸ ä äˆ˙˙˙˙5 ä:WQV ¸ ä ä; 5ä:WQVV6QVV6Qő9âäˆ˙˙˙˙5ä:WQVB6Qˆ˙˙˙˙5=; 59âä= ; ä:WQV ¸ ä äˆ˙˙˙˙5 ä:WQˆ˙˙˙˙5-V ¸ ä ä; 5ä:WQžˆ˙˙˙˙5x; 5y(; 5yA; 5yZz}V ¸ ä ä; 5ä:WQUV ¸ ä ä; 5ä:WQ-V ¸ ä ä; 5ä:WQVV6QVˆ˙˙˙˙5 ¸ äˆ˙˙˙˙5 ¸! ä="ä:?äˆ˙˙˙˙5Ů#ä:6Qˆ˙˙˙˙ VC6$QT ¸% äVä:QT ¸& äVä:QĘĘ””ˆАÉ•ˆʐˆĘ€Ę•ˆѐˆ㐈ѐˆސˆ琈㐈̐ˆѐˆᐈʐˆÔňˆçÎ(•ˆ萐Î`€Ť ‘Ęh€6UĘh€6ZĘhʘ€6PˆăP•ˆăP•ˆăP€6aˆ̐ˆ˙ِˆĘ•ˆʐˆӐˆӈoverwriteIsImplicitovwtapp beginPrivCollabconvertDIPathToPlatformPath cDocumentPathendPriv SharedStringIDS_SHARED_REVIEW_FILE_ERRORWTreplace cDocumentName AnnotsString&IDS_SHARED_REVIEW_FILE_ERROR_MSG_LOCALtxt0fnamANSMBURLToPlatformPathdistributionURLbrws reviewType ShareFileIDS_SHARED_REVIEW_FILE_ERROR_SRUseDocumentCenter#IDS_SHARED_REVIEW_FILE_ERROR_MSG_DC serverTypeIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAME$IDS_SHARED_REVIEW_FILE_ERROR_MSG_SMB$IDS_SHARED_REVIEW_FILE_ERROR_MSG_SPF#IDS_SHARED_REVIEW_FILE_ERROR_MSG_WD substring lastIndexOf/lengthaNamloadvisible%proposed_filename% %location%%proposed_filename% %location% %location% %location% %location%˙˙˙˙Áuš dialogëa‘bo6T ¸ ä:5=EQT ¸ ä:5&T ¸ äYB]\ä:Q!T ¸ äYC]\ä:Qň!•ˆᐐˆ܈storefnamaNamenableok˙˙˙˙Átš&urląbčcw6ˆ˙˙˙˙5= TT ¸ ä ä: =T ¸ ä ä:T=UQT=UQTÔ•ˆ”ˆŐ•Ô•ˆČpʐˆČp•ˆŒ reviewType ShareFilematchpdf.pdf\.pdf$\.$˙˙˙˙ÁßšpMdialogaPathnewDocumentPathnewRemoteDocumentNamenewDistributionURLdNj‡6 T ¸ ä:5ˆ˙˙˙˙C6Qśˆ˙˙˙˙B6Qˆ˙˙˙˙ čT ¸ ä:5WQA ¸ äVä:WQ;5=E:QV ¸ ä= ä:×˙EQV ¸ ä= ä:×˙D3Q;5= EQV ¸ ä= ä:×˙Oˆ˙˙˙˙5 ¸ ä>äˆ˙˙˙˙5 ¸ ä= ä:?ä:VWQ?; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Qˆ˙˙˙˙V6 Qˆ˙˙˙˙ˆ˙˙˙˙5 ¸ äˆ˙˙˙˙5 ¸ ä= ä:?äˆ˙˙˙˙5 Ůä:6Qˆ˙˙˙˙5 ˆ˙˙˙˙%ˆ˙˙˙˙C6Qˆ˙˙˙˙C6Q´; ¸ ä:QT ¸ ä:5WQ; ¸ ä:Qˆ˙˙˙˙5 ¸ ä>äˆ˙˙˙˙5 ¸ ä= ä:?ä:VWQˆ˙˙˙˙V6Qˆ˙˙˙˙A ¸ äVä:6QÓ•ˆՐˆАˆ Ę€㕐אԐ˙ѐíJ•ˆ˙ːˆѐˆؐˆѐˆҐˆ˙ߐŘ•ˆАˆ՘€6Źˆѐאˆѐ˙–ˆҐˆ߈?storeovwt doOverwritefnamcheckExtensionappplatformWINindexOf/\MAC: cDocumentPath substring lastIndexOf beginPrivCollabconvertPlatformPathToDIPathendPriv cDocumentNamelengthoverwriteIsImplicitdistributionURLsubstr˙˙˙˙Á2šdialogtoEnablegjçj¸6Y\WQVC6QVC6QT ¸ äVä:QĘˆʐˆʐˆӈfnambrwsenable˙˙˙˙Á2šdialogtoEnableýjkŔ6Y\WQVB6QVB6QT ¸ äVä:QĘˆʐˆʐˆӈfnambrwsenable˙˙˙˙Áăš 1dialog browsePropsp˜krmČ6 ˆ˙˙˙˙ ŘYC]ˆ˙˙˙˙5]C]\WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QVm; ¸ ä:QT ¸ äY; ¸ äV5 ä:] \ä:Q; ¸ ä:QV5 Š˙˙˙˙QˆĘ••–Ӑːˆѐؐˆѐ •ˆѐˆôˆѐˆ҈"bSave cDocumentName cFilenameInitbUnicodeapp beginPriv browseForDocendPrivloadCollabconvertDIPathToPlatformPathcPathfnamÔk˙˙˙˙IWShowLocalFolderErroróš4Ł-@data description^tî„)7Y‚]‚]‚]‚]‚]Y9âä=;ä:]= ] = ] >] >]ZY=]ZY=]= ] = ] =]=]=]=];5] ;5]ZY=]= ] = ] Xô]ZY=]X¤]C];5 ]\`\]!\`Y=]= ] = ] Xô]ZY=];5"]\`Y=]= ] =#] ZY=$]= ] =%];&5'](\`Y=)];5*]=]\`\]!\`\]!\`Y=+];5,]-;5.]/\`\]!\`\]!\`\]!\]0\WQ;& ¸1 ä:Q92â2äVä:WQ;& ¸3 ä:QV•Ę˜€7?ʘ€7Gʘ€7Vʘ€7iʘ€7€•ßĘĘ––”•Ę”•ĘĘĘĘĘĘĘĎĎ”•ĘĘĘČ”•ĘČ–ߘ€7¨•ĘĘĘČ”•ĘÔ•ĘĘĘ”•ĘĘĘÔ•ĘĎĺ˜€7ȕʐϐű˜€7Ոѐˆ֐ˆѐˆŒ initializeidlecheckExtension_DocumentNamecommitbrws SharedStringIDS_SHARED_REVIEW_WIZARD_TITLEWTname align_leftalign_children align_fill alignment margin_width margin_heightgrouptypeviewmgrpitem_iddialogBackground back_color topToBottomgradient_direction darkToLight gradient_typeCollabwizardMarginWidthwidth static_text wrap_name AnnotsString$IDS_SHARED_REVIEW_LOCAL_FOLDER_ERRORelements9IDS_SHARED_REVIEW_LOCAL_FOLDER_ERROR_ENTER_VALID_LOCATION align_row edit_textfnamappisProtectedModeEnabledreadonlybutton IDS_BROWSE ok_cancel IDS_CONTINUEok_name IDS_CANCEL cancel_name description beginPrivANTrustPropagateAllendPriv˙˙˙˙Á¤š )dialogtoShowtoLoadlocmsg0 třu-7 Y\WQY\WQVQˆ˙˙˙˙B6QVQ; ¸ ä:Q; ¸ äˆ˙˙˙˙5ä:WQ; ¸ ä:QVV6QT ¸ äVä:QT ¸ äVä:QĘĘ”ˆА”ˆѐˆ㐈ѐˆ̐ˆӐˆӈoverwriteIsImplicitapp beginPrivCollabconvertDIPathToPlatformPath cDocumentPathendPrivfnamloadvisible˙˙˙˙Á\š dialogv–v?7T ¸ ä:5=&T ¸ äYB]\ä:Q!T ¸ äYC]\ä:QŮ!•ˆᐐˆ܈storefnamenableok˙˙˙˙ÁfšaPathĂvőwG7T ¸ ä ä: LT ¸ äTŮ?ä:=T=UQTˆ˙˙˙˙5UQTˆŐ•ß•ˆČp•ˆŃp•ˆŒ matchcharAtlength/ cDocumentName\.pdf$˙˙˙˙Áš)!dialogaPathx4zV7 ; ¸ ä:Q; ¸ äT ¸ ä:5ä:WQ; ¸ ä:QV=EQV;ťˆ˙˙˙˙A ¸ äVä:6 Qˆ˙˙˙˙ˆ˙˙˙˙5 ¸ äˆ˙˙˙˙5 ¸ ä=ä:?äˆ˙˙˙˙5 Ůä:6 Qˆ˙˙˙˙5 ;%ˆ˙˙˙˙C6Qˆ˙˙˙˙C6Qˆѐ萈ѐŘ•ˆߐˆ˙ߐÔ•ˆАˆЈapp beginPrivCollabconvertPlatformPathToDIPathstorefnamendPriv undefined cDocumentPathcheckExtension_DocumentName cDocumentName substring lastIndexOf/lengthfilePathFromSaveAsDialogoverwriteIsImplicit doOverwrite˙˙˙˙ÁŐš+dialog browsePropspMzó{i7 YC]ˆ˙˙˙˙5]C]\WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QVn; ¸ ä:QT ¸ äY; ¸ äV5 ä:] \ä:Q; ¸ ä:Qn V5 o Q•–Ӑːˆѐؐˆѐ •ˆѐˆôˆѐˆӈ"bSave cDocumentName cFilenameInitbUnicodeapp beginPriv browseForDocendPrivloadCollabconvertDIPathToPlatformPathcPathfnamfilePathFromSaveAsDialog˙˙˙˙IWShowFolderErrorćš/—/@data bIsRemote description…ş—Ü7jˆ˙˙˙˙QY‚]‚]‚]‚]Y9âä=;ä:]= ] = ] ZY= ]ZY=]= ] ZY=]= ] ;5]C]9âä=;ä:]=]\`Y=]= ] 9âä=;ä:]=]\`Y=]= ] =] ZY=]= ] =]\`Y=];5]=]\`\] \`Y=]= ] ;5!]="]\`Y=]= ] 9âä=#;ä:]=$]\`\] \`Y=%];5&]';5(])\`\] \`\] \]*\WQ;+ ¸, ä:Q9-â-äVä:WQ;+ ¸. ä:QV ʐ•Ę˜€7üʘ€8ʘ€8ʘ€8M•ßĘĘ”•Ę”•ĘĘ”•ĘĘĎ–ߐϐ•ĘĘßĎ•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€8~•ĘĘĎĎ•ĘĘßÚ˜€8•ĘĎđ˜€8˜ˆѐˆ֐ˆѐˆŒ bIsRemote initializeidlecommitbrws SharedStringIDS_SHARED_REVIEW_WIZARD_TITLEWTname align_leftalign_children align_fill alignmentgrouptypeview static_textCollab wizardWidthwidth wrap_name"IDS_SHARED_REVIEW_FILE_ERROR_LOCALtxt0item_id+IDS_SHARED_REVIEW_FILE_ERROR_LOCAL_LOCATIONtxt1 align_row edit_textfnambutton AnnotsString IDS_BROWSEelements5IDS_SHARED_REVIEW_FILE_ERROR_REMOTE_ORIGINAL_LOCATIONorig(IDS_SHARED_REVIEW_FILE_ERROR_REMOTE_NOTEaNte ok_cancel IDS_CONTINUEok_name IDS_CANCEL cancel_name descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á>šEdialogtoShowtoLoadlocmsg0q…ˆá7 Y\WQY\WQVQVQˆ˙˙˙˙ ĺˆ˙˙˙˙5 ¸ ä>äˆ˙˙˙˙5 ¸ ä=ä:?ä:WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QVB6 QVB6 Q9 â ä= ; ä:WQV ¸ ä äˆ˙˙˙˙5ä:WQVV6QVV6QT ¸ äVä:QT ¸ äVä:QĘĘ””ˆĘ•ˆ˙’ˆѐˆؐˆѐˆʐˆʐˆސˆ琈̐ˆ̐ˆӐˆӈ cDocumentPathsubstr lastIndexOf/app beginPrivCollabconvertDIPathToPlatformPathendPrivorigaNte SharedString"IDS_SHARED_REVIEW_FILE_ERROR_LOCALWTreplace cDocumentNametxt0fnamloadvisible%proposed_filename%˙˙˙˙Ášdialog4ˆUˆü7ˆŠ˙˙˙˙Á š4dialog folderURIpˆ‹8ˆ˙˙˙˙ ŕ; ¸ ä:Q; ¸ äT ¸ ä:5ä:WQ; ¸ ä:QV=EQV;tV ¸ äVŮ ?ä:= V= WQˆ˙˙˙˙V6 Qˆ˙˙˙˙ˆ˙˙˙˙5 ˆ˙˙˙˙5 6 Q'ˆ˙˙˙˙T ¸ ä:56QˆĘ€Ű•ˆѐ萈ѐŘ•ß•ˆ Čp•ˆҐˆń˜€8ˆâˆ.app beginPrivCollabconvertPlatformPathToDIPathstorefnamendPriv undefinedcharAtlength/ cDocumentPath cDocumentNamedistributionURL˙˙˙˙Á/š}8dialog browseProps folderURIerrMsg‹8 ˆ˙˙˙˙ $Yˆ˙˙˙˙5]C]\WQ†9âä=ä:Q; ¸ ä:Q; ¸ ä:WQ; ¸ ä:Q9âä= Vä:QVEQVŮ >6V ¸ äVŮ ?ä:= V= WQ9âä=Vä:Q; ¸ ä:QT ¸ äY; ¸ äVä:]\ä:Q; ¸ ä:QäĆvWQV5=žVQ9âäV5ä:F?,;5WQ+;5WQ;5WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9âä=ä:QǐˆĘ••ÓË‘ˆՐˆѐԐˆѐˆِÓ•ß•ˆČp•ˆِˆѐˆŃx•ĘÎ•”×XRِˆ ΐP•ˆ ΐP•ˆ ΐP•ˆѐˆՐˆѐˆՀ{–ˆ cDocumentName cFilenameInitbUnicode DebugAlert trying browseapp beginPrivCollabbrowseForFolderendPriv1lengthcharAt/2loadconvertDIPathToPlatformPathfnammessageVolume Mount ExceptionNumber errorCode AnnotsString#IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR$IDS_SHARED_REVIEW_VOLUME_MOUNT_ERRORIDS_SHARED_REVIEW_VOLUME_ERRORalert DebugThrow VolMountError˙˙˙˙e3˙˙˙˙ getnextnumbersš' currentNumber nextNumber՗™Ÿ8T?WQV× =VWQMV×d=VWQ0VXč=VWQ=VWQVÉ•ˆҐ•ˆҐ•ˆҐˆ͐ˆŒ_000_00_0_˙˙˙˙populateFilesAtDocCenterşš &datafilename beginwithregZ™Úł8=WQT ¸ ä ä=ä:WQ9âä=Tä:QT5q; ¸ ä:Q=V=WQn T5 ¸ äVä:o Q9âä; ä:Q; ¸ ä:QÉˆސˆِČ•ˆѐӐˆ␈Րˆшreplace DebugAlert#populateFilesAtDocCenter filename :swConnapp beginPriv^.*\.pdf$filesAtDocCentergetMatchingFilesendPriv.pdf$˙˙˙˙isValidSaveLocationAtDocCtrzš filenameëšUœĹ8;KgmMn…oQ9âä=;=Tä:Q;;7 ¸ ä:T ¸ ä: B˜N™ăL˙˙˙›NC7jԐˆ吐ĺ•ˆzːˆŠ filesAtDocCenterfile DebugAlertfile : , filename : toLowerCase j˙˙˙˙SilentDocCenterLoginËšć_data connectParams isFirstLaunchaddStringToPayloadParams(ż§Ö8BWQ; ¸ ä:Q; ¸ äT5ä:WQ; ¸ ä:Q; ¸ ä:QT; ¸ ä:6Q; ¸ ä:QVTC6QBT5= DQT5= Y\WQV= 6 Q†; ¸ ä:Qn ; ¸ äTä:o Q; ¸ ä:Q; ĺT; 6 Q; ¸ ä:Q;T56Q;T5 ¸ ä:6Q;C6Q; ¸ ä:QT5= DQT5= JV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QCsT5= DQT5= JV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QB^ĆvWQT5= DQT5= JV=6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9âäVä:QV5X“DQV5X‘T;56Q‹V5X’T;56QbV5X•T;56Q9V5>DQV5XT;56QB˜Ç™Ç•ˆѐˆݐˆѐˆѐˆِˆѐ •ˆʐˆ’â•Ęˆΐ‘ˆѐˆߐˆѐ€ŕ•ˆΐˆѐˆӐˆސˆ̐ˆѐ═ˆ ΐˆѐˆՐˆѐˆ—â•ˆ ΐˆѐˆՐˆѐˆz•Ęâ•ˆ ΐˆѐˆՐˆѐˆӐŢ•ˆؐĚ•ˆؐĚ•ˆؐÜ•ˆӐˆz„{–ˆapp beginPrivCollab isFirstLaunchWTendPrivusergetUserIDFromStore reviewType SharedReviewFormDistributionnameAuthentication_SuccessfulswConn swConnect shareIdentityEmailFullName getFullName AuthenticatedvalTrueAVUMAddStringToPayloadWrapperFalse ANDumpObj errorCode authStatus AnnotsString7IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD3IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED2IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT˙˙˙˙eӞ˙˙˙˙Áíš,data cDefaultLinkcURLô§^Ť09 T555WQV ¸ äVŮ?ä:=V=WQV9âäT5ä:WQV=T5 = = WQVŮXX; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:Q9âä=ä:QÖß•ˆ Čp•ßˆÝp•Ě•ˆ ѐˆܐˆѐˆՈserverSettingscSettingcharAtlength/getAsciiSafeDocName cDocumentName__reviewID _attachments+_0-05ac777c-f1ef-4ab3-80c8-9114025d1c89_binapp beginPrivalert AnnotsString,IDS_SHARED_REVIEW_DISTRIBUTION_LONG_FILENAMEendPriv DebugThrow BadLocation˙˙˙˙getAsciiSafeDocNamejšdocNameresultescaped‚ŤoŹC9TWQ9âäTä:WQVTAV ¸ ä ä=ä:WQV ¸ ä ä=ä:WQV—֐•ˆސˆސˆŒescapereplace00$1\%u\%([0-9A-F][0-9A-F])˙˙˙˙ DistributionServerStepCommitWork-šgź‚datai cDefaultLink locationProps validLocationerrorSameLocationmsg fileErrorDescresultdcURLnewDocumentPathvalidFolderLocation origDocPath origDocNamefolderErrorDescfolderErrorResultlocationPropsSavePathlocationPropsDatasetPath saveDocNamedatasetDocNameoldNameoldPathnewPathsequence›ŹiN9 T5=DQT5=E-QT5;EQT55=DQT55= ET9 â äT55 5 ä:6QTT55 6 QT5;ST5K;mMWQVT55TT5V756QăL˙˙˙ÇNTT56QT5 =D-QT5=EQT55=hT55 5 WQV ¸ äVŮ?ä:=V=WQVT5WQTV6QT5= ýT5 =DQT5 =EQT5 fT5=EQT5;5:; ¸ ä:Q9 â äTä:Q; ¸! ä:QT5 =DQT55= :T5 ŐY\WQBWQT5="~T55=V=$6#Q=T55 5%V=&6#QV="6#QVT56'Qi; ¸ ä:QV;( ¸) ä9*â*äT5ä:ä:6'Q; ¸! ä:QVT56#QV9,â,äT5ä:6+QVV5'6-QBWQ†; ¸ ä:Q;( ¸. äVä:EQ; ¸/ äVä:WQ; ¸! ä:QVE=QT5BE-QT5;5EQT5 =T90â0äT55 5 äTä:QT51CCWQ92â2ä=3ä:QůĆvWQ94â4ä=5V56ä:QVQV56×;57WQwV56×;58WQTV59=:;5;WQ.V;5 äVä:Q92â2ä=?ä:QÇVE-QT5=EQT5;5:; ¸ ä:Q9 â äTä:Q; ¸! ä:Q?m9@â@äTäCä:WQ; ¸ ä:Q; ¸A äVä:WQ; ¸! ä:QV=B´T5CCWQ˜T5="ST55 5%V=&6#QV="6#QVT56'Qi; ¸ ä:QV;( ¸) ä9*â*äT5ä:ä:6'Q; ¸! ä:QVT56#QV9,â,äT5ä:6+QVV5'6-Q†; ¸ ä:Q;( ¸. äVä:EQ; ¸/ äVä:WQ; ¸! ä:QŢĆvWQ94â4ä=5V56ä:QVQV56×;57WQ\V56×;58WQ9V59=:;5;WQ;5=WQ; ¸> äVä:Q92â2ä=?ä:QÇVE-QT5=EQT5;5:; ¸ ä:Q9 â äTä:Q; ¸! ä:Q/V=DCWQ92â2ä=Eä:QăV ˙˙üŔĚ; ¸ ä:Q;(5FWQ; ¸! ä:QV ¸ äVŮ?ä:=V=WQVT5WQTV6QT5GB; ¸ ä:QT5G ¸H äT5ä: WQ; ¸! ä:Qďm9@â@äTäCä:WQ; ¸ ä:Q; ¸A äVä:WQ; ¸! ä:QV=BdT5CCWQH; ¸ ä:QT5G ¸H äT5ä: WQ; ¸! ä:Q/V=DCWQ92â2ä=Eä:QăV ˙˙˙TT5 ¸I äT5 ¸J ä=ä:?äT5Ůä:6QT5K ¸L ä>äT5K ¸J ä=ä:?ä:T5W QTV 6KQT5=­Y\WQ94â4ä=MT5Kä:QVT5K6'Q; ¸ ä:QV;( ¸N äT5Kä:6+Q; ¸! ä:QV@6#QVV5'6-QBWQ†; ¸ ä:Q;( ¸. äVä:EQ; ¸/ äVä:WQ; ¸! ä:Q ĆvWQ94â4ä=5V56ä:QVQV56×kBW Q94â4ä=Oä:QT5KW QT5W Q$m9PâPäTä:W Q; ¸ ä:Q; ¸A äV ä:WQ; ¸! ä:QV=B—VT5K6'Q; ¸ ä:QV;( ¸N äT5Kä:6+Q; ¸! ä:QV@6#QVV5'6-Q†; ¸ ä:Q;( ¸. äVä:EQ; ¸/ äVä:WQ; ¸! ä:QCW QĂĆvWQVQV56×BW Q’CW QV56×;57WQ;5=WQ; ¸> äVä:Q94â4ä=Qä:QTV 6KQTV 6Q92â2ä=?ä:QÇ3V=DCWQ92â2ä=Eä:Q˜Ç™ăV ˙˙ýŰ`V56×;57WQ;5=WQ; ¸> äVä:Q92â2ä=?ä:QÇT5R CWQ)m9@â@äTäBä:WQ; ¸ ä:Q; ¸A äVä:WQ; ¸! ä:QV=BžT5CCWQ‚VT5K6'Q; ¸ ä:QV;( ¸N äT5Kä:6+Q; ¸! ä:QV@6#QVV5'6-Q†; ¸ ä:Q;( ¸. äVä:EQ; ¸/ äVä:WQ; ¸! ä:Q¸ĆvWQ94â4ä=5V56ä:QVQV56×;57WQ6V56×;58WQ;5=WQ; ¸> äVä:Q92â2ä=?ä:QÇ/V=DCWQ92â2ä=Eä:QăV ˙˙ýÖT5R \TV5'6KQTT5K ¸I äT5K ¸J ä=ä:?äT5KŮä:6QT5=sY\WQ94â4ä=Sä:QT5KW QBWQ‰mVT5K6'Q; ¸ ä:QV;( ¸N äT5Kä:6+Q; ¸! ä:QV@6#QVV5'6-Q94â4ä=TT5Kä:Q†; ¸ ä:Q;( ¸. äVä:WQ; ¸! ä:QşĆvWQ94â4ä=5V56ä:QVQV56×BW Qm9UâUäTäBä:W Q; ¸ ä:Q; ¸A äV ä:WQ; ¸! ä:QV=BqVT5K6'Q; ¸ ä:QV;( ¸N äT5Kä:6+Q; ¸! ä:QV@6#QVV5'6-Q†; ¸ ä:Q;( ¸. äVä:WQ; ¸! ä:QCW QˇĆvWQVQV56×BW Q†CW QV56×;57WQ;5=WQ; ¸> äVä:Q94â4ä=Vä:QTV 6KQ92â2ä=?ä:QÇ3V=DCWQ92â2ä=Eä:Q˜Ç™ăV ˙˙ý˙`V56×;57WQ;5=WQ; ¸> äVä:Q92â2ä=?ä:QÇăV ˙˙üvBWQY\WQY\WQVQVQT5W5XWQT5KWQV ¸I ä>äV ¸J ä=ä:?ä:WQV ¸Y ä ä=Zä:;5[=\WQV ¸Y ä ä=Zä:;5]=\WQ>WQT59^â^äTäVä:QGmVVV6'QV@6#QVV5'6-Q; ¸ ä:QV;( ¸N äV5-ä:6+Q; ¸! ä:Q94â4ä=_V5-ä:QVVV6'QV@6#QVV5'6-Q; ¸ ä:QV;( ¸N äV5-ä:6+Q; ¸! ä:Q94â4ä=`V5-ä:Q†; ¸ ä:Q; ¸/ äVä:EQ; ¸/ äVä:WQ; ¸! ä:QŮĆvWQ94â4ä=5V56ä:QVQV56×;57WQ6V56×;58WQ;5=WQ; ¸> äVä:Q94â4ä=Vä:QTV 6KQ92â2ä=?ä:QÇVEQT539aâaäVä:EQ9aâaäVä:WQV ąnb9câcäVä:obQ94â4ä=d;bä:QV ¸Y ä ä=Zä:;5[;b=\WQV ¸Y ä ä=Zä:;5];b=\WQV#?WQăV ˙˙ü¸TV5'6KQTT5K ¸I äT5K ¸J ä=ä:?äT5KŮä:6QTV5'6eQ94â4ä=fT5ä:Q˙镐€9Wˆꐈ֘€9]ŐĘ0>ːŃ•ˆ㘀9hˆѐű•Öß•ˆ Čp•ˆËp•ˆ̐Î•čˆXÉ•ç•ˆѐˆӐˆѐç•ˆÉ€ЕĘ€9ˆÎy•Ó•ˆ ӐŇ•ˆӐˆΐˆ֐ˆѐˆńˆѐˆѐˆŕˆѐ•‘ˆѐˆڐؐˆј€9Ş˙ •ˆćĘ•ˆ•ˆŐx€9śĘ˜€9źˆސ”Ë•ˆ ӐË•ˆ ӐΕˆ Ӑ•ˆӐˆ ΐˆՐˆՀ{–đ•ˆѐˆӐˆѐ(€E•ˆ™€9ՐؐˆѐؐˆѐÉ€Ż•Č •ˆʐÎN•Ň•ˆ Ӑˆ ΐˆ֐ˆѐˆńˆѐˆѐˆŕˆѐ‘ˆѐˆڐؐˆŃx•Ę˜€:ˆސ”Ë•ˆ ӐË•ˆ ӐΕˆӐˆ ΐˆՐˆՀ{–đ•ˆѐˆӐˆ֘€:É•ˆ•ˆՐˆš€9Ԉ И€:*˜€:1ˆѐΐˆѐß•ˆČp•ˆАˆ̐Č•ˆѐˆᐈѐ(€ő•ˆ™€:CŘˆѐؐˆѐÉ_•Č •ˆʐˆѐˆˆᐈ֘€:XÉ•ˆ•ˆՐˆš€:Bˆ ˘€:fˆ˙—ţˆ̘€:mΕĘˆސˆѐˆѐˆ␈ѐˆʐˆѐ•‘ˆѐˆڐؐˆŃx•Ę˜€:ˆˆސ”Ë€f•˜€:‘€:–ˆՐ̐̐(€*•ˆ™€:›ÖˆѐؐˆѐÉ€’•ˆѐˆѐˆ␈ѐˆʐˆѐ‘ˆѐˆڐؐˆј€:´ˆ}•Ę˜€:˝”Ë •ˆʐˆ•Ë•ˆ Ӑˆ ΐˆՐˆ Րˆ ̐ˆ ̐ˆՀ{˘€:֐É•ˆ•ˆՐˆzœ€:šˆ И€:âË•ˆӐˆΐˆՐˆՀ{ž€:íČ•ˆ•(€/•ˆ™€:ńŘˆѐؐˆѐÉ€™•Č •ˆʐˆѐˆѐˆ␈ѐˆʐˆѐ‘ˆѐˆڐؐˆŃx•Ę˜€;ˆސ”Ë•ˆ ӐË•ˆ Ӑˆ ΐˆՐˆՀ{˘€;$É•ˆ•ˆՐˆš€:đˆ ˘€;/ˆÉ•ˆѐˆ˙Ÿ€;CΕĘ˜€;JˆՐ̐•(€•ˆ™€;Pˆѐˆѐˆ␈ѐˆʐˆѐˆސ‘ˆѐˆؐˆŃx•Ę˜€;hˆސ”Ë€•˜€;q•(€•ˆ™€;sŘˆѐؐˆѐÉ€l•ˆѐˆѐˆ␈ѐˆʐˆѐ‘ˆѐˆؐˆј€;‹ˆ}•Ę˜€;””Ë •ˆ ʐˆ •Ë•ˆ Ӑˆ ΐˆ ՐˆՐˆ̐ˆ Հ{˘€;ŹÉ•ˆ•ˆՐˆzœ€;rˆ И€;¸Ë•ˆ Ӑˆ ΐˆՐˆՀ{ž€;Oˆ ˘€;ň•ĘĘ””ŃĚëˆ•Č•ˆא(€M•ˆ™€;ݐˆАˆʐˆѐˆѐˆ␈ѐˆސˆАˆʐˆѐˆѐˆ␈ѐˆސ‘ˆѐˆڐؐˆŃx•Ę˜€;ţˆސ”Ë•ˆӐË•ˆӐˆΐˆՐˆ Րˆ ̐ˆՀ{ž€<Ń•ˆؐ֐ˆ •ˆݐˆېˆőˆőˆʘ€;܈ ˘€˙˙˙˙ RemoveWebdavšelementindexarray†ő,<T5=ˆψOURL4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV˙˙˙˙ÁŻ šh\ Ń reviewType checkSizeoA_EmailDistribute_110x64_NoA_EmailRespond_110x64_NoA_EmailCollect_110x64_N(oA_SharedReviewServerDistribute_110x64_N%oA_SharedReviewServerComment_110x64_N%oA_SharedReviewServerCollect_110x64_NoA_ServerDistribute_110x64_NoA_ServerRespond_110x64_NoA_ServerCollect_110x64_N)oA_SharedReviewAcrobatDistribute_110x64_N&oA_SharedReviewAcrobatComment_110x64_N&oA_SharedReviewAcrobatCollect_110x64_NoA_AcrobatDistribute_110x64_NoA_AcrobatRespond_110x64_NoA_AcrobatCollect_110x64_NmaxStringWidthdesiredPopupWidth description9b6<+†; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä= ä:Š ˙˙˙˙Q; ¸ ä= ä:Š ˙˙˙˙Q; ¸ ä= ä:Š ˙˙˙˙Q; ¸ ä= ä:Š ˙˙˙˙Q; ¸ ä= ä:Š ˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙QYZY9âä=;ä:]\`Y9âä=;ä:]\`Y;5]\`\]\WQYZV`Xô`\]\WQY‚]‚]‚]‚]‚]‚]‚] ‚]!‚]"ZY=#]$;5%]&;5'](=)]*=+],ZY=#]$;5%×;5-]&=)]*=+],×].;5-]/=0]1=2]3ZY=4]$=5]6=+],=7]1=8]9C]:\`Y=#]$;5%×;5-]&=;]*=+],ZY=<]$Xŕ]&=]1\`\]=\`\]=\`Y=#]$;5%×;5-]&;5-]/=)]*=+],ZY=#]$=>]*=+],ZY=#]$=)]*=+],ZY=?]$×](\`Y=#]$=>]*=+],ZY=?]$×n]&\`Y=?]$×]&\`Y=4]$;5@]6=A]1C]:=8]9Xr]&=B]C\`\]=\`Y=#]$=>]*=+],ZY=D]$=E]1×n]&×@](\`Y=?]$×]&\`Y=#]$=)]*=+],ZY=4]$9âä=F;ä:]6C]:=8]9\`Y=#]$=>]*ZY=4]$;5G]6\`Y=#]$=)]*=+],ZY=4]$=H]19âä=I;ä:]6C]JXr]&\`Y=#]$=;]*ZY=4]$=K]1;5L]6\`Y=4]$=M]1=5]6=+],=B]CX]&\`\]=\`\]=\`\]=\`\]=\`\]=\`Y=#]$=>]*=+],ZY=D]$=N]1×n]&×@](\`Y=?]$×]&\`Y=#]$=)]*=+],ZY=4]$9âä=O;ä:]6C]:=8]9\`Y=#]$=>]*ZY=4]$;5G]6\`Y=4]$9âä=P;Q;ä:]6=R]1C]JXr]&\`\]=\`Y=#]$=>]*ZY=4]$;5G]6\`Y=4]$9âä=S;ä:]6=T]1C]JXr]&\`\]=\`Y=?]$×](\`\]=\`\]=\`Y=#]$=>]*=+],ZY=D]$=U]1×n]&×@](\`Y=?]$×]&\`Y=#]$=)]*=+],ZY=4]$9âä=V;ä:]6C]:=8]9\`Y=#]$=>]*ZY=4]$;5G]6\`Y=4]$9âä=W;Q;ä:]6=X]1C]JXr]&\`\]=\`Y=#]$=>]*ZY=4]$;5G]6=Y]1\`Y=4]$;Z5[=\$9âä=];ä:9âä=];ä:]6=^]1C]JXr]&\`\]=\`Y=_]$;5`]6=+],=]1\`\]=\`\]=\`\]=\`\]=\`Y=a]$;5b]6=+],=c]1\`\]=\`\]=\`\]d\WQ;Z ¸e ä:Q9fâfäVä:WQ;Z ¸g ä:QVĆ vWQǐ‘ŕŕŕŕŕŕŕŕŕŕŕŕŕŕŕňéäâ•Ę˜€<„Ę˜€<§Ę˜€=sʘ€=yʘ€=€Ę˜€=ŽĘ˜€=šĘ˜€>-ʘ€>‰”•ĘĎĎĘĘ”•ĘÝĘĘ—ĎĘĘ˜€>Ą”•ĘĘĘĘĘË•ĘÝĘĘ”•ĘČĺ˜€>ť•ĘÝĎĘĘ”•ĘĘĘ”•ĘĘĘ”•ĘĚ•ĘĘĘ”•ĘĚ•ĘĚ•ĘĎĘ–ĘČÚ˜€>ě•ĘĘĘ”•ĘĘ—̐•ĘĚ•ĘĘĘ”•Ęß–ϐ•ĘĘ”•ĘÔ•ĘĘĘ”•ĘĘß–͐•ĘĘ”•ĘĘÔ•ĘĘĘĘĘ˙€?:•ĘĘĘ”•ĘĘ—̐•ĘĚ•ĘĘĘ”•Ęß–ϐ•ĘĘ”•ĘÔ•ĘĺĘ–Ř˜€?h•ĘĘ”•ĘÔ•ĘßĘ–Ř˜€?z•Ęâ˜€?‚•ĘĘĘ”•ĘĘ—̐•ĘĚ•ĘĘĘ”•Ęß–ϐ•ĘĘ”•ĘÔ•ĘĺĘ–Ř˜€?°•ĘĘ”•ĘĎĎ•ĘĐ˙”ʐ–Ř˜€?Õʐϐʐű˜€?ѕʐϐʐđ˜€?ވѐˆ֐ˆѐˆ|•Ę€{–ˆCollabgetIconA_EmailDistribute_110x64_N.pngA_EmailRespond_110x64_N.pngA_EmailCollect_110x64_N.png+A_SharedReviewServerDistribute_110x64_N.png(A_SharedReviewServerComment_110x64_N.png(A_SharedReviewServerCollect_110x64_N.pngA_ServerDistribute_110x64_N.pngA_ServerRespond_110x64_N.pngA_ServerCollect_110x64_N.png,A_SharedReviewAcrobatDistribute_110x64_N.png)A_SharedReviewAcrobatComment_110x64_N.png)A_SharedReviewAcrobatCollect_110x64_N.png A_AcrobatDistribute_110x64_N.pngA_AcrobatRespond_110x64_N.pngA_AcrobatCollect_110x64_N.png SharedString*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILWT zstring_width5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER AnnotsString'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAILmaxmin initializeidlesrvrlmdchelpfindSelectedIndexgetSelectedItemText updateServerscommitviewtype wizardWidthwidth wizardHeightheight align_leftalign_children align_fill alignmentwizardMarginWidth margin_height margin_widthmgr1item_idwhite back_color static_textnamehdngdialogfontbold align_rowpopupelements align_topgap,IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TOpayt truncate_endtruncateimageicn1&IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST(IDS_SHARED_REVIEW_DISTRIBUTE_STEP_BULLETdst1*IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_DC wrap_namesurl,IDS_SHARED_REVIEW_DISTRIBUTE_STEP_SERVER_LOCyurlicn2&IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1UBrsp1'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2rsp2icn3&IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1clt1cl00appplatformMAC'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2clt2 link_text%IDS_SHARED_REVIEW_LEARN_MORE_ABOUT_DC check_box1IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ALWAYS_USE_THISrmbr description beginPrivANTrustPropagateAllendPriv˙˙˙˙Áuš"g=dialogtoLoadtoShowalwaysUseServeroldNameoldPathnewPathďńX<Y\WQY\WQA ¸ äTä:Q9âäA55ä:WQV;VB6QVC6QA ¸ äTä:QA555WQA555 WQV ¸ ä>äV ¸ ä= ä:?ä:WQA5V ¸ ä ä=ä:9âä=;ä:6 QA55="A5A55 =6 QA5VA55 6QA55=aA5V ¸ ä ä=ä:9âä=;ä:6QA5VA556QV9âä=;ä:6QA55=DQA55=A55VB6QT ¸ ä=ä:QT ¸ äVä:QT ¸! äVä:QĘĘˆѐŢÉ•ˆϐˆʐˆѐÔÔëˆ˙’Ń•ˆݐˆېŃ•ˆ˙’ˆېˆ㐐蕐Ë•ˆʐˆՐˆӐˆӈ updateServersgetAlwaysUseServerValuedata reviewType undefinedrmbrsrvrdocdocumentFileNamepath substring lastIndexOf/ cDocumentNamereplace SharedStringIDS_SHARED_REVIEW_FILE_EXTWTFormDistribution.pdf cDocumentPath cDataSetName#IDS_SHARED_REVIEW_DATA_SET_FILE_EXT cDataSetPathhdng2IDS_SHARED_REVIEW_DISTRIBUTION_SERVER_STEP_HEADING SharedReviewdocAlreadyOpenedprevfocusnextvisibleload.pdf$.pdf$˙˙˙˙ÁJšKdialogtoLoadi"„<Y\WQA ¸ ä=ä:WQV>3A5B6QT ¸ äYB]\ä:QôA ¸ ä=ä:9âä=; ä:jA5C6QA55 = &T ¸ äYC] \ä:Q!T ¸ äYB] \ä:Q.A5B6QT ¸ äYC] \ä:QT ¸ äVä:QT ¸ äYC]\ä:QĘÖ.•ˆ͐ˆᐐíe•ˆ͐Ń!•ˆ ᐐˆ ᘀ<ˆ͐ˆܐˆӐˆܐˆŠfindSelectedIndexsrvrdataaddInternalServerenablenextgetSelectedItemText SharedString5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERWT reviewTypeFormDistributionrmbrload˙˙˙˙Á 9 š P$ędialogtoLoadtoShowtoEnableitem proAllowsYoustri allServerssyncCommAvailable selServerurl+"˝D§<Y\WQY\WQY\WQA ¸ ä=ä:WQ;5WQV ¸ ä äVä:WQVV6QVB6QVC6QA55 = EQV;5 ŽV9 â ä=;ä:6 QV=6QVB6QVB6QV;56QV9 â ä=;ä:6QV9 â ä=;ä:6QV9 â ä=;ä:6QV9 â ä=;ä:6QVB6Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä=ä:Š˙˙˙˙Q; ¸ ä= ä:Š˙˙˙˙QVˆ˙˙˙˙6!QVˆ˙˙˙˙6"QVˆ˙˙˙˙6#QÓV9 â ä=$;ä:łA5C6%QA55 = VC6&QVC6&QVB6&QVB6&QV9 â ä=';ä:6 QV=6QVB6QVB6QV9 â ä=(A55);ä:6QV9 â ä=*;ä:6QV9 â ä=+A55);ä:6QV9 â ä=,;ä:6QV;5-6QA55 =. ; ¸ ä=/ä:Š˙˙˙˙Q; ¸ ä=0ä:Š˙˙˙˙Q; ¸ ä=1ä:Š˙˙˙˙QVˆ˙˙˙˙6!QVˆ˙˙˙˙6"QVˆ˙˙˙˙6#QąA55 = ›; ¸ ä=2ä:Š˙˙˙˙Q; ¸ ä=3ä:Š ˙˙˙˙Q; ¸ ä=4ä:Š ˙˙˙˙QVˆ˙˙˙˙6!QVˆ ˙˙˙˙6"QVˆ ˙˙˙˙6#QA5B6%QVC6&QV9 â ä=5;ä:VC6QV9 â ä=6;ä:6 QV=6QVB6QVB6QV9 â ä=7A55);ä:6QV9 â ä=8;ä:6QV;596QA55 =. ; ¸ ä=:ä:Š ˙˙˙˙Q; ¸ ä=;ä:Š ˙˙˙˙Q; ¸ ä=<ä:Š ˙˙˙˙QVˆ ˙˙˙˙6!QVˆ ˙˙˙˙6"QVˆ ˙˙˙˙6#QąA55 = ›; ¸ ä==ä:Š˙˙˙˙Q; ¸ ä=>ä:Š˙˙˙˙Q; ¸ ä=?ä:Š˙˙˙˙QVˆ˙˙˙˙6!QVˆ˙˙˙˙6"QVˆ˙˙˙˙6#Q`V9 â ä=';ä:6 QT ¸@ äY=]\ä:QT ¸A äYB]\ä:Q9 â ä=B;ä:WQA ¸C ä=ä:WQ;D ¸E ä:Q; ¸F äA55 ä:WQ;D ¸G ä:QCWQA55 = ;5HWQA55 = E QVV ¸I ä;Jä:WQVV7W QV 5K5LW QV ¸ ä äV ä:WQA5V6QV9MâMäVä:6QVC6QVC6QV9 â ä=(A55);ä:6QV9 â ä=*;ä:6QA55 =. ; ¸ ä=/ä:Š˙˙˙˙Q; ¸ ä=0ä:Š˙˙˙˙Q; ¸ ä=1ä:Š˙˙˙˙QVˆ˙˙˙˙6!QVˆ˙˙˙˙6"QVˆ˙˙˙˙6#Q˛A55 = œ; ¸ ä=2ä:Š˙˙˙˙QnN; ¸ ä=3ä:oNQ; ¸ ä=4ä:Š ˙˙˙˙QVˆ˙˙˙˙6!QVˆ ˙˙˙˙6"QVˆ ˙˙˙˙6#QV9 â ä=+A55);ä:6QV9 â ä=,;ä:6QT ¸@ äVä:QT ¸O äVä:QT ¸A äVä:QĘĘĘÖÎˆܐˆ̐ˆʐˆʐĺ€‰•ˆ㐈ΐˆʐˆʐˆӐˆ㐈㐈㐈㐐ˆʐˆŕˆŕˆŕˆҐˆҐˆאŢ€Ž•ˆ͐Ń•ˆ ʐˆ ϐˆ ʐˆ ʘ€<߈㐐ˆΐˆʐˆʐˆ㐈<ęˆ ăˆӐŃ€›•ˆŕˆŕˆŕˆҐˆҐˆאŃ•ˆŕˆŕˆŕˆҐˆҐˆט€=ˆ͐ˆʐŢ€•ˆʐˆ㐈ΐˆʐˆʐˆ㐐ˆӐŃ€›•ˆŕˆŕˆŕˆҐˆҐˆאŃ•ˆŕˆŕˆŕˆҐˆҐˆט€=)˜€=-ˆ㐐ˆŕˆܐŢÖˆŃŕˆѐ•Ń•ˆ ΐÚ•ˆؐËŃˆܐˆϐˆېˆʐˆʐˆ㐐Ń€›•ˆŕˆŕˆŕˆҐˆҐˆאŃ•ˆŕˆᐈŕˆҐˆҐˆҘ€=bˆ=gˆ 㐐ˆӐˆӐˆӈgetSelectedItemTextsrvr AnnotsString,IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TOreplacepaytlmdccl00data reviewTypeFormDistribution'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAILdst1 SharedString-IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_EMAILWTyurlsurl2IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_EMAILrsp1-IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1_EMAILrsp2-IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2_EMAILclt1-IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1_EMAILclt2-IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2_EMAILCollabgetIconA_EmailDistribute_110x64_N.pngA_EmailRespond_110x64_N.pngA_EmailCollect_110x64_N.pngicn1icn2icn35IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERaddInternalServerrmbr3IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1UB'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL1'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_COLL2<IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_YOUR_OWN_SERVER SharedReview+A_SharedReviewServerDistribute_110x64_N.png(A_SharedReviewServerComment_110x64_N.png(A_SharedReviewServerCollect_110x64_N.pngA_ServerDistribute_110x64_N.pngA_ServerRespond_110x64_N.pngA_ServerCollect_110x64_N.png*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL*IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_DC*IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP1_DC*IDS_SHARED_REVIEW_DISTRIBUTE_STEP_RESP2_DC4IDS_SHARED_REVIEW_PROFILE_NAME_ALLOWS_YOU_TO_ACROBAT,A_SharedReviewAcrobatDistribute_110x64_N.png)A_SharedReviewAcrobatComment_110x64_N.png)A_SharedReviewAcrobatCollect_110x64_N.png A_AcrobatDistribute_110x64_N.pngA_AcrobatRespond_110x64_N.pngA_AcrobatCollect_110x64_N.pngloadvisible7IDS_SHARED_REVIEW_DISTRIBUTE_STEP_DIST1_YOUR_SERVER_URLfindSelectedIndexapp beginPrivallReviewServersendPrivhasSynchonizerfilter RemoveWebdavSettingscSettingANSMBURLToPlatformPatho_ServerRespond_110x64_Nenable\{cProfileName\}\{cURL\}˙˙˙˙Á6š dialogurl;E˝Es=9âä=;ä:WQ; ¸ äVäCä:QŢˆ׈ SharedString)IDS_SHARED_REVIEW_LEARN_MORE_ABOUT_DC_URLWTapp launchURL˙˙˙˙Á:š dialogŮESFy=; ¸ ä:Q; ¸ ä=ä:Q; ¸ ä:Qˆѐˆאˆшapp beginPrivCollablaunchHelpViewerForms_Reviews_DistributionendPriv˙˙˙˙ÁPšidoivFG€=A5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙ÁMšidoiAGĐGŽ=A5 ¸ ä:T7WQVKmMWQVV7> V˜N™ăL˙˙˙ăN=Ů5"ːÉ•ˆ|ːˆŽ dialogstore#"˙˙˙˙Á rš %ydialogsyncCommAvailableserverssrvridx didSelectbServerDefaultiserver currIndexacrobat_dot_comemail_attachmentyour_own_serverentryřG÷[š=CWQA55=;5WQ; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QA55=E QVV ¸ ä; ä:WQY\WQ?WQVmBWQBWQVKmMWQVV7WQV# ?WQWQA55= *V5 V"WQ CWQ%V5 V"WQ CWQVV5V8QăL˙˙˙rNV EQVŮ>(V>7WQVV5VV57"8QA55=nVŮ>5V9âä=;ä:V# ?WQ"8Q/V9âä=;ä:V# ?WQ8QPVK=mMWQVV7WQV# ?WQWQV"WQVV5V8QăL˙˙˙ĹNT ¸ ä=ä:QVEQ;5jY\W QV 9âä=;ä:V9âä=;ä:78QT ¸ äYV ]\ä:QA55=dY\W QV V;5×8QV ;5V;578QT ¸ äYV ]\ä:QVjY\W QV 9âä=;ä:V9âä=;ä:78QT ¸ äYV ]\ä:QVŽVK›mMWQVV759âä=;ä:EJQVV75;5E-QVV759âä=;ä:T ¸ ä=ä:Q ăL˙˙˙gNVÝVKĘmMWQVV759âä=;ä:EJQVV75;5E-QVV759âä=;ä:NY\W QV VV75VVV7578QT ¸ äYV ]\ä:QăL˙˙˙8N˜€=Ą•Ń•ˆΐˆŃŕˆѐÚ•ˆؘ€=ŻĘ•€h•••5€“ːËĎŃ%•ˆ É •ˆ ˆ ͐ˆʐˆÉ •ˆ ˆ ͐ˆ•ˆ ِˆ Ô•Éˆ ˈϐŃ•Ę0•ˆ݈QӐˆ=ِ5@ːËĎˆ ˆ Ȑˆ ٘€=阀=ňˆՐÓ•Ęˆýˆޘ€=ýŃ•Ęˆ •ˆѐˆݐˆޘ€> •Ęˆýˆޘ€> •5€žË˙ň•ˆՐ@Θ€> •5€Íː˙ň•Ęˆᐈçˆ+data reviewTypeFormDistributionCollabhasSynchonizerapp beginPrivallReviewServersendPrivfilter RemoveWebdav SharedReviewDefault DefaultFDUIlength SharedString5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERWTremoveAllEntriesFromListsrvrisDocCtrInitAvailable*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILinsertEntryInList AnnotsString'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAILinsertSeparatorEntryInListŁÍňž+@͓˙˙˙˙Á–š)Ö”dialognextserversisrvrj\Jg-> T’A5B6Q; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QA55=n ;5 o QA55=E Q; V ¸ ä; ä:WQA ¸ ä=ä:WQV>EQVVŮ;VV7WQA5V6QA5=6QA55K@mMWQVV75V%A5A55V756QăL˙˙˙ÂNA5559âä=;ä:A5C6QA5B6Q9âäA55ä:QA55=A555 f; ¸ ä:Q; ¸ äA555äA555äA55ä:Q; ¸ ä:Q|A555 f; ¸ ä:Q; ¸ äA555äA555äA55ä:Q; ¸ ä:QA5 ¸! ä:5" I; ¸ ä:Q; ¸# äA55ä:Q; ¸ ä:QâA55=EQA555$ D.QA55=EQA555% EQA5 ¸! ä:5"k; ¸ ä:Q; ¸& äA555äA555äA55ä:Q; ¸ ä:QwA ¸' ä=ä:9âä=(;ä:EA5C6QA5B6QA59âä=(;ä:6Q •ˆ͐ˆŃŕˆѐŃ•ˆ ՘€><Ü•ˆؐÖ×€6•˜€>EːˆϘ€>LˆѐÍ0CːĐ•ˆ鐐ë•ˆҐˆ͐ˆېŃ|•ˆ Ń•ˆѐˆ˙ˆ֘€>dˆ Ń•ˆѐˆ˙ˆѐˆ ×D•ˆѐˆݐˆ֐×ˆ:îˆUíf•ˆѐˆ˙ˆ֐•í•ˆ͐ˆ͐ˆćˆ`dataaddInternalServerapp beginPrivCollaballReviewServers reviewTypeendPrivFormDistributionsyncCommAvailablehasSynchonizerfilter RemoveWebdavfindSelectedIndexsrvrlengthserver serverTypedriversURL initiatorNameUI SharedString*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILWTUseDocumentCenter ANDumpObj SharedReviewDefaultsetDefaultReviewServer DefaultFDdialogstorermbrunsetAlwaysUseServerAlwaysUseServerAlwaysUseServerFDsetAlwaysUseServergetSelectedItemText5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVER*C˙˙˙˙eš ˙˙˙˙Á„š+§ "@data mainDialog descriptionŒ łë?Y‚]‚]‚]‚]‚]‚]‚]‚]‚]‚ ] ‚ ] Y; 5 ] =]ZY=]ZY=]9âä=;ä:] C]Xr]\`Y=]=]=]ZY=]ZY=]; 5] =]C]\`Y= ]=]!×d]"Xš]\`\]#\`Y=]ZY=]; 5$] =]C]\`Y= ]=]!×d]"Xš]\`\]#\`\]#\`Y=%]\`\]#\`\]#\]&\WQ;' ¸( ä:Q9)â)äVä:WQ;' ¸* ä:QV•Ę˜€?őʘ€?űʘ€@ʘ€@ ʘ€@ʘ€@.ʘ€@3ʘ€@Aʘ€@šĘ˜€@Äʘ€@Օϐʐ”•Ę”•Ęß–͘€@ć•ĘĘĘ”•Ę”•ĘĎĘË•ĘĘ—Ř˜€@ţ•Ę”•ĘĎĘË•ĘĘ—ă˜€A•ë˜€Aˆѐˆ֐ˆѐˆŒ initializeidlecommitfindSelectedIndexscanloadWorkspacesloadDocumentLibrariesdoclwksp setLocation getSoapValue AnnotsString/IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES_DUPname align_leftalign_childrengrouptype static_text SharedString$IDS_SHARED_REVIEW_SHAREPOINT_MESSAGEWT wrap_namewidthview align_row align_fill alignment'IDS_SHARED_REVIEW_SHAREPOINT_WORKSPACESdialogfontboldlist_boxitem_idheightelements$IDS_SHARED_REVIEW_SHAREPOINT_DOCLIBS ok_cancel descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áš dialog֐8‘ď?A ¸ äTä:QˆшloadWorkspaces˙˙˙˙ÁšdialogN‘Š‘ő?ˆŠ˙˙˙˙ÁšdialogĽ‘ô‘ű?ˆ˙˙˙˙ÁPšidoi’­’@A5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙ÁšdialogÒݒ @ˆ˙˙˙˙Áš T0dialogi<“!™@ˆ˙˙˙˙55mˆ˙˙˙˙5Y\6Q>WQNmˆ˙˙˙˙55ˆ˙˙˙˙55V755V?"8QV# ?WQQăVˆ˙˙˙˙55Ů˙˙˙™ˆ˙˙˙˙55Ů?:ˆ˙˙˙˙55ˆ˙˙˙˙55>755?8QT ¸ äYˆ˙˙˙˙55]\ä:Qˆ˙˙˙˙55Ů?A ¸ äTä:Q&T ¸ äYY\]\ä:QÓ•ˆڐˆ $NBlž€@ˆ™€@˜€@ˆôˆOȘ€@ˆ7̘€@˜€@ˆ㘀@$Ú•ˆőˆîÚ•ˆ֐ˆ ሠsharepointsites workspacessoapAttributesTitlelengthloadwkspdocl<l˙˙˙˙ÁšdialogdocLibsH™Š™.@T ¸ äYT]\ä:Qˆވloaddocl˙˙˙˙Áiš dialoglistBoxi¤™ăš3@ T ¸ ä:5WQVKCmMWQVV7>/A ¸ äˆ˙˙˙˙55V7ä:Q ăL˙˙˙żN×5FːÉ•ˆĺ@Έ storedocl setLocation sharepoint workspaceURLS!F˙˙˙˙Á?šEldialoglistBoxinsurlrequestresponseresultvlistsdocLibslibNum defaultLibj listPropsoURLportStrcBaseURLcPathmsgüšبA@ˆ˙˙˙˙5@6QT ¸ ä:5WQVKmMWQVV7>đ=WQˆ˙˙˙˙5ˆ˙˙˙˙55VV7?7556Q9âäˆ˙˙˙˙55äCä:WQYV= ] YY\] \] V= ] B]V]YC]\]=]\WQ†; ¸ äVä:WQˆ˙˙˙˙5Y\6QA ¸ äV>75ä=ä:WQVŐA ¸ äVä=ä:WQY\WQ?W Q=W Q>W Q"mVV 75W QV 5=EQV 5=ŢVV 5 ×˙8QV ?V 5 W Q;! ¸" äVä:W Q=WQV 5#=$EQV 5%×P=&V 5%WQV 5#='EQV 5%Xť=&V 5%WQ=WQV 5(;)5V 5#=*=+V 5,=-VWQ$V 5#=*V 5,VWQV 5.WQV ¸/ ä ä:3V ¸0 ä>äV ¸1 ä=2ä:ä:WQ.V ¸0 ä>äV ¸1 ä=3ä:ä:WQˆ˙˙˙˙55V 5 94â4äVVä:8QV # ?W QQV # ?W QQăV VŮ5˙˙ýŐA ¸6 äTäVä:QV Ů5>/A ¸7 äˆ˙˙˙˙55V 7ä:QA ¸7 äVä:QéĆvWQV58Š;9WQV58FC‘”0;:5;WQ;:5 ä:Q;= ¸? äYV]@>]A\ä:Q;= ¸B ä:QT ¸C äYZ\]D\ä:QÇ ăL˙˙úţNˆՐא5€ːÉ•Éˆűč•Î•ŃÎ–ČŃĎ˜€@_‘Řˆڐá€ЕÚĘ•Éˆ $€"€€0–ˆ ™€@mĐâ•ˆ ϐ ̐ŘÉß9Ґŕ;ҐÉÎ0•ˆ 𐐐ˆ ߐĚÔ.•ˆ 鐐ˆ óˆ Ě˜€@lˆ-̘€@Œ˜€@lˆӘ€@ˆՐĘ*•ˆ ꐐˆ ֐x€@šĘČ•ÉČXCݐˆ ΐP•ˆ ΐP• •ˆ ѐˆ 搈 ј€@˛ˆŕ€{–@Έ sharepoint workspaceURLstorewksp-http://schemas.microsoft.com/sharepoint/soap/sitessoapAttributesUrl CBEncodeURL_vti_bin/Lists.asmxcURLGetListCollectionoRequestcActionbEncoded cNamespaceUsePlatformAuth oAuthenticateMessagecResponseStyleSOAPrequest workspaceURLS getSoapValue soapValueGetListCollectionResultListsBaseType1HiddenFalseTitleutilcrackURLcSchemehttpnPort:httpsnURLTypeIPV6Type://[cHost]DefaultViewUrlmatchsubstr lastIndexOf/Forms// encodeURIlengthloadDocumentLibraries setLocation statusCode undefined AnnotsString1IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICTIDS_SERVICE_MISSINGapp beginPrivalertcMsgnIconendPrivloaddocl˙˙˙˙e \/Forms\/60ł0˙˙˙˙Ášlocř¨‡Šš@ˆ˙˙˙˙5T6Qˆ׈ sharepointlocation˙˙˙˙ÁĽš? soapValuesnameivalueindexŤ˛ŹÄ@>WQ†mTV7WQV5EQV5SV5 ¸ äTä:WQV>E QTŮV5ŮVV5V# ?WQQăVTŮ˙˙˙q;ˆ $€†z€”–ˆ™€@ǐːÖ•Űĺ•ˆɘ€@ƈ-̘€@Θ€@ƈӘ€@шŽsoapName soapValue lastIndexOflength undefined ”˙˙˙˙Áę š .sdata reviewType checkSizeconfig serverDescserverControlsiserverid descriptionšłO‚&AY\WQZ\Š˙˙˙˙QY\WQT5KÖmMWQˆ˙˙˙˙Ů×  ˝T5V7WQ9âä=V5=V5ä:QV5=e=VWQVVV8Qˆ˙˙˙˙ˆ˙˙˙˙ŮY= ] V] = ] V5]\8QăL˙˙˙,NTV6QYYY=]B]\]@]@]Y\]Z=`=`=`\]>]@]@]B]B]B]B]\] YY=]\]@]\]!YY=]C]\]@]"@]#@]$@]%@]@]B]B]&B]'C](Z=`=`=`\]>]@]B]Y\])\]*T]+‚],‚]-‚].‚]/‚]0‚]1‚]2‚]3‚]4‚ ]5‚ ]6‚ ]7‚ ]8‚ ]9‚]:‚];‚]<‚]=‚]>‚]?‚]@‚]A‚]B‚]C‚]D‚]E‚]F‚]G‚]H‚]I‚]J‚]K‚ ]L‚!]M‚"]N‚#]O‚$]P‚%]Q‚&]R‚']S‚(]T‚)]U‚*]V‚+]W‚,]X‚-]YZY=Z] ;[5\]];[5^]_;[5`]a;[5b]c=d]e=f]gZ Y=h] =]=f]g=i] =j]kC]l\`Y=Z] =m]nˆ˙˙˙˙]o\`Y=h] ;p5q]=f]g=r] =j]kC]l\`Y=Z] =f]g=s]eZY=t] =u] =f]g\`Y=v] ;p5w]=V] \`\]o\`Y=Z] =f]g=s]eZY=h] =x]=f]g=y] \`Y=z] ;p5{]=d]g=X] \`\]o\`Y=Z] =f]g=s]eZY=h] 9|â|ä=};~ä:]=f]g=] \`\]o\`Y=Z] =f]g=s]eZY=h] 9|â|ä=€;ä:]=d]g=‚] \`Y=z] ;p5ƒ]=V] =d]g=W] \`\]o\`Y=Z] =s]e=f]gZY=h] ;p5„]=…] \`Y=h] XŒ]]=†]‡=ˆ] \`Y=‰] × ]]\`Y=h] ;p5Š]=‹] \`Y=h] XŒ]]=†]‡=Œ] \`\]o\`Y=‰] × ]_\`Y=h] =]=f]g?]\` Y=Z] =m]eZY=‰] ×]]\`Y=Ž] =] × ]]× ]_\`Y=Z] =d]eZY=h] ;p5]=‘] =f]gC]’X¤]]YZ×`YZ\]“\`\]”\]_\`Y=h] 9|â|ä=•;–ä:]=—] C]’X¤]]=f]gYZ×`YZ\]“\`\]”\]_\`\]o\`\]o\` \]o\`\]˜\WQ;™ ¸š ä:Q9›â›äVä:WQ;™ ¸œ ä:QVĘĎĘĘ0€ŮːŃ•@•ĐˆíÎ•Íˆːˆא•ĘČĘŮ˜€ADˆ̐•••ĘĚ––ːĺ––––––Ě˜€A_••ĐĚ••ĘĚ––––––––––ĺ–––ѐČĘ˜€Bnʘ€C{ʘ€Cřʘ€C˙ʘ€D ʘ€Dʘ€Dʘ€D"ʘ€D8ʘ€D‹Ę˜€DĘ˜€D˝Ę˜€DËʘ€Dćʘ€Dřʘ€E ʘ€Eʘ€E#ʘ€E)ʐʐĘ˜€ELʘ€E˝Ę˜€EŇʘ€Eíʘ€Eöʘ€F ʘ€Fʘ€F%ʘ€F+ʘ€F6ʘ€F<ʐʐĘ˜€FXʘ€Fsʘ€F‡Ę˜€F›Ę˜€FŻĘ˜€FĂʘ€F×ʘ€Fďʘ€Gʘ€G ʘ€Gʘ€G”•ĘĎĎĎĎĘĘ”•ĘĘĘĘĘË•ĘĘÓ•ĘĎĘĘĘË•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€GM•ĘĘĘ”•ĘĘĘĎ•ĘĎĘÚ˜€Ga•ĘĘĘ”•ĘßĘÚ˜€Go•ĘĘĘ”•ĘßĘĎ•ĘĎĘĘÚ˜€G„•ĘĘĘ”•ĘĎĎ•ĘČĘĎ•ĘĚ•ĘĎĎ•ĘČĘÚ˜€GŚ•ĘĚ•ĘĘĘË•ĘĘ”•ĘĚ•ĘĘ—̐•ĘĘ”•ĘĎĘĘ–Ȑô•ĘßĘ–Ȑʐ˙ᘀGŕˆѐˆ֐ˆѐˆŒserverslength DebugAlertserver.initiatorName : initiatorName server.URL URLsvrradiotypeitem_idsrvrgroup_idnameserverControlscSetting#bUseWindowsIntegratedAuthenticationoConfig cVerifyURL cVerifiedURLoAuth writeable enumerable removeableaStatesnStatecFileURLoFileURL bFoundFile bDoCommitbCommitCanBeDonewebdavsmbsites workspaces workspaceURLlocationbDoDefaultCommitbDoDefaultCommitCanBeDonedefaultDocumentLibrary workspaceURLS sharepoint reviewType initializeidlecommithelp getSelectedIDupdateServerTypes getServerURLsetURL setStatus verifyURLSNF setURLSNFbrwsSNF verifySNFverifyNextStateWD onErrorWDonVerifySuccessWDonVerifyFailureWDonEnumerateFileWDonEnumerateEndWD onPutFileWDonDeleteFileWDverifyWD sharePointwizgetSharePointServerURLverifyNextStateSPF onErrorSPFonSuccessfulCreationonErrorCreationonVerifySuccessSPFonVerifyFailureSPFonEnumerateFileSPFonEnumerateEndSPF onPutFileSPFonDeleteFileSPF verifySPFonErroronVerifySuccessonVerifyFailureonEnumerateFileonEnumerateEnd onPutFile onDeleteFilebuttchs3chs4vrfyviewCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_leftalign_children align_fill alignment static_texthdngdialogfontbold align_topalignelements AnnotsString*IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMBtxt1 align_row edit_textloctbutton+IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACESStatus:stat link_text!IDS_MSG_REDACTION_ALERT_LEARNMORE SharedString&IDS_SHARED_REVIEW_SHAREPOINT_AUTOMATICDTchs1IDS_SHARED_REVIEW_SHAREPOINTSTchs2+IDS_SHARED_REVIEW_SHAREPOINT_CHOOSE_SUBSITE!IDS_SHARED_REVIEW_WORKSPACE_TITLEwks1truncate_middletruncatewks2gap(IDS_SHARED_REVIEW_DOCUMENT_LIBRARY_TITLEdcl1dcl2 separatorimageimg1!IDS_SHARED_REVIEW_SMB_DESCRIPTIONdes1 wrap_nameedit_text_heightprod+IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_STR2UBdes2 descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áˆ šJŽŮdialogtoLoadtoShowtoEnable latestReviewr_iditem customURL radioItemOťˇŘ€AA5A56QA5A56QA5A56QA55;A5Y\6QA55;A5Y\6QA55;A5Y\6QY\WQY\WQY\WQV= 6QVB6 QVB6 QVB6 QVB6 QV9âä=;ä:6QA ¸ ä;5ä:Q; ¸ ä:Q; ¸ ä=ä:WQ; ¸ ä:QA55;A55WQV=)VC6QT ¸ ä=ä:Q†V=)VC6QT ¸ ä=ä:QTV=)VC6QT ¸ ä=ä:Q"VC6 QT ¸ äVä:QA55!V75"WQVx;5#y(;5$yi;5%yŞzďA55;EQA555&;VA555&6'QŸA55;EQA555&;VA555&6'QOA55;EQA555&VA555&6'QžV;üV=(ž=WQVC6QT ¸ ä=ä:Q; ¸ ä:Q; ¸ ä=(ä:WQ; ¸ ä:QV;;;5)=*;5+WQ;5,WQVV6'Q0V=-–=WQVC6QT ¸ ä=ä:Q; ¸ ä:Q; ¸ ä=-ä:WQ; ¸ ä:QV;;5.WQVV6'Q‘=WQVC6QT ¸ ä=ä:Q; ¸ ä:Q; ¸ ä=/ä:WQ; ¸ ä:QV;;50WQVV6'Qš=WQVC6QT ¸ ä=ä:Q; ¸ ä:Q; ¸ ä=(ä:WQ; ¸ ä:QV;;;5)=*;5+WQ;5,WQVV6'QA55!V75"WQVx;5#y(;5$yî;5%yíz€VC61QVB62QVB63QVB64QVB65QVB6 QVB6 QVB6 QV;5766QV;5861QV9âä=:;ä:69Q;=;"V9âä==ä:666QV;5?61QVA555@EQA555@=AA555@ =A63QVA555@EQA555@=AA555@ =A65QV;5B69QVB61QVB62QVB63QVB64QVB65QVB6 QVB6 QVB6 QV;5C66QV;5D61QV;5E69QVB61Qˆ˙˙˙˙ŮF?VB6QVB6QT ¸ ä='ä:QT ¸G äVä:QT ¸H äVä:QT ¸I äVä:QˆҐˆҐˆҐŃ•ˆҐŃ•ˆҐŃ•ˆҐĘĘĘˆΐˆʐˆʐˆʐˆʐˆ㐐ˆؐˆѐڐˆѐŃ€˙•ĎÉ$•ˆʐˆڐÉ$•ˆʐˆڐÉ$•ˆʐˆڐˆʐˆӐŘc€ ‘Ęh€AÇĘh€AÍĘhʘ€AÁí•ˆِP•í•ˆِP•ç•ˆِPʘ€AŐÉ€÷•É€š•Éˆ ʐˆ Րˆ ѐڐˆ ѐÉ•Đ•ˆӐˆΐˆ ѐÉ€‘•Éˆ ʐˆ Րˆ ѐڐˆ ѐÉ•ˆΐˆ ѐÉˆ ʐˆ Րˆ ѐڐˆ ѐÉ•ˆΐˆ ј€B ÉˆʐˆՐˆѐڐˆѐÉ•Đ•ˆ Ӑˆ ΐˆ̘€B ؐc€Ž ‘Ęh€B:Ęh€BKĘhʘ€B$ˆ ʐˆ ʐˆ ʐˆ ʐˆ ʐˆʐˆʐˆʐˆӐˆӐˆăË•ˆ ݐˆʐP•ˆʐˆʐˆʐˆʐˆӐˆӐˆď合ď合ӐP•ˆ ʐˆ ʐˆ ʐˆ ʐˆ ʐˆʐˆʐˆʐˆӐˆӐˆӐˆʐP€BbĐ•ˆʐˆʐˆՐˆӐˆӐˆӈdatawebdavsmb sharepointoSavedSMBState undefinedoSavedSharePointStateoSavedWebDavStateimg1C_Info_Xl_N.pngchs1chs2chs3chs4hdng SharedString.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_HEADINGWT setStatus AnnotsString#IDS_SHARED_REVIEW_STATUS_INITIALIZEapp beginPrivCollabgetCustomServerLinkLatestendPrivpreviousSelectedIDsvr0focussvr1svr2r_idserverControls initiatorNameIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAMEcURLloct1urn://ns.adobe.com/Collaboration/SharedReview/SMBplatformWIN$IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN$IDS_SHARED_REVIEW_SMB_SUGGESTION_MAC8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint'IDS_SHARED_REVIEW_SHAREPOINT_SUGGESTION4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV#IDS_SHARED_REVIEW_WEBDAV_SUGGESTIONbuttwks1wks2dcl1dcl2txt1*IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMB IDS_BROWSEdes1!IDS_SHARED_REVIEW_SMB_DESCRIPTION_FDdes2.IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_STR2_FD(IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTION+IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACESlocation(IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION*IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_URL#IDS_SHARED_REVIEW_SMB_BROWSE_BUTTON$IDS_SHARED_REVIEW_WEBDAV_DESCRIPTIONlengthloadvisibleenable˙˙˙˙Á • š OÍędialogtoUpdatetoEnabletoShowr_iditem customURLurlokpos searchPosok_wsok_nextĐŘjünBY\WQY\WQY\WQA55=VB6QA ¸ ä:WQA55V75WQV;5oA55 5 2VB6 QVB6 QVB6 QVB6Q-VC6 QVC6 QVC6 QVC6QV;5dA555OA555:A55B6QA55B6QT ¸ ä:QV;5dA55 5OA55 5:A55 B6QA55 B6QT ¸ ä:QA55VŻVC6QVB6QA5V6QVx;5y(;5y^;5yńzđVC6QVB6QVB6QVB6QV;56QV;5 6QV9"â"ä=#;$ä:6!QVC6QA55%5&;'–;( ¸) ä:Q;* ¸+ ä=,ä:WQ;( ¸- ä:QV;';;(5.=/;50WQ;51WQVV62QVA55%5&62QVB6QVC6QVC6QVC6QV;536QV;546QVA55 55EQA55 55=6A55 55 =66 QVA55 55EQA55 55=6A55 55 =66QV;576!Q;( ¸) ä:Q;* ¸+ ä=8ä:WQ;( ¸- ä:QV;';59WQVA55:5&;' VA55:5&62QoVB6QVB6QVB6QVB6QV;5;6QV;5<6QV;5=6!QVB6Q;( ¸) ä:Q;* ¸+ ä=>ä:WQ;( ¸- ä:QV;';5?WQVA55@5&;' VA55@5&62QkV=66QV;5 6QV=66!QVC6QVB6QVB6QVB6QVB6QVx;5y(;5y;5y$zžA ¸A ä:WQBWQVŮB×EQV ¸C ä>ä×ä:=Dŕ×WQV QVW Q4mV ¸E äV ä:=F $V # ?W QQăV VŮB˙˙˙ĂV VEQV VŮBjV # ?W QQV WQ4mV ¸E äV ä:=F $V # ?W QQăV VŮB˙˙˙ĂV VWQV EQ;(5.=/PVŮB×Eä×ä:=GEQV ¸E ä×ä:=HWQVa;(5.=/+V9IâIä;50ä:WQ&V9IâIä;51ä:WQVV6QĽA55 5 ŒT ¸J ä:52WQV ¸K ä ä:@W QVV 6QA55 55EQA55 55=6W QVV E QV 6QT ¸J ä:52WQV ¸K ä ä:@EQV;59WQT ¸L äYVEQA55 5 ]\ä:Q‰T ¸J ä:52WQV ¸K ä ä:@EQV;5?WQT ¸L äYVEQA555 ]\ä:Q T ¸M äVä:QT ¸L äVä:QT ¸N äVä:QĘĘĘŃ•ˆʐĐŘÎ•Đ-•ˆ ʐˆ ʐˆ ʐˆ ϐˆ ʐˆ ʐˆ ʐˆ ʘ€BÎ•Đ•Đ•ˆҐˆҐˆϐˆš€B›Î•Đ•Đ•ˆҐˆҐˆϐˆš€BŠĎ•ˆʐˆʐˆϐc€„ ‘Ęh€BÖĘh€BôĘhʘ€B°˜€BľˆʐˆʐˆʐˆʐˆӐˆӐˆ㐈ʘ€BÂÖ€‘•ˆ ѐڐˆ ѐÉ•Đ•ˆӐˆΐˆ ѐˆِP•˜€Bڈ ʐˆʐˆʐˆʐˆӐˆӐˆď合ď合ӐˆѐڐˆѐÉ•ˆ Θ€BďˆŮ•ČÖP•ˆʐˆʐˆʐˆʐˆӐˆӐˆӐˆʐˆѐڐˆѐÉ•ˆ Θ€C ˆŮ•ČÖP•ˆΐˆӐˆΐˆʐˆʐˆʐˆʐˆʐP€C&c€Ń ‘Ęh€CQĘh€CgĘhʘ€C(Đ•ę•–”ˆ &4(B–ˆŮE€C4ˆ7̘€C5˜€C4ˆӐŮ•ˆ̐ˆ &4(B–ˆ ŮE€C:ˆ8̘€C;˜€C:ˆӘ€C>ˆ˘€CBˆÚ•ˆ˙̐ •Đ&•ˆ搐ˆᐐˆ ̐P•ˆŃ€‡•×Úˆ̐đˆڐ×îˆوܐP•×îˆوܐP•P€CuˆӐˆӐˆӐˆŠdata reviewTypeFormDistributionprev getSelectedIDserverControls initiatorName AnnotsString!IDS_SHARED_REVIEW_SHAREPOINT_NAME sharepointdefaultDocumentLibrarywks1wks2dcl1dcl2IDS_SHARED_REVIEW_WEBDAV_NAMEwebdav bDoCommitbCommitCanBeDonenextbDoDefaultCommitbDoDefaultCommitCanBeDonepreviousItemNamer_idchs4IDS_SHARED_REVIEW_SMB_NAMEbuttchs1chs2chs3txt1*IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_SMB IDS_BROWSEdes1 SharedString!IDS_SHARED_REVIEW_SMB_DESCRIPTIONWToSavedSMBStatecURL undefinedapp beginPrivCollabgetCustomServerLink1urn://ns.adobe.com/Collaboration/SharedReview/SMBendPrivplatformWIN$IDS_SHARED_REVIEW_SMB_SUGGESTION_WIN$IDS_SHARED_REVIEW_SMB_SUGGESTION_MACloct(IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTION+IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACESlocation(IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint'IDS_SHARED_REVIEW_SHAREPOINT_SUGGESTIONoSavedSharePointState*IDS_SHARED_REVIEW_INTERNAL_SERVER_STEP_URL#IDS_SHARED_REVIEW_SMB_BROWSE_BUTTON$IDS_SHARED_REVIEW_WEBDAV_DESCRIPTION4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV#IDS_SHARED_REVIEW_WEBDAV_SUGGESTIONoSavedWebDavState getServerURLlengthsubstrsmb://charAt/\\\ANPlatformPathToURLstorematchenableloadvisible^http[s]?\:\/\/.+^http[s]?\:\/\/.+\/^http[s]?\:\/\/.+\/BB˙˙˙˙Áłš=IŃdialognextr_iditemverifiedurldocumentLibraryprops…üĹ{C A ¸ ä:WQA55V75WQA5V6QVx;5y(;5yˇ;5y}zJA5;56 QTÍCWQA ¸ ä:WQVA55 5 RA ¸ äVä:WQA55 5 @'A ¸ äTäA55 5 ä:QV0A55 5A55 5 6Q9âä;5ä:QA55T ¸ ä:56QA55A55 5 6 QA55T ¸ ä:56Q; ¸ ä:Q; ¸ ä=äA555ä:Q; ¸ ä:QŹA5;56 QTEQA555 ¨A ¸! ä:WQVA555 =A55C6"QA ¸# äTä:Q9âä=$ä:QA555A555 6QA555C6%QJTEQA555 ,9&â&äT ¸ ä:5äCä:WQVŮ'>E%QV ¸( äVŮ'?ä:=)V=)WQVA555 ŞA55C6*QA ¸+ ä;5,ä:QVQA55-=.=/WQ$A55-=0=1WQ92â2äVäVäCäAäTä:Q9âä=3ä:QA554T ¸ ä:56QA554A555 6 QA554T ¸ ä:56Q; ¸ ä:Q; ¸ ä=5äA5545ä:Q; ¸ ä:Q×A5;56 QT ¸ ä:WQTV5WQVA5565 mT ¸7 äYB]8\ä:QA556C6"QA556V69QA ¸: äTä:Q9âä=$ä:QA55;T ¸ ä:56QA5565A5565 6QA5565A5565%6%QA5YV5]A5565 ] V5]A5565%]%\6;Q; ¸ ä:Q; ¸ ä=<äA55;5ä:Q; ¸ ä:QĐŘˆϐc€x ‘Ęh€C¤Ęh€CĎĘhʘ€Cƒˆ ֐ ••ĐÔ•ˆԐŇ•ˆ␐+•ˆ됐ˆڐˆ 䐈 ᐈ 䐐ˆ ѐˆ 萈 ѐP•ˆ֐ɈŃ€Ł•ĐÔ•ˆҐˆѐˆՐˆ搈ܐŮ•čď•ˆČp•Ô•ˆҐˆؐ”Ń•ˆΐŃ•ˆɐˆߐˆՐˆ䐈ᐈ䐐ˆѐˆ萈ѐP•ˆ֐Ґ •ĚÔ•ˆ ܐˆҐˆԐˆѐˆՐˆ 䐈 搈搐ˆ –•ÍŐÍÜˆ ѐˆ 萈 ѐP•ˆ getSelectedIDdataserverControls initiatorNamepreviousSelectedID AnnotsStringIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAME serverType getServerURLsmb cVerifiedURL verifyURLSNF setURLSNFoConfigcSetting DebugThrow!IDS_SHARED_REVIEW_NETWORK_INVALIDoSavedSMBStatecURLstoreloctcStatusstatapp beginPrivCollabsetCustomServerLink1urn://ns.adobe.com/Collaboration/SharedReview/SMBendPriv sharepointdefaultDocumentLibrarygetSharePointServerURL bDoCommit verifySPFURL requires verification#bUseWindowsIntegratedAuthentication CBEncodeURLlengthcharAt/bDoDefaultCommit setStatus3IDS_SHARED_REVIEW_SHAREPOINT_DEFAULTDOCLIB_CREATION reviewType SharedReviewAcrobatSharedReviewsFormDistributionAcrobatFormsDistributioncreateDocumentLibrary%Document Library could not be createdoSavedSharePointState8urn://ns.adobe.com/Collaboration/SharedReview/Sharepointwebdavenablenext cVerifyURLverifyWDoSavedWebDavState4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV˙˙˙˙Á:š dialogŢMřC; ¸ ä:Q; ¸ ä=ä:Q; ¸ ä:Qˆѐˆאˆшapp beginPrivCollablaunchHelpViewerInternal_ServerendPriv˙˙˙˙ÁOšpropsil˙CA5 ¸ ä:WQA55KmMWQVV7 V˜N™ăL˙˙˙ĺN=ŐÍ0 ː•ˆ|ːˆŽdialogstoredataserverControlssvr0' ˙˙˙˙Áš didSelect:d DBWQ˙˙˙˙Árš urldlgData‚‰DVQA5 ¸ ä:WQ9âäV5ä:WQVŮ>EQV ¸ ä×˙ä:=V=WQV”Őˆېç•ˆ͐ˆŒ dialogstoreANPlatformPathToURLloctlengthsubstr/˙˙˙˙Ášdialogurl¤ŕDT ¸ äYT]\ä:Qˆވloadloct˙˙˙˙Áˇš status statusStrűÉ"D ;5WQA5 ¸ äYV ¸ ä äTä:]\ä:QA5 ¸ ä=ä:QT;5EQ;5 ˙9âäTäA5ä:QA ¸ ä; 5 ä:QV= WQ; ¸ äVä:WQV ; 5WQVx; ¸ ä=ä:WQV=WQVQ; ¸ äVäVä:WQV (; 5 ¸ ä äVä:WQV¸A ¸ ä; 5ä:Q; ¸ äVä:WQmăV ¸ ä:WQVb; ¸ ä9âäVä:ä:WQV 2; 5 ¸ ä äVä:WQBWQ V˙˙˙ƒVN; ¸ äVä:WQV -; 5 ¸ ä äVä:WQBWQBWQ; 5WQ9âä=Tä:QV_A55; ¸ ä9âäTä:ä:6Q9âä=!A555ä:Q; ¸" ä:QA ¸ äV; 5#Vä:QV”””ˆѐˆ֐ˆِÓ€ú•ˆڐˆؐˆČp•ˆؐˆ •ˆΘ€DN •ÚÍ”ˆܐˆ •ˆ㘀D[ •ˆؐؐ({)}ˆ›€D_ˆҐ •ˆ琈 •ˆ 㐈 •@•Č˜€Dn •ˆؐˆ •ˆ㐈ʘ€Dyˆ•ˆΐˆِ •ˆôˆ搐ˆѐˆĚܐˆŒapp beginPriv encodeSMBurl DebugAlertsmbURLlengthglobalCheckForSameSMBLocationdata setStatus AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEcom.adobe.acrobatCollaburiCreateFolder'IDS_SHARED_REVIEW_SMB_FOLDER_CREATE_ERRSOAPstreamFromStringTesting Writeablility /testfile.txt uriPutData$IDS_SHARED_REVIEW_SMB_FILE_WRITE_ERRreplace&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETEuriEnumerateFiles uriNextFile uriDeleteFile#IDS_SHARED_REVIEW_SMB_ENUM_FILE_ERRuriDeleteFolder'IDS_SHARED_REVIEW_SMB_DELETE_FOLDER_ERR!IDS_SHARED_REVIEW_NETWORK_INVALIDsmb cVerifiedURL uriNormalizethis.data.smb.cVerifiedURLendPriv"IDS_SHARED_REVIEW_NETWORK_VERIFIED%url%%url%%url%†‚˙˙˙˙Á.šdialogurl"Ő"‹DT ¸ äY9âäTä:]\ä:Qˆíˆ7loadANSMBURLToPlatformPathloct˙˙˙˙Áˇšh+dialog folderURIerrMsgî"'D †; ¸ ä:Q; ¸ ä:WQ; ¸ ä:Q9âä=Vä:QVEQVŮ>oV ¸ äVŮ?ä:= V= WQA ¸ äVä:)A ¸ äTäA5 5 5ä:QäĆvWQV5=žVQ9âäV5ä:F?,;5WQ+;5WQ;5WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9âä=ä:Qǐ‘ˆѐԐˆѐˆِÓ•ß•ˆČp•Đ•ˆ␈z€DŁĘÎ•”×XRِˆΐP•ˆΐP•ˆΐP•ˆѐˆՐˆѐˆՀ{–ˆapp beginPrivCollabbrowseForNetworkFolderendPriv DebugAlert folderURIlengthcharAt/ verifyURLSNF setURLSNFdatasmb cVerifiedURLmessageVolume Mount ExceptionNumber errorCode AnnotsString#IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR$IDS_SHARED_REVIEW_VOLUME_MOUNT_ERRORIDS_SHARED_REVIEW_VOLUME_ERRORalert DebugThrow VolMountError˙˙˙˙eÖ˙˙˙˙ÁHš dialogurl 'ň'˝DA ¸ ä:WQA ¸ äVä:'A ¸ äTäA555ä:QĐĐ•ˆâˆ3 getServerURL verifyURLSNF setURLSNFdatasmb cVerifiedURL˙˙˙˙Á{šN3statetaskdataŒ)Ň,ËD A555A5557WQ=WQVx=y=y„=yĚz; ¸ ä= ä:WQ; 5 5 ¸ äA555äVäAäA555ä:Q;5WQŠ; 5 5 ¸ äA555äAäA555ä:Q;5WQW; 5 5 ¸ äA555äAäA555ä:Q;5WQA ¸ äVä:QĺÉc€8‘m €DŘm €DÝmʘ€DҐڐˆ˙”ˆΐP•ˆ˙ˆΐP•ˆ˙ˆΐP•ˆшdatawebdavaStatesnState writeable enumerable removeableSOAPstreamFromStringTesting WriteablilityNetHTTPWebDAVPutFilecFileURLoAuth AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEEnumerateCollection$IDS_SHARED_REVIEW_NETWORK_CHECK_READ DeleteFile&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE setStatus˙˙˙˙ÁÚš)eí,B/ćDT5E1QT5;5EQA555B0A55C6QA ¸ äA5ä:Qu; ¸ ä:Q; ¸ ä;5 ä:Q; ¸ ä:QA ¸ äT5T5;5ä:Qů+•ˆҐˆِˆѐˆܐˆѐˆŃ áˆ`text AnnotsStringIDS_UNAUTHORIZEDdatawebdav#bUseWindowsIntegratedAuthenticationverifyWDdialogapp beginPrivalert&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERTendPrivonVerifyFailureWD(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN˙˙˙˙ÁÜš*e/L1řDA55 5# ?… 6QQA555A555ىA55A5556QA ¸ ä;5 ä:QA5 ¸ äYC] \ä:QA555 A55C6QA ¸ ä:Qˆߐ怄•ˆᐈؐˆߐĐ•ˆט€Eˆ ͈datawebdavnStateaStateslength cVerifiedURL cVerifyURL setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDdialogenablenext bDoCommitbCommitCanBeDoneverifyNextStateWD˙˙˙˙ÁCšmsgo1ě1 EA ¸ äTä:QA5 ¸ äYC]\ä:QA55B6Qˆѐˆߐˆ҈# setStatusdialogenablenextdatawebdav bDoCommit˙˙˙˙ÁÔš !resourcestateoURL2î3EA555A5557WQV=EQA555 Ž†; ¸ äT5ä:WQA55V5 A555 5 E$QV5 A555 5 6QĆvWQǐĺĎˆ Ń•‘Ýˆďäx•Ę€{–ˆdatawebdavaStatesnState enumerable bFoundFileutilcrackURLurlcHostoFileURLcPath˙˙˙˙eKu˙˙˙˙Á5šresource4‰4#EA555A ¸ ä:QA ¸ ä:QĐ$Ґˆ ͈datawebdav bFoundFileonVerifySuccessWDonVerifyFailureWD˙˙˙˙ÁšstatusŚ4Ě4)EA ¸ ä:Qˆ#͈onVerifySuccessWD˙˙˙˙Ášstatusę45*EA ¸ ä:Qˆ&͈onVerifySuccessWD˙˙˙˙ÁĘšJ:dialogpropsurl*5É8,E T ¸ ä:WQT ¸ ä:5WQVŮ>~A55>6QV ¸ ä×˙ä:= A ¸ äTäV=ä:QA55T ¸ ä:56 QA55A555 YC] \ Y\6 Q; ¸ ä:QA55; ¸ äA555 =ä:6Q; ¸ ä:QA55; ¸ äA555ä:6QA55B6QA5 ¸ äYB]\ä:QA ¸ ä:QA ¸ ä;5ä:QŇ×Ę€y•ˆҐ×•ˆېˆ䐈Ű␈ѐˆřˆѐˆňˆҐˆߐˆҐˆ؈GstoreloctlengthdatawebdavnStatesubstr/setURL cVerifyURLoAuth#bUseWindowsIntegratedAuthenticationUsePlatformAuthapp beginPrivcFileURLCollab uriEncode)com.adobe.acrobat.webdav.writeability.txtendPrivoFileURLutilcrackURL bFoundFiledialogenablenextverifyNextStateWDonVerifyFailureWD AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙Á rš 6újdialogresultnsurlresponserequestparamsdesctoLoadtemp workspaceNamedocumentLibrarytoUpdateš:čELEA55C6QA55B6QZ\WQ=WQ†9âäT ¸ ä:5äCä:WQVŮ>E%QV ¸ äVŮ?ä:= V= WQY\WQYV= ] YY\] \]V= ]B]V]YC]\]=]\WQ†; ¸ äVä:WQ¸ĆvW QV ¸ ä: ¸ ä=ä:×˙zY=]V] \WQ; ¸ ä:Q;5 ¸ äVä:Q; ¸! ä:Q; ¸ äVä:WQ V pÇA55V>75#>75#>75#6"Q9$â$äA5äTä:WQ; ¸ ä:Q; ¸% äVä:WQ; ¸! ä:QV=&KY\WQA555'WQV@ŢV ¸( ä×˙ä:= V= WQ;)äRWQV ¸* ä= ä:WQVVŮ×7W QV9,â,äV ä:6+QVVŮ×7W QV9,â,äV ä:6-Q@WQT ¸. äVä:QA ¸/ äTä:QEV=06+QV=06-QT ¸. äVä:QA ¸/ äTä:QTY\W QA55=06'QV =06+QV =06-QT ¸. äV ä:QnĆvW Q; ¸ ä:Q; ¸1 ä;253ä:Q; ¸! ä:QA ¸4 ä;255ä:QǐˆҐˆҐɐɐ‘čď•ˆČp•Ę•Î•ŃÎ–ČŃĎ˜€Ej‘ˆŘx•Ęâu••ĘÍˆѐˆڐˆѐˆݐˆ„{ž€E‚ˆ鐐ݐˆѐؐˆѐÉ€F•ĘÔ€Ů•×•ˆČp•ÎˆؐÓˆېӐˆېˆ•ˆӐˆ֐ˆΐˆΐˆӐˆ֘€E¨Ęˆ֐ˆΐˆΐˆÓx€EąĘˆѐˆܐˆѐˆ؀{ž€Eşˆdata sharepointdefaultDocumentLibrarybDoDefaultCommit-http://schemas.microsoft.com/sharepoint/soap/ CBEncodeURLstoreloctlengthcharAt/_vti_bin/Webs.asmxcURLGetWebCollectionoRequestcActionbEncoded cNamespaceUsePlatformAuth oAuthenticateMessagecResponseStyleSOAPrequesttoStringindexOfE_ACCESSDENIEDCONNECTcVerbapp beginPrivNetHTTPendPrivsites soapValueIWShowSharepointWorkspace execDialogoklocationsubstrArraysplitwks2 decodeURIdcl2load verifySPFalert AnnotsString&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERT setStatus!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙e˙˙˙˙e7Ń˙˙˙˙ÁĘš 'urldlgDataFçG˝EVQA555EQA555Ů>A555WQ7A5;&A5 ¸ ä:WQV5WQV@E-QVŮ>EQV ¸ ä×˙ä:= V= WQV”í•ˆِĚ•Őˆ ̘€EÍň•ˆ͐ˆŒ data sharepointlocationlengthoDialog undefinedstoreloctsubstr/˙˙˙˙ÁošN-statetaskdata HˆKŇE A555A5557WQ=WQVx=y=y€=yÄz ; ¸ ä= ä:WQ; 5 5 ¸ äA555äVäAäYC]\ä:Q;5WQĄ; 5 5 ¸ äA555äAäYC]\ä:Q;5WQS; 5 5 ¸ äA555äAäYC]\ä:Q;5WQA ¸ äVä:QĺÉc€,‘m €Eßm €Eämʘ€Eِڐˆ ˙ˆ ΐP•ˆ űˆ ΐP•ˆűˆΐP•ˆшdata sharepointaStatesnState writeable enumerable removeableSOAPstreamFromStringTesting WriteablilityNetHTTPWebDAVPutFilecFileURLUsePlatformAuth AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEEnumerateCollection cVerifyURL$IDS_SHARED_REVIEW_NETWORK_CHECK_READ DeleteFile&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE setStatus˙˙˙˙ÁUše¤KULíE; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA ¸ äT5ä:Qˆѐˆܐˆѐˆֈ app beginPrivalert AnnotsString1IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICTendPrivonVerifyFailureSPFtext˙˙˙˙ÁšC'urldocumentLibrarytemptoLoad workspaceName{L’PöE A ¸ ä;5ä:QA55T6QVQA55==WQ$A55= = WQA55A555V= 6 QA555 A555 6QA555 C6Q;äRWQT ¸ ä= ä:WQY\WQVVŮ×7WQV9âäVä:6QVVŮ×7WQV9âäVä:6Q@WQA55C6QˆؐˆԐ”Ń•ˆ ΐŃ•ˆ ɐˆ됈搈אΐˆؐʐӐˆېӐˆېˆ•ˆ҈6 setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDdata sharepoint cVerifiedURL reviewType SharedReviewAcrobatSharedReviewsFormDistributionAcrobatFormsDistributionlocation/oConfigcSetting#bUseWindowsIntegratedAuthenticationArraysplitlengthwks2 decodeURIdcl2bDoDefaultCommitCanBeDone˙˙˙˙ÁGš  łP’Q FA ¸ ä;5ä:QA55B6Q; ¸ ä;5ä:QˆؐˆҐˆ܈I setStatus AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALIDdata sharepointbDoDefaultCommitappalert0IDS_SHARED_REVIEW_SHAREPOINT_DEFAULTDOCLIB_ERROR˙˙˙˙Áŕš*śQęSFA55 5# ?… 6QQA555A555ٍA55A5556QA ¸ ä;5 ä:QA5 ¸ äYC] \ä:QA555 A ¸ äA5 äCä:QA ¸ ä:Qˆߐć€ˆ•ˆ ᐈ ؐˆ ߐĐ•ˆۘ€F"ˆ ͈data sharepointnStateaStateslength cVerifiedURL cVerifyURL setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDdialogenablenext bDoCommitcommitverifyNextStateSPF˙˙˙˙Á1š msgTbT%FA ¸ äTä:QA5 ¸ äYC]\ä:Qˆѐˆ߈# setStatusdialogenablenext˙˙˙˙ÁÍš resourcestate oCheckURL oMatchURL†TV+F A555A5557WQV=EQA555 ‡; ¸ ä9âäT5 ä:ä:WQ; ¸ ä9âäA555 ä:ä:WQA55V5 V5 6QĺĎˆ Ń•ěôˆâˆGdata sharepointaStatesnState enumerable bFoundFileutilcrackURLunescapeurlcFileURLcPath˙˙˙˙Á5šresource5V´V6FA555A ¸ ä:QA ¸ ä:QĐ(Ґˆ ͈data sharepoint bFoundFileonVerifySuccessSPFonVerifyFailureSPF˙˙˙˙ÁšstatusŇVůV6QA ¸ ä:WQV@EQVŮ>ƒA55V6QA55A555=6QA55B6 QA5 ¸ äYB] \ä:QA ¸ ä:QA ¸ ä;5ä:QˆҐˆҐАŐ~•ˆԐˆ琈ҐˆߐˆҐˆ؈?data sharepointdefaultDocumentLibrarynStategetSharePointServerURLlength cVerifyURLcFileURL)com.adobe.acrobat.sharepoint.writeability bFoundFiledialogenablenextverifyNextStateSPF setStatus AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙ÁŁš Ber_iditemŠ[”]XFA ¸ ä:WQA55V75WQVx;5y(;5y1;5y8zIA ¸ ä; ä:Q1A ¸ äTä:QA ¸ äTä:QĐŘcw ‘Ęh€FfĘh€FkĘhʘ€F_ˆӐP•ˆѐP•ˆѐP•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_SMB_NAMEIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEbrwsSNFdialog onErrorWD onErrorSPF˙˙˙˙Átš 0r_iditemľ]>_sFA ¸ ä:WQA55V75WQVx;5y;5yz)A ¸ ä:QA ¸ ä:QĐŘcH ‘Ęh€FĘhʘ€Fzˆ͐P•ˆ͐P•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEonVerifySuccessWDonVerifySuccessSPF˙˙˙˙Á|š 0msgr_iditem__ń`‡FA ¸ ä:WQA55V75WQVx;5y;5y z1A ¸ äTä:QA ¸ äTä:QĐŘcP ‘Ęh€F“Ęhʘ€FŽˆѐP•ˆѐP•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEonVerifyFailureWDonVerifyFailureSPF˙˙˙˙Á|š 0resourcer_iditemałb›FA ¸ ä:WQA55V75WQVx;5y;5y z1A ¸ äTä:QA ¸ äTä:QĐŘcP ‘Ęh€F§Ęhʘ€F˘ˆѐP•ˆѐP•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEonEnumerateFileWDonEnumerateFileSPF˙˙˙˙Á|š 0resourcer_iditemÓbrdŻFA ¸ ä:WQA55V75WQVx;5y;5y z1A ¸ äTä:QA ¸ äTä:QĐŘcP ‘Ęh€FťĘhʘ€FśˆѐP•ˆѐP•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEonEnumerateEndWDonEnumerateEndSPF˙˙˙˙Átš 0statusr_iditemdfĂFA ¸ ä:WQA55V75WQVx;5y;5yz)A ¸ ä:QA ¸ ä:QĐŘcH ‘Ęh€FĎĘhʘ€Fʐˆ͐P•ˆ͐P•ˆ getSelectedIDdataserverControls initiatorName AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEonVerifySuccessWDonVerifySuccessSPF˙˙˙˙Átš 0statusr_iditem])\`Y=*]=]%=],;-5?])\`Y=1]×(]\`Y= ]=@])=]?]A\`Y=]=B]ZY=1]×]\`Y=C]=D]%× ]× ]\`Y=]=]ZY= ]9&â&ä=E;(ä:])=F]%=]C]GX¤]YZ×`YZ\]H\`\]I\]\`\];\`\];\` \];\`\]J\WQ;6 ¸K ä:Q9LâLäVä:WQ;6 ¸M ä:QV•Ę˜€HÁʘ€HÖʘ€Hŕʘ€Höʘ€Iʘ€Iʘ€IYʘ€Itʘ€I‹Ę˜€I”Ę˜€IŁĘ˜€IŤĘ˜€IłĘ˜€IÁʘ€IÎʘ€Jʘ€JV”•ĘĎĎĎĎĘĘ”•ĘĘĘ–ʐ䐐•ĘĘĘÔ•ĘĘĘÔ•ĘĘĘ”•ĘĚ•ĘĘ”•ĘĘĎĎ•ĘĘĘ”•ĘĘĘÔ•ĘĎđ˜€J˘•ĘĘĘ–ʐ䐐•ĘĘĘÔ•ĘĘĘÔ•ĘĚ•ĘĘĘË•ĘĘ”•ĘĚ•ĘĘ—̐•ĘĘ”•ĘßĘĘ–Ȑ˙ᘀJćˆѐˆ֐ˆѐˆŒ initializeinviattcgetServerConfigToAddsendsavebrws normalizeURLfixURLgetFS getSeparator getFilename getDirectory URLToDiPath URLPartialOkidlecommitviewtypeCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_leftalign_children align_fill alignment static_textdialogfontboldhdngitem_id SharedString)IDS_SHARED_REVIEW_DISTRIBUTE_STEP_HEADINGWTnameradiodistgroup_id AnnotsString*IDS_SHARED_REVIEW_DISTRIBUTION_SEND_INVITE)IDS_SHARED_REVIEW_DISTRIBUTION_SAVE_LOCAL align_rowgap2IDS_SHARED_REVIEW_DISTRIBUTION_SAVE_LOCAL_LOCATIONfsav edit_textdestappisProtectedModeEnabledreadonlybutton IDS_BROWSEelementstmsg4IDS_SHARED_REVIEW_DISTRIBUTION_STEP_RADIO_SUBHEADING'IDS_SHARED_REVIEW_DISTRIBUTION_SEND_URL.IDS_SHARED_REVIEW_DISTRIBUTION_ATTACH_TO_EMAIL separator align_topimageimg1$IDS_SHARED_REVIEW_DISTRIBUTION_SEND1des1 wrap_nameedit_text_heightprod description beginPrivANTrustPropagateAllendPriv˙˙˙˙Ámš( ;dialogtoLoadtoHidepathˎq—eH A5B6QA5A ¸ ä:6Q; ¸ ä:Q; ¸ ä:Q; ¸ ä:QA55 Ĺ= A5= 6 QY\WQY\WQVB6 QA55 =E3QA55; EQA555=JVB6QVB6QVB6QA55 =A5= 6 QA55 x= y=y7=yPzVC6QVC6QVB6QKVC6QVC6QVB6Q(VC6QVB6QVB6QA55 x=y= y*=yÎz A ¸ äTä:Qô; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVA555=V6QVB6QVB6QVB6 QVC6QVC6QVC6QFVB6QVB6QVB6 QVC6QVC6QVC6QV="6!QA55#Ĺ= VA55#6QT ¸$ ä=%ä:QT ¸& äVä:QT ¸' äVä:Qˆ͐ˆؐˆѐˆѐˆѐˆŇ•ˆѐĘĘˆʐ˙ •ˆʐˆʐˆʐŃ•ˆѐË`€‘m €H‡m €Hmʘ€H€ˆʐˆʐˆʐP•ˆʐˆʐˆʐP•ˆʐˆʐˆʐP•Ë`€)‘m €Hšm €HŠmʘ€H–ˆѐP•ˆŃŕˆѐˆÓ ؐˆʐˆʐˆʐˆʐˆʐˆʐP•ˆʐˆʐˆʐˆʐˆʐˆʐP€HśˆΐˆŇ•ˆԐˆՐˆӐˆӈdatadocWarningPoppedserverConfigToAddgetServerConfigToAddapp beginPrivCollabupdateMountInfoendPrivdistributionMethod undefinedEMAILhelp reviewTypeFormDistributionserverURL,urn://ns.adobe.com/Collaboration/Forms/EmailtmsgattcsendUPLOADMANUALinvisaveconvertDIPathToPlatformPath cDocumentPathdestdocrequiresFullSavefsavbrwsimg1C_Info_Xl_N.pngpreviousDestinationfocusnextvisibleload˙˙˙˙Áčš+dialogpropstoHide‡—’™ÁHT ¸ ä:WQA55=E3QA55;EQA555=VC6QV5A ¸ äTä:Q#V5 A ¸ äTä:QYB] B] B] C] C]C] \WQT ¸ äVä:QŇ˙ •ˆʐČ֐ȍѐ•–––––ːˆӈstoredata reviewTypeFormDistributionserver undefinedURL,urn://ns.adobe.com/Collaboration/Forms/Emailattcsendfsavdestbrwstmsgvisible˙˙˙˙ÁešdialogtoLoadpropsŚ™]šÖHY\WQT ¸ ä:WQV5EQV5 EQV5 VC6QT ¸ äVä:QĘŇÎˆψÉ•ˆʐˆӈstoreinviattcsendload˙˙˙˙Áš <ƒšJœŕHA55x;5y(;5y/;5y6zGA5551A555A55 5Ë`u ‘Ęh€HéĘh€HîĘhʘ€H䐐ˆѐP•ˆѐP•ˆѐP•ˆdata serverType AnnotsStringIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAMEsmboConfig sharepointwebdav˙˙˙˙Á7šdialog cDefaultLink`œżöHA555WQVA55WQA5V6Q˜€HűԐˆÎp•ˆψ)dataserverConfigToAddcSetting cDocumentNamedistributionURL˙˙˙˙ÁĚš.dialogtoLoadpathtoHide՝# I Y\WQ; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVA555 = V6QT ¸ äVä:QYC] C]C] B]B]B]\WQT ¸ äVä:QĘˆŃŕˆѐˆÓ ؐˆӐ•–––––ːˆӈapp beginPrivCollabconvertDIPathToPlatformPathdata cDocumentPathendPrivdestdocrequiresFullSaveloadfsavbrwstmsgattcsendvisible˙˙˙˙Álš#Cdialog browsePropspropspathsaveURLerrMsg; ŚI YC]A55]C]\WQT ¸ ä:WQA5=6Q; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QVĺ†VQA5V5 6 QA55x=y zpA5V56QA5A55 ¸ äA55 ¸ ä=ä:?äA55Ůä:6Q; ¸ ä:Q; ¸ äV5ä:WQ; ¸ ä:QT ¸ äYV]\ä:QäĆvWQV5=žVQ9âäV5ä:F?,;5WQ+;5WQ;5WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9!â!ä="ä:Qǐ•–АːŇˆѐˆѐؐˆѐ •‘”ˆԐË`{‘mʐˆԐˆ˙ӐP•ˆѐˆݐˆѐˆŢx•ĘÎ•”×XRِˆ ΐP•ˆ ΐP•ˆ ΐP•ˆѐˆՐˆѐˆՀ{–ˆbSavedata cDocumentName cFilenameInitbUnicodestoredistributionMethodMANUALapp beginPriv browseForDocendPrivdistributionFScFS cDocumentPathcPath substring lastIndexOf/lengthCollabconvertDIPathToPlatformPathloaddestmessageVolume Mount ExceptionNumber errorCode AnnotsString#IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR$IDS_SHARED_REVIEW_VOLUME_MOUNT_ERRORIDS_SHARED_REVIEW_VOLUME_ERRORalert DebugThrow VolMountError˙˙˙˙eŒ˙˙˙˙Á—š!url lastSepIndexdirURLsuburl.ŚcŞYIT ¸ ä=ä:WQV>uT ¸ ä>äV?ä:WQT ¸ äV?ä:WQ; ¸ ä:Q; ¸ äVä:VUQ; ¸ ä:QT˜€Igؐ •ÚŘˆѐˆܐˆѐˆŒ lastIndexOf/substrapp beginPrivCollab uriNormalizeendPriv˙˙˙˙ÁÉš2url~ŞvŹtIT ¸ ä ä:4T ¸ ä ä=A55ä:UQ/T ¸ ä ä=A55ä:UQT ¸ ä ä: =T ¸ ä ä:T=UQT=UQTÔ/•ˆI}ˆꐐˆŐ•Ô•ˆČpʐˆČp•ˆŒ matchreplace\data cDocumentName/pdf.pdf^\\\\\\\.?$\/\.?$\.pdf$\.$˙˙˙˙Á’šurlŹĄ­‹IT ¸ ä ä:DQT ¸ ä ä:;5ST ¸ ä ä:DQT ¸ ä ä:;5;5î•ˆААˆ ˈmatch fileSystemdefaultWebDAV^\\\\^.+:\\ ^file:\/\/ ^smb:\/\/˙˙˙˙ÁqšurlpathSepż­ĐŽ”I=WQT ¸ ä ä:DQT ¸ ä ä:=WQ'T ¸ ä ä:=WQVÉî•ˆΐÔ•ˆɐˆŒ/match\^\\\\^.+:\\^(http[s]|file):\/\/˙˙˙˙ÁJšurl pathIndex펉ŻŁIT ¸ äA ¸ äTä:ä:WQV>T ¸ äV?ä:UQTă ؐˆŒ lastIndexOf getSeparatorsubstr˙˙˙˙ÁLšurl pathIndex§ŻF°ŤIT ¸ äA ¸ äTä:ä:WQV>T ¸ ä>äV?ä:UQTă ڐˆŒ lastIndexOf getSeparatorsubstr˙˙˙˙Áßš#urlc°čąłIT ¸ ä ä:?T ¸ ä ä=ä: ¸ ä ä=ä:UQ}T ¸ ä ä=ä:UQT ¸ ä ä=ä:UQT ¸ ä ä=ä:UQT ¸ ä ä=ä:UQ9âäTä:Ô:•ˆúˆސˆސˆސˆސˆӈmatchreplace//$1/unescape^\\\\\\^\/\/^file:\/\/localhost\/ ^file:\/\/\/ ^file:\/\/^\/([^\/]+)\|\/˙˙˙˙Ádš%dest˛nłÁI;5x=y=yz/T ¸ ä ä:T ¸ ä ä:T ¸ ä ä:Ę`Y‘m •mʘ€IՈՐˆՐˆՐˆappplatformMACWINmatch4^(?:http[s]?:\/\/)|(?:file:\/\/)|(?:smb:\/\/).+\/.*$B^(?:http[s]?:\/\/.+\/.*$)|(?:file:\/\/.+\/.*$)|(?:\\\\[^\\]+\\.*$))^(?:http[s]?:\/\/)|(?:file:\/\/\/).+\/.*$˙˙˙˙Á„š* ddialogstrpropstoEnabletoHide‡ł+żÎI A55=E#QA55EQA55  ? reviewType checksize descriptioněÔ´üíJY‚]‚]‚]‚]‚]‚]ZY=];5 ] ;5 ] ;5 ];5]=]ZY=]× ] \`Y=];5]=]C]=]\`Y=]=]=]\`Y=]× ] \`Y=]=]=]ZY=];5 ]=]C]=]\`Y=];5!]=]="]\`Y=];5#]=]=$]\`Y=%];5&]=]=]='](\`Y=]=)]=]ZY=];5*]=+]\`Y=]=,]=]\`\]-\`Y=]=)]=]ZY=];5.]=/]\`Y=]=0]=]\`\]-\`\]-\`Y=]×] \`Y=]=1]=]?]2\`Y=]=3]ZY=]×] \`Y=4]=5]× ] × ] \`Y=]=]ZY=];56]=7]=]C]8X¤] \`\]-\`\]-\`\]-\`\]9\WQ;: ¸; ä:Q9<â<äVä:WQ;: ¸= ä:QV•Ę˜€KOʘ€KSʘ€K]ʘ€K¤Ę˜€KŻĘ˜€KƔ•ĘĎĎĎĎĘ”•ĘĚ•ĘĎĘ–ϐ•ĘĘĎ•ĘĚ•ĘĘĘ”•ĘĎĘ–ϐ•ĘĎĘĎ•ĘĎĘĎ•ĘĎĘĘĎ•ĘĘĘ”•ĘĎĎ•ĘĘÚ˜€L•ĘĘĘ”•ĘĎĎ•ĘĘĺ˜€L*•ĘĚ•ĘĘĘË•ĘĘ”•ĘĚ•ĘĘ—̐•ĘĘ”•ĘĎĘĘ–ů˜€LYˆѐˆ֐ˆѐˆŒ initializeaLnkidlecommitgetServerToAddgetServerConfigToAddviewtypeCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_leftalign_childrengap static_text AnnotsString2IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_PROFILEname align_fill alignmentbolddialogfont edit_textpNamitem_id0IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_CONF_SUMMARY*IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_UPLOADaHow5IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SHAREPOINT_UPLOADaSer link_text.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_URL truncate_endtruncate align_row2IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_WORKSPACE_NAMEaMs1aMs2elements4IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_DOCUMENT_LIBRARYaMs3aMs4 separator align_topimageimg13IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_TIP_DESCRIPTIONdes1 wrap_name descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á Óš 7UdialogtoLoadtoShowprofileNameInitialserversjsrvrconfigaLinkiLinktemp workspaceNamedocumentLibrary;ŐÄŕńJY\WQY\WQVB6Q=WQ; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QA55 KMmMWQA55 A55 V75 "A55 V75 WQ ăL˙˙˙ľNA55 x=y=yR=yřz1V;5WQV;56QVB6QVB6QóV;5WQV;56QA55 x;5y(;5y1;5y:zMV;56Q5V;56QV;56QCV;5WQV;5 6QVB6QVB6QVV6!QV=#6"QV=#6$QA ¸% ä:WQA ¸& ä:WQ;5'WQV ¸( ä äV5)ä:WQVWQV9*â*äVä:6QA5V6QA55 ;5DQA55 =2VB6+QVB6,QVB6-QVB6.Qn;/äRW QV ¸0 ä=1ä:W QV V Ů2×7W QVV 6,QV V Ů2×7W QVV 6.Q@W QT ¸3 ä=4ä:QT ¸5 äVä:QT ¸6 äVä:QĘĘˆʐÉˆŃŕˆѐÍ0Pːŕ•ˆؐ@Θ€KË`€P‘m €Km €K"mʘ€K ˆÍp•ˆӐˆʐˆʐP•ˆÍp•ˆӐË`{ ‘Ęh•Ęh•Ęhʘ€KˆӐP•ˆӐP•ˆӐP•P•ˆÍp•ˆӐˆʐˆʐP€K+ˆ̐ˆΐˆΐĐĐÎˆᐗˆېˆϐí-•ˆʐˆʐˆʐˆϐÎˆؐӐˆ̐Óˆ̐ˆ•ˆՐˆӐˆӈhelpapp beginPrivCollaballReviewServersdata reviewTypeendPrivdrivers serverType initiatorNameinitiatorDefaultNamedistributionMethodEMAILUPLOADMANUAL AnnotsString$IDS_SHARED_REVIEW_NAME_SUGGEST_EMAILaHow)IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_EMAILaSeraLnk%IDS_SHARED_REVIEW_NAME_SUGGEST_UPLOAD*IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_UPLOADIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAME.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SMB_UPLOAD5IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SHAREPOINT_UPLOAD1IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_WEBDAV_UPLOAD%IDS_SHARED_REVIEW_NAME_SUGGEST_MANUAL*IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_MANUALpNamicn1C_Info_Xl_N.pngimg1getServerToAddgetServerConfigToAdd.IDS_SHARED_REVIEW_SAVE_PROFILE_STEP_SERVER_URLreplacecSettingANSMBURLToPlatformPathaMs1aMs2aMs3aMs4Arraysplit/lengthfocusnextloadvisible {cServerUrl}{P˙˙˙˙Á šdialogŘŕáOK; ¸ äA55äCä:Qˆ߈$app launchURLdataaLnk˙˙˙˙ÁKšdialogpropsbResulttoEnable1á8âSKT ¸ ä:WQV5Ů>WQYV]\WQT ¸ äVä:QŇÓŇˆӈstorepNamlengthnextenable˙˙˙˙Áâš$ŽUdialognextprops profileNameserversisrvrmsgconfigserverSâœë]KTŢT ¸ ä:WQV5WQA5V6Q; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVKĄmMWQVV7WQVV5 ; 5 ¸ ä äVä:WQ; ¸ ä:Q; ¸ äYV]\ä:Q; ¸ ä:Q9âä=ä:QăL˙˙˙aNA55D3QA55;EQA555=}A ¸ ä:WQA ¸ ä:WQYV]A55] V5]B]B]A55]\WQA55=VC6QVC6QA5V6Q9 â ä:9!â!äA5ä:Q; ¸ ä:Q; ¸" äV5äV5 äVäA55ä:Q; ¸ ä:Q; ¸ ä:Q; ¸# äV5äV5 äA55ä:Q; ¸ ä:Q •ŇĚˆϐˆŃŕˆѐ5€¤ËËĚ•ăˆѐˆŕˆѐˆޘ€Kzţ•Đ˜€K‚А•ČĐÍ––ՐŃ•ˆϐˆʐˆϘ€K–Εˆ֐ˆѐˆóˆѐˆѐˆшstorepNamdata profileNameapp beginPrivCollaballReviewServers reviewTypeendPrivUI AnnotsString0IDS_SHARED_REVIEW_SERVER_PROFILE_NAME_NOT_UNIQUEreplacealertcMsg DebugThrowServer Name not UniqueaddInternalServerserver undefinedURL5urn://ns.adobe.com/Collaboration/Forms/InternalServergetServerToAddgetServerConfigToAddSettings driverURLDefault DefaultFDdistributionMethod DistMethod SharedReviewANValidateIdentity DistributionServerStepCommitWorkaddReviewServersetDefaultReviewServer\{cServerProfileName\}¤˙˙˙˙Ánš iżëœě¤KA55KBmMWQA55V75A55A55V7˜N™ăL˙˙˙ŔN9âä=ä:QÍ0Eːŕ•ˆĐxːˆՈ%dataservers initiatorName serverType DebugThrowServerType is not setE˙˙˙˙Áš <Âě‰îŻKA55x;5y(;5y/;5y6zGA5551A555A55 5Ë`u ‘Ęh€K¸Ęh€K˝Ęhʘ€KłˆѐP•ˆѐP•ˆѐP•ˆdata serverType AnnotsStringIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAMEsmboConfig sharepointwebdav˙˙˙˙ filterAddrs:š×+oldReqRoldOptRinitiatorEmailnewReqRnewOptR resultVec1 resultVec2ijklíţĽ gL Z\WQZ\WQVQVQVQ>WQ>WWWWQTKémMWQTŮTŮTŮ TŮWQ>WQhmVTŮEQTV7TV7 JVTŮEQTV7TV7 V# ?WQQăVV˙˙˙”VVEQTV7TVV# ?WQTV78QăL˙˙˙NVKmMWQTVVV78QăL˙˙˙čNTVŮ6Q>WQTKZmMWQTŮTŮ5TŮTŮTŮ TŮ0TŮTŮTŮ TŮWQ>WQ“mVTŮEQTV7TV7 uVTŮEQTV7TV7 JVTŮEQTV7TV7 V# ?WQQăVV˙˙˙iVVEQTV7TVV# ?WQTV78QăL˙˙ţ¨NVKmMWQTVVV78QăL˙˙˙čNTVŮ6Q9âä=Tä:Q9âä=Tä:QÉÉŃˆΐ5€ěːˆŃ ސˆ$h\q–ˆ™€Lqá•@•á•@€Lpˆ̘€Lu˜€LpˆΘ€LwŘ•ˆŕ˜€L}5ːˆؐˆѐˆ•5€]ːˆŃ0Ö đ ސˆ$€“€‡€œ–ˆ™€L‰á•@•á•@•á•@€Lˆˆ̘€L˜€LˆˆΘ€L‘Ř•ˆŕ˜€L—5ːˆؐˆѐˆِˆو#length DebugAlert new req r new opt r Řp]őœ2;ězq˙˙˙˙setDateAndTimeGšnewExternalDatenewInternalDate` n §LnToQ;=n;5oQnToQˆΐË•ˆ ڐˆΈinternalDeadlineDate deadlineDate AnnotsString'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE˙˙˙˙Á> š_™‘ reviewType accessLevels descriptionEmailDescription EmailDescriptionFormDistribution— |Ć ąLY\Š˙˙˙˙QY‚]‚]‚]‚]‚]‚]‚]‚]‚]‚ ] ‚ ] ‚ ] ‚ ] ‚ ] ‚]‚]‚]‚]‚]‚]‚]‚]‚]‚]‚]\WQ9âä=Tä:QZY=];5];5 ]!;5"]#;5$]%=&]'ZY=]=(])=&]'ZY=]=*])=&]'ZY=+];,5-].=]/\`Y=0]=1].=2]/=&]'=3]4\`\]5\`Y=]=6])=&]'ZY=7];,58].×]=]/\`Y=9]=:]/C];YZ×`YZ\]<\`\]=\]!=&]'\`\]5\`Y=]=6])=&]'ZY=7];,5>].×]=]/\`Y=9]=?]/C];YZ×`YZ\]<\`\]=\]!=&]'\`\]5\`Y=]=*])=&]'ZY=0];,5@].=A]/×K]C]B=C]D\`Y=9]=E]/=&]'\`\]5\`Y=]=*])=&]'ZY=0];,5F].=G]/×K]=C]DC]B\`Y=H]=I]/×]×]!\`Y=0]=&]'=J]/=3]4\`Y=+];,5K].=L]'=]/\`\]5\`Y=9]=M]/=&]'C];YZ×`YZ\]<\`\]=\]!\`Y=]=*])=&]'ZY=0];,5N].=O]/\`Y=P]=Q]/=&]'\`\]5\`Y=]=*])=&]'ZY=+];,5R].=]/\`Y=0];,5S].=T]/=&]'\`\]5\`\]5\`\]5\`\WQZY=];5];5 ]!;5"]#;5$]%=(])=&]'ZY=]=(])=&]'ZY=]=*])=&]'ZY=+];,5-].=]/\`Y=0]=1].=2]/=&]'\`\]5\`Y=]=6])=&]'ZY=7];,58].×]=]/\`Y=9]=:]/C];YZ×`YZ\]<\`\]=\]!=&]'\`\]5\`Y=]=*])=&]'ZY=0];,5@].=A]/×K]C]B=C]D\`Y=9]=E]/=&]'\`\]5\`Y=]=*])=&]'ZY=0];,5F].=G]/×K]=C]DC]B\`Y=H]=I]/×]×]!\`Y=0]=&]'=J]/=3]4\`Y=+];,5K].=L]'=]/\`\]5\`Y=9]=M]/=&]'C];YZ×`YZ\]<\`\]=\]!\`Y=]=*])=&]'ZY=0];,5N].=O]/\`Y=P]=Q]/=&]'\`\]5\`Y=U];,5V].=W]/\`\]5\`\]5\`\WQT=XDQT=YVV6ZQVV6ZQ;[ ¸\ ä:Q9]â]äVä:WQ;[ ¸^ ä:QVĐ•Ę˜€N ʘ€N0ʘ€N5ʘ€N:ʘ€N\ʘ€Ndʘ€N‡Ę˜€N•Ę˜€N¨Ę˜€NŽĘ˜€NÍʘ€Náʘ€Nóʘ€Nýʘ€Oʘ€Oʘ€Osʘ€O­Ę˜€OČʘ€OÎʘ€Oßʘ€P?ʘ€PDʘ€PTϘ€Píˆِ”•ĘĎĎĎĎĘ”•ĘĘĘ”•ĘĘĘ”•ĘĎĎ•ĘĘĘĘÚ˜€Q•ĘĘĘ”•ĘĎ—ϐ•ĘĘ–ďÚ˜€Q(•ĘĘĘ”•ĘĎ—ϐ•ĘĘ–ďÚ˜€Q=•ĘĘĘ”•ĘĎĘ—–ϐ•ĘĘÚ˜€QR•ĘĘĘ”•ĘĎĘ—ʐː•ĘĘ—̐•ĘĘĘĎ˜€Qr•ĘĎĘÚ˜€Qz•ĘĘĘ–ô•ĘĘĘ”•ĘĎĎ•ĘĘÚ˜€Q“•ĘĘĘ”•ĘĎĎ•ĘĎĘő˜€Q­”•ĘĎĎĎĎĘĘ”•ĘĘĘ”•ĘĘĘ”•ĘĎĎ•ĘĘĘÚ˜€Qѕʐʐʐ”•ĘĎ—ϐ•ĘĘ–ďÚ˜€Qć•ĘĘĘ”•ĘĎĘ—–ϐ•ĘĘÚ˜€Qű•ĘĘĘ”•ĘĎĘ—ʐː•ĘĘ—̐•ĘĘĘĎ˜€R•ĘĎĘÚ˜€R#•ĘĘĘ–ô•ĘĘĘ”•ĘĎĎ•ĘĘÚ˜€R<•ĘĎę˜€RGŘ•ˆј€RMˆ̐ˆѐˆ֐ˆѐˆŒ initializegetDefaultEmailMessagegetShareFileMessagegetShareFileSubjectgetDeadlineMessagegetDeadlineSubjectreplaceParamsByValuesgetSelectedItemText splitAddrs joinAddrs updateAddrs(removeDuplicateEmailAddressesAcrossLists#removeDuplicateEmailAddressesInListremoveDuplicateEmailAddressesemailListsMatchallEmailAddrsValid resolveAddrsidleaddrdlvLpLnkdlnkadrbhelpcommit DebugAlert reviewTypeviewtypeCollab wizardWidthwidth wizardHeightheight marginHeight margin_heightwizardMarginWidth margin_width align_fill alignment align_leftalign_children align_row link_text AnnotsString,IDS_SHARED_REVIEW_EMAIL_STEP_DELIVERY_METHODnameitem_id static_textdlvS truncate_endtruncateelements align_topbuttonIDS_GEN_ADDRESSEE_HEADING edit_textreqR multilineedit_text_heightprodIDS_GEN_CC_HEADINGoptRIDS_GEN_SUBJECT_HEADINGsSubbolddialogfontsubjIDS_GEN_MESSAGE_HEADINGsMsgimageiconaDoc*IDS_SHARED_REVIEW_EMAIL_STEP_RESET_DEFAULT align_rightmesg)IDS_SHARED_REVIEW_EMAIL_STEP_ACCESS_LEVELsAclpopuppAcl,IDS_SHARED_REVIEW_EMAIL_STEP_DEADLINE_REVIEW'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINEdydt check_box,IDS_SHARED_REVIEW_EMAIL_STEP_ALLOW_ANONYMOUSannyFormDistributionFormDistributionEmail descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á/št dialogtoLoadtoEnabletoShow defaultDateyearmonthdayhoursminutessecondstempdocNamebNameHasPercentEncodingdecodedDocName customMessageusernameaPathů ›; ˇLY\WQY\WQY\WQA55 A5Z\6QA55 A5Z\6QA55=DQA55=VB6QVB6QA55=YB] B] \WQA5B6 QA55= DQA55= ÔVC6QVC6QVA5556QA555;5EQA55=(V;5;56QHA5559âä=;ä:V;56QVB6QVB6QA55= ŰA55;˛; ¸ ä:Q; ¸ ä:WQ; ¸! ä:Qn"V5#o"Qn$V5%o$Q9&â&ä;$ ¸' ä×ä×ä:ä× ä:WQ9&â&ä;$ ¸' ä×ä×ä:ä× ä:WQ9&â&ä;$ ¸' ä×ä×ä:ä× ä:WQ9&â&ä;$ ¸' ä× ä×ä:ä× ä:WQ9&â&ä;$ ¸' ä× ä×ä:ä× ä:WQ9&â&ä;$ ¸' ä×ä×ä:ä× ä:W Q;( ¸) äVäV?äVä:Q;( ¸* äVäVäV ä:QA5C6QV;"6 Q‡A55=qA55+=,A5;5.6-QVA55-6 Qn"A55-o"Qn$A55+o$QA55=EQA55/=0VB6 QVB6 QA55=EQA55/=1#VB62QVB63QVB64QA55= VC65QVC65QVB65QA ¸6 äTäCä:QVB67QA558CyVC69QVC6:QA55/=0DQA55/=1ÔVB69QVB6:QA55;=<Xˆ˙˙˙˙9âä==;ä:×˙8Qˆ˙˙˙˙9âä=>;ä:×8QRˆ˙˙˙˙9âä==;ä:?8Qˆ˙˙˙˙9âä=>;ä:×ţ8QRˆ˙˙˙˙9âä==;ä:?8Qˆ˙˙˙˙9âä=>;ä:×ţ8QVˆ˙˙˙˙6:QVB69QVB6:QA55= D\QA55= DEQA55=EQA55/=0DQA55=AA55?6?QAA55@6@Q=,W QA55A%A55A ¸B ä ä:W QA55CEQA55C5DA55C5DV W Q;5E=FEQV =,3V ¸G äV ¸H ä=Iä:?ä:W QR;5E=JEQV =,.V ¸G äV ¸H ä=Kä:?ä:W QBW Q=,W QV ¸L ä=Mä:×˙E)QA55NEQA55NĹ=OCCW QA55N ¸G äA55N ¸H ä=Pä:?ä:W QA55Q DQA55RpV AA5A5@ ¸S ä äV =TV =Uä:6QQ,A5A5@ ¸S ä äV ä:6QQA553 DQA55R`V 1A5A5? ¸S ä äV ä:63Q,A5A5? ¸S ä äV ä:63QA5B6RQA5A55? ¸S ä äA55Vä:63QA55= DsQA55= D\QA55=EQA55/=0D.QA55=DQA55=; ¸ ä:Q; ¸W äA55äA55äA558ä:WQ; ¸! ä:QA5V6QQA55Q;A5A ¸X ä:6QQA5A ¸Y äA55Qä:6QQA55=#A55= DQA55=kA5=,6QQVB64QVB6ZQVB6[QVB6\QVB6]QVB63QVB6^QVB62QA55= zA5=,6QQVB6_QVB6QVB64QVB6ZQVB6[QVB6\QVB6]QVB63QVB6^QVB62QA55=…A5A ¸` ä:63Q; ¸ ä:QA55a ¸b ä:WQ; ¸! ä:QA5A553 ¸S ä äVä:63QA55=cEQA558CdA55=,A5A55Q;5d6QQ'A5A55Q;5e6QQA5B6RQA55=EQA55/=1'A5=,6QQA5=,63QVA55Q62QVA55363QT ¸f ä=_ä:QV;5g6_QA55=cDTQA558CDAQA55=E*QA55/=1EQA55hCVB6[QVB6\Qa; ¸ ä:Q; ¸i äA55jä:WQ; ¸! ä:QVV6\QV=k6ZQ; ¸ ä:QA55l A5;m5n6lQ; ¸! ä:QA55=V;5p6oQT ¸q äVä:QT ¸r äVä:QT ¸s äVä:QĘĘĘˆĚ•ˆѐˆĚ•ˆѐč•ˆʐˆʘ€LĘŃ•ˆ֘€LҐˆ͐č€Ď•ˆʐˆʐˆِň#•ˆ㐐땐ˆؘ€L䐈ʐˆʘ€LęŃ€֕Ń•ˆ ѐԐˆ ѐˆ ӐˆӐěěěěěěˆߐˆݐˆ͐ˆ ӐŃ•Ń•ˆ֐ˆԐˆ֐ˆ֘€M 蕐ˆʐˆʐč•ˆʐˆʐˆʘ€MŃ•ˆʐˆϐˆʐˆӐˆʐÍ€t•ˆʐˆʐč€Ď•ˆ ʐˆ ʐŃS•ˆ 琈 쐐ˆ 搈 였M;ˆ 搈 琐ˆאˆʐˆʘ€MH××îŃ•ˆҐˆҐÉË•ˆŕáᐐß.•ˆß•˜€Mhˆ鐐•ÉîˆAŇ•ˆ•ˆůˆ Ý•<•ˆüˆ瘀M|ˆ Ý•,•ˆ쐐ˆ琐ˆ͐ˆô˜€Mˆ××î×Ń•˜€M—ˆѐřˆѐˆϘ€M Ń•ˆؐˆäŃ•čf•ˆѐˆʐˆʐˆʐˆʐˆʐˆʐˆʐˆϐŃ•ˆѐˆʐˆʐˆʐˆʐˆʐˆʐˆʐˆʐˆʐˆʘ€MÉŃ•ˆؐˆѐڐˆѐˆ쐐䕐Ń'•ˆ琐ˆ␐ˆ͐č•ˆѐˆј€MäˆԐˆԘ€MéˆՐˆӐęű•ˆʐˆϐˆŃŕˆѐˆ̐ˆΘ€M˙ˆѐˆĚ•ˆ֐ˆѐŃ•ˆӐˆӐˆӐˆӈdatareqRoptR reviewTypeFormDistributionEmailSharedReviewEmailacl1prev ShareFiledlnkdydtdeliveryMethodLinkClicked SharedReviewFormDistributiondlvSdlvLserverUI AnnotsString'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAILdistributionMethodMANUAL%IDS_SHARED_REVIEW_NAME_SUGGEST_MANUAL SharedString*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILWTIDS_TRACKER_ACROBAT_DOT_COM deadlineIsSet undefinedapp beginPrivCollabgetDefaultDateAndTimeendPriv deadlineDate externalDateinternalDeadlineDate internalDateparseIntsubstrobjectDeadlineDatesetUTCFullYear setUTCHoursinternalDeadlinedeadline'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINEaction AddReviewersChangeDeadlinemesgsubjpLnkanny updateAddrsertcUseDocumentCentersAclpAcl accessLevel Restricted(IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS)IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS cannedSubj cannedMsgdocPathmatchdocdocumentFileNameplatformWIN substring lastIndexOf\MAC:indexOf% decodedURLstring/msg msgChangedreplace () cDocumentNamegetCustomEmailMessagegetDefaultEmailMessagereplaceParamsByValuesiconattmaDocsSubsMsgaddrgetShareFileSubjectswConn getFullNameUPLOAD"IDS_SHARE_FILE_PREVIEW_EMAIL_ADDON/IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDONfocusaddressBookAvailablesendAttachmentconvertDIPathToPlatformPath cDocumentPathA_Attachments_Sm_N.pngraddridentityemailnextIDS_SENDloadenablevisible[^\/]*$ %docname% %docname% %docname% %docname% %docname% %username%˙˙˙˙ÁešX$msgĆ; ť? NA55=A ¸ ä:A9âä=;=A55ä:QA55 x= y= yÇ= yĂzž9 â ä=A55;ä:WQA5549 â ä=A55;ä:WQKV ¸ ä ä;5ä:WQV ¸ ä ä;5ä:WQV=9 â ä=A55;ä:Ń•ˆҐˆíË`€‘m €N&m •mʘ€NęË/•ˆ ˆ 㐈 㐐ˆ”ˆ–ˆ琈data reviewType ShareFilegetShareFileMessage DebugAlertWT1WT * actiondistributionMethodUPLOADMANUALEMAIL SharedString+IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAILUBUseDocumentCenter)IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAILreplace AnnotsString"IDS_SHARED_REVIEW_READER_VERSION_8#IDS_SHARED_REVIEW_ACROBAT_VERSION_8/IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL%reader_version%%acrobat_version%˙˙˙˙Áš msgŢ? 7@ 0N;5WQVÎˆŒ AnnotsStringIDS_SHARE_FILE_PREVIEW_EMAIL˙˙˙˙Áš subjZ@ ľ@ 5N;5WQVÎˆŒ AnnotsStringIDS_SHARE_FILE_SUBJECT_EMAIL˙˙˙˙ÁÇšU1msginfo×@ EF :N VQ;;5<;5WQV ¸ ä äA55ä:WQéA55;5Z;5WQV ¸ ä äA55ä:WQV ¸ ä ä;ä:WQy;5 WQV ¸ ä äA55ä:WQV ¸ ä äA55ä:WQV ¸ ä ä;ä:WQVQA55 = ;5 WQ\A55 = F;5WQV ¸ ä ä9âäA55ä:ä:WQV=V”Đ7•ˆΐˆ鐐ÖU•ˆΐˆ䐈㐐ˆΐˆ䐈䐈ސ”Ń•ˆӐŃ•ˆΐˆ󐐐ˆΈ deadlineDate AnnotsString'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE;IDS_SHARED_REVIEW_PREVIEW_REMOVE_DEADLINE_ATTACHED_EMAIL_SRreplacedata cDocumentNamedeadline8IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_ATTACHED_EMAIL_SR;IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SRdistributionMethodEMAIL;IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SRUPLOAD<IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SRANSMBURLToPlatformPathdistributionURL %docname% %docname% %newdeadline% %docname% %olddeadline% %newdeadline% %review_url%˙˙˙˙Á7š subjgF G \N;5WQV ¸ ä äA55ä:WQVÎˆ䐈Œ AnnotsString.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SRreplacedata cDocumentName %docname%˙˙˙˙Áýšz*strtempURLCG nL dNA55x=y=y‹=y†zA55=DEQA55=D.QA55=DQA55= VQA55 5 = (9 â äA55ä:WQRA55 5 =A55WQ#9âäA55ä:WQ"mT ¸ ä äVä:UQăT ¸ ä=ä:×˙˙˙˙Ę*mT ¸ ä äA55ä:UQăT ¸ ä=ä:×˙˙˙˙ÂWR*mT ¸ ä äA55ä:UQăT ¸ ä=ä:×˙˙˙˙ÂTË`€í‘m €N{m €Nmʘ€Nhîč•”Ö#•ˆ ăÖ•ˆ Ԑˆ ސ(;•ˆݘ€Ntˆ ސ(C•ˆ嘀Nvˆ ސP•P•(C•ˆ嘀N€ˆ ސP•ˆŒ datadistributionMethodUPLOADMANUALEMAIL reviewType SharedReviewSharedReviewEmailFormDistributionFormDistributionEmailserverURL1urn://ns.adobe.com/Collaboration/SharedReview/SMBANSMBURLToPlatformPathdistributionURL8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint encodeURIreplaceindexOf %review_url% cDocumentName %docname% %review_url% %docname% %docname%°C^C;˙˙˙˙ÁMšidoi“L "M ‡NA5 ¸ ä:T7WQVKmMWQVV7> V˜N™ăL˙˙˙ăN=Ů5"ːÉ•ˆ|ːˆŽ dialogstore#"˙˙˙˙Á“š#addrs resultVecaddrVecjiaddr’M ÷N •N Z\WQT; VT ¸ ä ä:WQ>WQVKHmMWQVV7 ¸ ä ä=ä:WQVVV# ?WQV8QăL˙˙˙şNVÉÉ”Ř•5Kːâ •ˆܐˆŒ undefinedsplitreplace$1 \;|\n|\r\n|\r^\s*(\S(?:.*\S)?)\s*$BK˙˙˙˙ÁšaddrsO bO ¨NT ¸ ä=ä:ˆՈjoin;˙˙˙˙Á,š 8dialogdataIntempoptRpO ‡R ŽN T§VQA55=EQA55=&A ¸ äA55ä:WQ=WQYA ¸ äA55ä:]V]\WQT ¸ äVä:Q†T ¸ ä:WQA5A ¸ äV5ä:6QA55=EQA55=&A5A ¸ äV5ä:6Q€˘•”č!•ˆᐐˆɐ•ÝÍˆؐŇˆáč•ˆáˆ)data reviewTypeFormDistributionFormDistributionEmail joinAddrsoptRreqRloadstore splitAddrs˙˙˙˙Áłš& firstList secondListnewListaddrsiaddrlenĂR ´T ÍN =WQ=T=UQT ¸ ä ä:WQVKLmMWQVV7WQT ¸ ä=V=ä:@VV=WQăL˙˙˙śNVŮWQV ¸ ä?äV×ä:˜€NŇɐˆӐŘ5OːËŕ•ˆڐĚˆ؈";splitmatchlengthsubstr;>O˙˙˙˙Á š addrListnewListaddrsiaddrlenéT ŃV áN =WQT ¸ ä ä:WQVKLmMWQVV7WQV ¸ ä=V=ä:@VV=WQăL˙˙˙śNVŮWQV ¸ ä?äV×ä:˜€Nçɐؐ5OːËŕ•ˆڐĚˆ؈";splitmatchlengthsubstr;+O˙˙˙˙ÁŠšlistsW žX óNTA ¸ äT5ä:6QTA ¸ äT5ä:6QTA ¸ äT5ä:6QTA ¸ äT5äT5ä:6QTA ¸ äT5äT5ä:6Qˆސˆސˆސˆ琈çˆYtoList#removeDuplicateEmailAddressesInListccListbccList(removeDuplicateEmailAddressesAcrossLists˙˙˙˙Áwš firstList secondList firstArray secondArrayfirstSortedListsecondSortedListŕX Z ýN A ¸ äTä:WQA ¸ äTä:WQV ¸ ä: ¸ ä=ä:WQV ¸ ä: ¸ ä=ä:WQVVÔÔăăˆȈ- splitAddrssortjoin;˙˙˙˙Ápš# addrArray invalidIDsiaddr7Z t[ O=WQTKTmMWQTV7WQ9âäVä: +V=V=WQVVWQăL˙˙˙ŽNVÉ5WːËˆÓ•É•ˆ ͐ˆ ԐˆŒCBIsValidEmail, W˙˙˙˙Á\š-›RdialogpropsdistMethodIsShareresolvedEmailListemailCategories finalLists invalidIDsReq invalidIDsOptresult’[ şf OYB]A55 ¸ ä=ä:]A55 ¸ ä=ä:]A55] A55 ] C] \WQA55 =>T ¸ äYB]\ä:QVC6QV;56QA55WQA55=D QVVC6 Q; ¸ ä:Q†; ¸ äVä:WQ-ĆvWQ9âä=ä:QÇ; ¸ ä:QV ¸ ä ä:WQYV>7 ¸ ä×ä:] V?7 ¸ ä×ä:]!V×7 ¸ ä×ä:]"\WQA ¸# äVä:Q=$WQ=$WQA5A ¸% äV5 ä:6QA5A ¸% äV5!ä:6QA ¸& äTäCä:QA ¸' äA55ä:WQA ¸' äA55ä:WQV=$DQV=$ÁV=$EQV=$V=(WQV=$VVWQ; ¸ ä:Q; ¸) ä;5* ¸+ ä äVä:ä?ä?ä:WQ; ¸ ä:QV?9âä=,ä:Q•–ááĐĐËŃ•ˆܐˆʐˆӐĎÚ•ˆʐˆѐ‘Řx•ĘˆՀ{–ˆѐŘ•ŘŘŢˆј€OYɐɐˆᐈᐈӐˆܐˆܐŘ•Ř•ˆ ͐É•ˆ ːˆ ѐřˆ ѐ •ˆՈ?bUIdatareqRjoin;cTooptRcCcsubjcSubjectmsgcMsgbNoError reviewTypeFormDistributionenablenext bShowProgresscProgressMessage AnnotsStringIDS_GEN_STATUS_RESOLVINGUseDocumentCenterdistributionMethodMANUALapp beginPrivgetResolvedAddresses DebugThrowThrow: SendmailendPrivsplitsubstrtoListccListbccListremoveDuplicateEmailAddresses splitAddrs updateAddrsallEmailAddrsValid, alert%IDS_SHARED_REVIEW_UNRESOLVED_MAIL_IDSreplace0The email addresses are not valid. So try again.˙˙˙˙e& %mailids%˙˙˙˙Á §š $~\dialogpropstoEnabletoLoadstyearmonthdayhoursminutessecondsŇf Čp sOT ¸ ä:WQY\WQY\WQA55=›A5559âä=;ä:ERQA555; 5 E1QA5559âä= ;ä:VB6 QVB6 QA55=V; 56QA ¸ äV5ä:WQA ¸ äV5ä:WQA55=EQA55=VB6Q’A55=EQA55=-VVŮ>DQVŮ>6Q=A55=VC6QVVŮ>6QA55;yA55=VC6Q;=I9âä; ¸ ä×ä×ä:ä× ä:WQ9âä; ¸ ä×ä×ä:ä× ä:WQ9âä; ¸ ä×ä×ä:ä× ä:WQ9âä; ¸ ä× ä×ä:ä× ä:WQ9âä; ¸ ä× ä×ä:ä× ä:W Q9âä; ¸ ä×ä×ä:ä× ä:W Q; ¸ äVäV?äVä:Q; ¸! äVäV äV ä:QT ¸" äVä:QT ¸# äVä:Q˜€OxҐʐʐŃ•˙ţ•ˆʐˆʐŃ•ˆӐŮŮč•ˆϐč(•ˆ萐Ń•ˆ ϐˆ ӐŃ•Ń•˜€OšˆʐË•ěěěěěěˆ ߐˆ ݘ€OŠˆӐˆӈstoredata reviewTypeFormDistributionserverUI SharedString*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILWT AnnotsString'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAIL5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERprevdlvLdistributionMethodMANUALnextIDS_SEND splitAddrsreqRoptRSharedReviewEmailactionChangeDeadline AddReviewerslengthinternalDeadlineinternalDeadlineDateparseIntsubstrobjectDeadlineDatesetUTCFullYear setUTCHoursloadenable˙˙˙˙ÁNš8"dialogaddrs joinedReqR joinedoptRáp Ěs ­O A ¸ äTäBä:QVQ†A55 ¸ ä=ä:WQA55 ¸ ä=ä:WQ; ¸ ä:Q; ¸ äYV] V] C] B] \ä:WQ; ¸ ä:QĆvWQÇVA5A ¸ äV>7ä:6QA55=EQA55=#A5A ¸ äV?7ä:6QA ¸ äTäCä:QˆӐ”‘ŕŕˆѐˆ÷ˆŃx•Ę€{ž€Oż •ˆސč•ˆސˆӈ updateAddrsdatareqRjoin;optRapp beginPriv mailGetAddrscTocCcbCcbBccendPriv splitAddrs reviewTypeFormDistributionFormDistributionEmail˙˙˙˙ež˙˙˙˙Áš dialogĺs Bt ČOA5C6QT ¸ ä:Qˆ͐ˆψdatadeliveryMethodLinkClickedprevious˙˙˙˙Áš(!dialogXt ăv ÎOA55=EQA55="A5A ¸ ä:6Q*A5A ¸ äA ¸ ä:ä:6QA55 = EQA55 CdA55= ,A5A55; 56Q'A5A55; 56QT ¸ äYA55]\ä:Qč•ˆݐˆ吐䕐Ń'•ˆ琐ˆ␐ˆćˆ#data reviewTypeSharedReviewEmailactionChangeDeadlinemsggetDeadlineMessagereplaceParamsByValuesgetDefaultEmailMessagedistributionMethodUPLOADUseDocumentCenter ShareFile AnnotsString"IDS_SHARE_FILE_PREVIEW_EMAIL_ADDON/IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDONloadmesg˙˙˙˙Áěš% šdialogtoLoadtoEnableüv ď‹ ßO ; ¸ ä:Q; ¸ ä;ä:Q; ¸ ä:QY\WQY\WQA55=EQA55 = B; A55 DVB6 QVB6QVB6QV=6QV=6 QíVC6 QVC6QVC6QA55={; ;5V;56QV;5=;56 QVV5 ¸ ä äA55ä:6QVV5 ¸ ä äA55ä:6 QÉA55 ;5ĹV;56QV;5=;56 QVV5 ¸ ä äA55ä:6QVV5 ¸ ä äA55ä:6 QVV5 ¸ ä ä; ä:6 QîV;56QV;5=;56 QVV5 ¸ ä äA55ä:6QVV5 ¸ ä äA55ä:6 QVV5 ¸ ä äA55 ä:6 QVV5 ¸ ä ä; ä:6 QCA55=-; ;5ÚV;56QV;5=;56 QVV5 ¸ ä  äA55ä:6QVV5 ¸ ä  äA55ä:6 QVV5 ¸ ä  ä9 â äA55!ä:ä:6 QCA55 ;5V;56QV;5=;56 QVV5 ¸ ä  äA55ä:6QVV5 ¸ ä  äA55ä:6 QVV5 ¸ ä ä; ä:6 QVV5 ¸ ä ä9 â äA55!ä:ä:6 Q+V;56QV;5=;56 QVV5 ¸ ä äA55ä:6QVV5 ¸ ä äA55ä:6 QVV5 ¸ ä äA55 ä:6 QVV5 ¸ ä ä; ä:6 QVV5 ¸ ä ä9 â äA55!ä:ä:6 QV; 6"QT ¸# äVä:QT ¸$ äVä:QˆѐˆאˆѐĘĘč•Ń?•ˆʐˆʐˆʐˆΐˆӐˆʐˆʐˆʐŃ€v•Đ€˜•ˆӐˆ䐈󐐐Ö€Ŕ•ˆӐˆ䐈퐐ˆӐˆ䐈혀PŃ•Đ€Ő•ˆӐˆ䐈˙“Ö€ý•ˆӐˆ䐈萈˙“ˆӐˆ䐈萈ý˜€P9ˆΐˆӐˆӈapp beginPrivCollabgetDateAndTimeinternalDeadlineDateendPrivdata reviewTypeSharedReviewEmailactionChangeDeadline deadlineDatedeadlinemesgsubjpLnkdistributionMethodEMAIL AnnotsString'IDS_SHARED_REVIEW_EMAIL_STEP_NODEADLINE1IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_SUBJ_SR;IDS_SHARED_REVIEW_PREVIEW_REMOVE_DEADLINE_ATTACHED_EMAIL_SR ;IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_CLICK_SRreplace cDocumentName.IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_SUBJ_SR8IDS_SHARED_REVIEW_PREVIEW_ADD_DEADLINE_ATTACHED_EMAIL_SR;IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SRUPLOAD<IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_UPLOAD_SRANSMBURLToPlatformPathdistributionURLdydtenableload %docname% %docname% %docname% %docname% %newdeadline% %docname% %docname% %olddeadline% %newdeadline% %docname% %docname% %review_url% %docname% %docname% %newdeadline% %review_url% %docname% %docname% %olddeadline% %newdeadline% %review_url%˙˙˙˙ÁšdialogŒ 8Œ ?PA ¸ äTä:Qˆшaddr˙˙˙˙ÁÖš+dialoghelpIDNŒ 8Ž DP=WQA55=DQA55==WQ_A55=DQA55==WQ$A55= = WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QÉč•ˆΐč•ˆΐŃ•ˆɐˆѐˆՐˆшdata reviewType SharedReviewSharedReviewEmail Review_StartFormDistributionFormDistributionEmailForms_Distribute ShareFile RTC_Shareapp beginPrivCollablaunchHelpViewerendPriv˙˙˙˙Á'š@xÁdialognextoaddon1addon2 bakupMessagetempURL currMessageret_valPŽ Ł TPA552A5ˆ˙˙˙˙A ¸ ä=ä:76QA5>6QA ¸ äTäBä:QTA55=EQA55=  A ¸ äTä:QT ¸ ä:WQA5V5 6 Q;5WQ;5WQ;5=™9âäVä:WQV ¸ ä ä=ä:WQ9âäVä:WQ9âäVä:WQV ¸ ä ä=ä:WQ9âäVä:WQA55 WQV ¸ äVä=ä:WQV ¸ äVä=ä:WQA55=EQA55="A55=ŹA55x=y=yg= y}z}*mV ¸ äA55ä=ä:WQăV ¸ äA55ä:×˙˙˙˙ź*VQA55!5"=#(9$â$äA55%ä:WQRA55!5"=&A55%WQ#9'â'äA55%ä:WQ"mV ¸ äVä=(ä:WQăV ¸ äVä:×˙˙˙˙Ě*mV ¸ äA55ä=ä:WQăV ¸ äA55ä:×˙˙˙˙ź ; ¸) ä:Q;* ¸+ äVäA55äA55äA55ä:Q; ¸, ä:QA5V5-6-QA55=.O; ¸) ä:Q;* ¸/ ä=0äA55!5"ä:Q; ¸, ä:QA55=?A51 ¸ ä:52A5C63QA5B63QA55=.DQA55=dA554;5NA5;766QA5;564QA554=A5;968QśT ¸ ä:5 WQ;5=âA59âäA55 ä:6 Q9:â:ä=;A55 ä:QA5A55 ¸ ä ä=ä:6 Q9:â:ä=;A55 ä:QA59âäA55 ä:6 Q9:â:ä=;A55 ä:QA55=EQA55=€A55 Vl; ¸) ä:Q; ¸< ä;5=ä×ä×ä:WQ; ¸, ä:QV×9>â>ä=?ä:QË-•ˆ퐐ˆ͐ˆӐ€•ˆé•ˆј€PlҐˆԐÎÎĐ•ˆ֐ˆސˆ֐ˆ֐ˆސˆ֘€P€Ďˆܐˆܐč€•Ń•Ë`€œ‘m €P‘m €PŚmʘ€PŠ(I•ˆ 嘀Pˆ䐐P•”Ö#•ˆ ăÖ•ˆ Ԑˆ ސ(9•ˆ ݘ€Pžˆܘ€P˘(I•ˆ 嘀P˘ˆ䐐P•P€PŹˆѐˆůˆ֐ˆԐŃ•ˆ ѐˆ 萈 ѐŃ•Ö•ˆҐˆ͐č•Ń•ˆѐˆѐŃ•ˆ֘€PѐאĐ•ˆ搈ᐈᐈ搈ᐐ蕐ϕˆѐ合ѐ•ˆՈ)dataUseDocumentCenter accessLevelgetSelectedItemTextpAcl updateAddrs reviewTypeFormDistributiondistributionMethodMANUAL resolveAddrsstoremsgmesg AnnotsString/IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_ADDON"IDS_SHARE_FILE_PREVIEW_EMAIL_ADDONappplatformMACescapereplace%0DunescapeSharedReviewEmailFormDistributionEmail ShareFileEMAILUPLOAD cDocumentName %docname%indexOfserverURL1urn://ns.adobe.com/Collaboration/SharedReview/SMBANSMBURLToPlatformPathdistributionURL8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint encodeURI %review_url% beginPrivCollabsetCustomEmailMessageendPrivsubj SharedReviewsetCustomServerLinkLatestdialogannyallowAnonymousinternalDeadlineinternalDeadlineDatedeadline deadlineDate oDeadlineobjectDeadlineDate DebugAlert this.data.msgalert"IDS_INVITE_CUSTOM_MSG_WILL_BE_LOST DebugThrowDon't lose custom message%0D%0A%0D%0A%0D%0AmI/9MI˙˙˙˙Áš0´2@ reviewType checkSize descriptionżĆ œó XR Yˆ˙˙˙˙]ˆ˙˙˙˙=]T]‚]‚]‚]‚]‚]‚] ‚] ‚] ZY= ] =]=]ZY=] =]=]\`Y=] ;5]=]\`\]\`\]\WQˆ˙˙˙˙=ŁVZY=]=] ;5]C];5 ]!\`Y= ] =]=]ZY=] =]="]\`Y=] ;5#]=]\`\]\`Y=]=] ;5$]C];5 ]!\`\ ¸% äV5ä:6Q;&5' ¸( ä=)ä:@TVZY=*] =+];5,]\`\ ¸% äV5ä:6Q;& ¸- ä:Q9.â.äVä:WQ;& ¸/ ä:QV•ÎÔČĘ˜€Rsʘ€R‘Ę˜€R°Ę˜€RÖʘ€Röʘ€Sʘ€S ʘ€S›”•ĘĘĘ”•ĘĘĎ•ĘĎĺ˜€SąĎ•ˆ“”•ĘĘĎ–Ԑ•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€SЕʐʐϐ–ݐŇÝ•ˆ“”•ĘĘÝŇ˜€Sçˆѐˆ֐ˆѐˆŒ reviewTypeAPP isApproval checkSize initialize updateDocs updateServersaddsbrwsfindSelectedIndexidlecommitviewtype align_fill alignment align_rowalign_childrenpopupfilsitem_idbutton AnnotsString IDS_BROWSEnameelements description SharedReview static_text)IDS_SHARED_REVIEW_SERVER_SELECT_STEP_TEXT wrap_nameCollab wizardWidthwidthsrvr*IDS_SHARED_REVIEW_SERVER_SELECT_ADD_BUTTON-IDS_SHARED_REVIEW_SERVER_SELECT_DOCUMENT_TEXTconcatapp viewerTypematch Exchange-Pro check_boxenbl'IDS_SHARED_REVIEW_OPTIONS_READER_ENABLE beginPrivANTrustPropagateAllendPriv˙˙˙˙ÁŐš2dialogtoLoadkÇ ,É _RA55 A5=6QA ¸ äTä:QT ¸ ä=ä:QY\WQA5=cA5; 5 ¸ ä= ä:@6QA ¸ äTä:QA55VA556QT ¸ äVä:QˆĚ•ˆѐˆѐˆՐʐĚ•ˆ–ăˆѐË•ˆԐˆӈdatadocPath updateDocsfocusbrws reviewType SharedReviewcanReaderEnableapp viewerTypematch Exchange-Pro updateServersenbl readerEnableload˙˙˙˙ÁešMdocsfils didSelectidocselectHÉ aĚ sR ; ¸ ä:Q;5WQ; ¸ ä:QY\WQBWQVKŻmMWQVV7WQV5 EQV5 V5A55WQA5 = EQA5 = DQV5 *VV5 ??VV ?×˙8QV CWQăL˙˙˙SNV EQA552VA55 ¸ ä ä:>7VŮ?8QA5 ¸ äYV]\ä:QˆѐΐˆѐĘ•5€˛ËËˆψÉ•ŘäˆBÉ•ˆ ŐА •ˆΘ€R‹ˆŐ•ˆ퐐ˆáˆapp beginPriv activeDocsendPrivexternalisInProtectedViewpathdatadocPath reviewTypeEBRAPPisInCollectiondocumentFileNamematchlengthdialogloadfils[^\/]*$I˛˙˙˙˙Á š Iserverssrvr didSelectidxbServerDefaultiserver currIndex€Ě ŕÎ ‘R; ¸ ä:Q;5WQ; ¸ ä:QY\WQBWQ?WQBWQVKUmMWQVV7WQV# ?WQWQV5 V"WQ CWQVV5V8QăL˙˙˙­NV EQVŮ>(V>7WQVV5VV57"8QA5 ¸ äYV] \ä:QˆѐΐˆѐĘ•••5XːËĎˆÉ •ˆˆ ͐ˆ •ˆِˆÔ•Éˆˈϐˆáˆapp beginPrivCollab reviewServersendPrivDefaultUIlengthdialogloadsrvrSX˙˙˙˙ÁžšF2dialogwizserverconfignameöÎ Ô °R 9âäY;5];5]ZY‚];5];5 ]C] \`Y‚];5 ];5 ]C] \`\] \ä:WQ9âäVä>ä×˙äA5ä:QA55=źA555WQA555WQA555WQ; ¸ ä:Q; ¸ äV5äVäVä:Q; ¸ äV5äVäA55ä:Q; ¸ ä:QA ¸ ä:QĐĎĎ”•ĘĎĎË•ĘĎĎÚ˜€RƈߐŃ•ÔÔÔˆѐˆ␈ꐈѐˆ͈CBTrustPropagateWiz AnnotsString'IDS_SHARED_REVIEW_ADD_SERVER_WIZ_FINISH finishString"IDS_SHARED_REVIEW_ADD_SERVER_TITLEtitlecreator1IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_HEADINGheading/IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_TITLEnoSteps/IDS_SHARED_REVIEW_CONFIGURE_SERVER_STEP_HEADING-IDS_SHARED_REVIEW_CONFIGURE_SERVER_STEP_TITLEstepsCBRunSimpleWizdataresultfnshtoAddserverconfignameapp beginPrivCollabaddReviewServer driverURLsetDefaultReviewServer reviewTypeendPriv updateServers˙˙˙˙ÁšdataĐ IĐ ¸R9âäTä:ˆ!ӈ7)CBSharedReviewSelectServerTypeDescription˙˙˙˙ÁšdataAŃ †Ń žR9âäTä:ˆ!ӈ:,CBSharedReviewConfigureServerStepDescription˙˙˙˙Á2šM)dialogp fileChoosen-Ô =× ÖR; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVřV5=J; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:Q V5 WQV ¸ ä ä: E; ¸ ä:Q; ¸ ä;5 ä:Q; ¸ ä:QA5 V5 6 QA5 V56QA ¸ ä:QˆѐԐˆѐ •ÎE•ˆѐˆ ܐˆ ѐˆ —Ěˆ Ő•ˆ ѐˆ ܐˆ ѐˆ’ˆ ԐˆԐˆ ͈app beginPriv browseForDocendPrivcFSCSPalert AnnotsString/IDS_WORKFLOW_ERROR_DUETO_BROWSE_SHAREPOINT_FILEcPathmatch#IDS_NON_PDF_FILE_CHOOSEN_FOR_REVIEWdatadocPathdocFS updateDocs\.pdf$˙˙˙˙ÁPšidoi`× ö× öRA5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙Áoš dialogbResult Ř ëŘ SA ¸ ä=ä:>WQˆ˙˙˙˙=&VEQA ¸ ä=ä:>WQA5 ¸ äYV]\ä:QŘĎ•ˆᐐˆáˆ$findSelectedIndexfils SharedReviewsrvrdialogenablenext˙˙˙˙Á*šO[dialognextdocsimaxPDFCommentsSizeresult msgboxtitlepropsserverssrvrŮ ďě S; ¸ ä:Q;5WQ; ¸ ä:QA ¸ ä=ä:WQV>EQVVŮA5VV75 6QT…A55 Ĺ= DEQA55 D3QA55 E"QA55 5 A55ĎA55 EQA55 5 +A55 ¸ äCä:QA5@6 Q; ¸ ä:QA5; ¸ äYA55]A55]C]C]\ä:6 Q; ¸ ä:QA5C6QA55 ; ¸ ä:Q;5WQ; ¸ ä:QA5E"QA55 5XXV; ¸ ä:Q; ¸ ä;5 ¸ ä äVä:ä×ä×ä:WQ; ¸ ä:QV×9âä=ä:Q; ¸ äA55 äCä:E0QA55 5 ¸ äA55 äBä: r; ¸ ä:Q; ¸ äA5 ;5!;5"ä:Q; ¸ ä:Q9âä=#ä:Q; ¸$ äA55 äBä:D4QA5%=&E"Q; ¸' äA55 ä:r; ¸ ä:Q; ¸ äA5 ;5(;5)ä:Q; ¸ ä:Q9âä=*ä:QA5 E)QA55 @EQA55 5+¤; ¸ ä:Q;5,=-;5.;5/WQ; ¸ äYV]0;51]2×]3\ä:Q; ¸ ä:Q9âä=4ä:QA55 ¸5 ä;657ä;658ä:;659D=QA55 ¸5 ä;657ä;65:ä:;659r; ¸ ä:Q; ¸ äA5 ;5;;5<ä:Q; ¸ ä:Q9âä==ä:QA55 ¸5 ä;65>ä;65?ä:;659X; ¸ ä:Q; ¸ ä;5@ä:Q; ¸ ä:Q9âä=Aä:QA55 5BX; ¸ ä:Q; ¸ ä;5Cä:Q; ¸ ä:Q9âä=Aä:QA5%=D+T ¸E ä:WQA5V5G6FQQA55 EQA55 5 +A55 ¸ äCä:QA5@6 Q; ¸ ä:Q;5HWQ; ¸ ä:QA ¸ ä=Iä:WQV>EQVVŮ~VV7WQA5V6JQV5K V; ¸ ä:Q; ¸L äV5MäV5NäA55%ä:Q; ¸ ä:QˆѐΐˆѐÖ×•ˆؐ€€•ˆ؈'˙•á•ˆِˆ͐ˆѐˆ˙Аˆѐˆ͐Ë•ˆѐΐˆѐč•ˆѐúˆѐ•ˆ՘€S;äˆ6ꕐˆѐˆÓ㐈ѐˆ՘€SD˙Ó•ˆѐˆÓ㐈ѐˆ՘€SOˆ đ•ˆѐĐ␈öˆѐˆ՘€SZý÷•ˆѐˆÓ㐈ѐˆ՘€Sg÷•ˆѐˆܐˆѐˆ՘€SpĐ•ˆѐˆܐˆѐˆ՘€S{Ě•Ňˆ٘€S‚ᕐˆِˆ͐ˆѐΐˆѐÖ×•ËˆϐˆÉ•ˆѐˆшapp beginPriv activeDocsendPrivfindSelectedIndexfilslengthdatadocPathpathdoc undefinedhiddencloseDocopenDocdocFScFScPathbHiddenbUseConv msgChangedCollabmaxPDFCommentsSize checkSizefilesizealert AnnotsString IDS_SEND_FOR_REVIEW_DOC_IS_LARGEreplace DebugThrowBig doc isEmailReview isApproval IDS_CANT_APPROVE_LAX_EMAIL_MATCHIDS_CANT_REVIEW_LAX_EMAIL_MATCHLax review matchisOnlineReview reviewTypeBBRisOfflineReviewIDS_CANT_APPROVE_ALREADY_BBRIDS_CANT_REVIEW_ALREADY_BBROn-line review matchdynamicXFAForm viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATcTitleIDS_DYNAMIC_DOC_COMMENTS_MSG1cMsgnIconDynamic documentrequestPermission permissionannot canExportgrantedcreateIDS_CANT_APPROVE_WITH_NO_PERMSIDS_CANT_REVIEW_WITH_NO_PERMSNo permsdocumentfullSaveIDS_CANT_WORKFLOW_WITH_NO_SAVECannot full saveisInCollectionIDS_PDF_PACKAGE_SEND_FOR_REVIEW SharedReviewstore readerEnableenbl reviewServerssrvrserverDefaultsetDefaultReviewServerURLUI%mb%˙˙˙˙ÁŽš+ž9getDateControlOrder descriptionÉó  îS ‚WQY‚]‚]‚]‚]‚]‚]‚]ZY=]= ] ZY= ]; 5 ]=]\`Y=]; 5]=]C]\`Y=]C]YZ×`YZ\]\`\]\]=]= ] \`Y=]; 5]=]C]\`Y=]C]YZ×`YZ\]\`\]\]=]= ] \`Y=]= ] =]ZY=]= ]; 5!]\`Y=]Ôä:>7]Ôä:>7=" ×(×]#\`Y=]; 5$]\`Y=]Ôä:?7]Ôä:?7=" ×(×]#\`Y=]; 5$]\`Y=]Ôä:×7]Ôä:×7=" ×(×]#\`\]%\`\]%\`\]&\WQ;' ¸( ä:Q9)â)äVä:WQ;' ¸* ä:QVÉ˜€S€T•Ę˜€T2ʘ€TCʘ€THʘ€T^ʘ€T~ʘ€T™Ę˜€T䔕ʐʐ”•ĘĎĎ•ĘĎĘË•Ę–ďĘĎ•ĘĎĘË•Ę–ďĘĎ•ĘĘĘ”•ĘĘÔ•ĘĎĐؐ•ĘÔ•ĘĎĐؐ•ĘÔ•ĘĐŃů˜€U2ˆѐˆ֐ˆѐˆŒ initialize splitAddrs joinAddrs updateAddrsidleaddrcommitviewtype align_fill alignmentbutton AnnotsStringIDS_INVITE_ADDRESS_BOOKnameitem_id static_textIDS_INVITE_REQUIREDdialogfontbold edit_text multilineedit_text_heightprodheightreqRIDS_INVITE_OPTIONALoptR align_rowalign_children check_boxdead"IDS_SHARED_REVIEW_OPTIONS_DEADLINEyearwidth IDS_DATE_SEPelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙getDateControlOrderœš ňó áő đS; ¸ ä=ä=ä: ¸ ä ä=ä: ¸ ä ä=ä: ¸ ä ä=ä: ¸ ä ä=ä: ¸ ä=ä: ¸ ä‚ä:ˆ ä××××ŃĘ˜€S˙ˆapp getStringFormsIDS_DEFAULT_DATE_FORMATreplacemdysplitmap˙˙˙˙Á*švő Ôő řSY=]=]=]\T7ˆ•ĘĘËyearydmoymddomdm+d+y+[^ymd]˙˙˙˙Ášq=dialogtoLoad ö îů TA55 A5Z\6Q)A5A ¸ äA55ä:6QA55 A5Z\6Q)A5A ¸ äA55ä:6QA ¸ äTäCä:Q; ¸ ä:QA55 A5;5 6Q; ¸ ä:QY\WQT ¸ ä= ä:QT ¸ äY;5] \ä:QA55=V;56QA55ŠVA556QV=A55 ¸ ä:?6QV=A55 ¸ ä:6QV=A55 ¸ ä:6QT ¸ äVä:QˆĚ•ˆ֐ˆ䐐ˆĚ•ˆ֐ˆ䐐ˆӐˆѐˆĚ•ˆ֐ˆѐĘˆՐˆ吐Ń•ˆӐË•ˆԐˆ琈合吐ˆӈdatareqR splitAddrsoptR updateAddrsapp beginPrivraddridentityemailendPrivfocusaddrenableaddressBookAvailabledistributionMethodMANUALnext AnnotsString IDS_FINISH hasDeadlinedeaddmoy oDeadlinegetMonthddomgetDateyear getFullYearload˙˙˙˙ÁšaddrsaddrVec resultVecjiaddr ú ;ű 2T T ¸ ä ä:WQZ\WQ>WQVKHmMWQVV7 ¸ ä ä=ä:WQVVV# ?WQV8QăL˙˙˙şNVŘÉ•5Kːâ •ˆܐˆŒsplitreplace$1 \;|\n|\r\n|\r^\s*(\S(?:.*\S)?)\s*$0K˙˙˙˙ÁšaddrsVű ‡ű CTT ¸ ä=ä:ˆՈjoin ˙˙˙˙Ášš#dialogdataInp¤ű yý HTTaYA ¸ äA55ä:]A ¸ äA55ä:]\WQT ¸ äVä:QYT ¸ ä:WQA5A ¸ äV5ä:6QA5A ¸ äV5ä:6Q\••ÝâˆؐŇˆᐈáˆ) joinAddrsdatareqRoptRloadstore splitAddrs˙˙˙˙Á šJdialogpropstoEnablesdommoyyearnowisValidý ű ^TT ¸ ä:WQY\WQA ¸ äV5ä:WQA55=VC6QVVŮ>6QVV5 6QVV5 6 QVV5 6 QV5 ä9 â äV5ä× ä:WQ9 â äV5 ä× ä:WQ9 â äV5 ä× ä:WQ; äRWQ?VE QV× WQV?VE QV×WQV(VV ¸ ä:E QVX—WQVV5E QV6QT ¸ äVä:QŇĘŮŃ•ˆϐˆ ӐˆѐˆѐˆѐČ•ŢŢŢÎŐ Ր 㐈ڐˆӈstore splitAddrsreqRdatadistributionMethodMANUALnextlengthddomdeaddmoyyearparseIntDate getFullYearenable˙˙˙˙Á!š6dialogaddrs joinedReqR joinedOptR ™ ~T A ¸ äTäBä:QVQ†A55 ¸ ä=ä:WQA55 ¸ ä=ä:WQ; ¸ ä:Q; ¸ äYV] V] C] B] \ä:WQ; ¸ ä:QĆvWQÇVTA5A ¸ äV>7ä:6QA5A ¸ äV?7ä:6QA ¸ äTäCä:QˆӐ”‘ŕŕˆѐˆ÷ˆŃx•Ę€{ž€T‘ •ˆސˆސˆӈ updateAddrsdatareqRjoin;optRapp beginPriv mailGetAddrscTocCcbCcbBccendPriv splitAddrs˙˙˙˙ež˙˙˙˙ÁXš1Č }dialognextpropsdommoyyeardriver sourceURLoURLsą Q ™TTTT ¸ ä:WQA ¸ äTäBä:QT ¸ ä:WQA5V56QV5ů9âäV5ä× ä:WQ9âäV5ä× ä:WQ9âäV5ä× ä:WQA5; äR6 QA55 ¸ äVä:QA55 ¸ äV?ä:QA55 ¸ äVä:QA5; ¸ äX€äA55 ä:6QA5;6 QA55A5557WQ; ¸ ä:QV ¸ ä=äA555ä:WQ; ¸ ä:Q; ¸ äVä:WQA55x=y=yc=y^zYA5;!5"6 QA5A55 ¸# ä äA55$ä:6 QYTA5;!5%6 QA5A55 ¸# ä äA55&ä:6 QA5B6'QA55 WQV ¸# ä äV5(ä:WQA55 Ĺ=QV ¸# ä ä;!5)ä:WQV ¸# ä äA55ä:WQ#V ¸# ä ä=*ä:WQA55+PV ¸# ä ä;!5,ä:WQV ¸# ä ä;!5-ä:WQFV ¸# ä ä;!5.ä:WQV ¸# ä  ä=*ä:WQA5V6 QA5A550 ¸# ä  äA55&ä:6/Q •ŇˆӐŇˆԐČ€ô•ŢŢŢˆ֐ˆېˆݐˆېˆńˆ ѐŕˆѐ鐈ѐŘË`€Ç‘m €Tžm €TÂmʘ€Tšˆ֐ˆôP•P•ˆ֐ˆôP•ˆ͐ĎˆᐐˆŇL•ˆ㐈鐐ˆ ސËK•ˆ㐈萐ˆ㐈ސˆϐˆôˆVstore updateAddrsdata hasDeadlinedeadparseIntddomdmoyyear oDeadlineDate setFullYearsetMonthsetDate cDeadlineutilprintd undefineddriversserverURLapp beginPrivgetInitiatorSourcetestSettingsendPrivcrackURLdistributionMethodUPLOADMANUALEMAILmsg AnnotsString+IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAILreplacedistributionURL/IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL cDocumentName msgChangedcHost!IDS_SHARED_REVIEW_INVITE_DEADLINE readerEnableIDS_SHARED_REVIEW_INVITE_READERIDS_SHARED_REVIEW_GET_READER"IDS_SHARED_REVIEW_INVITE_NO_READERsubj cannedSubj %review_url% %review_name% %server_name%%deadline_msg% %cDeadline%%deadline_msg%%client_requirement_msg%%get_reader_text%%client_requirement_msg%%get_reader_text% %docname%˙˙˙˙ÁSšV descriptionP ˇ 8U Y‚]‚]‚]‚]Y;5]=]X] ZY= ] ZY= ] ;5 ]X†] C]\`Y=] ;5]=]\`Y=] ;5];5]\`\]\`\]\]\WQ; ¸ ä:Q9âäVä:WQ; ¸ ä:QV•Ę˜€U@ʘ€UFʘ€UJʘ€UQ•ĎĘČ”•Ę”•ĘĎČË•ĘĎĎ•ĘĎđ˜€Usˆѐˆ֐ˆѐˆŒ initializeidlecommitagul AnnotsString,IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE_LINKname align_leftalign_childrenwidthgrouptype static_text'IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE wrap_name link_textitem_id ok_cancel"IDS_SHARED_REVIEW_DOC_CENTER_AGREEok_name$IDS_SHARED_REVIEW_DOC_CENTER_DECLINE cancel_nameelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙ÁšdialogŠ ž IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_ACROBAT launchURL˙˙˙˙ÁYš:0 H reviewType descriptionă †Z zUYT]‚]‚]‚]‚]‚]‚]‚]‚]‚] ZY= ] ; 5 ]; 5]=]=]ZY=] =]XP]×I]\`Y= ] ; 5]=]=]ZY=] ×]\`Y= ] =]ZY=] × ]\`Y=] ;5]C] Xć]=!]"=#]$\`Y=] ×]\`Y=] =%]Xć]Xć]\`\]&\`Y=] ×]\`Y= ] =]ZY= ] ZY= ] =]ZY=] × ]\`Y=] ;5']C]"=#]$\`Y=(] =];5)]\`\]&\`\]&\`Y=] ×]\`Y= ] ZY= ] =]Z Y=] ;5*]C]"=#]$\`Y=] ;5+]\`Y=,] =]Xú]\`Y=] ;5-]\`Y=,] =]Xú]C].\`Y=/] ;50]=]\`Y=(] ;51]=]\`Y=] Xú];52]C] =3]=]\`Y=(] ;54]= ]\`\]&\`\]&\`\]&\`\]&\`\]&\`\]5\WQ;6 ¸7 ä:Q98â8äVä:WQ;6 ¸9 ä:QV•ČĘ˜€UÔʘ€Uíʘ€V°Ę˜€VśĘ˜€V˝Ę˜€VĹʘ€VĎʘ€VŐʘ€Vޔ•ĘĎĎĘĘ”•ĘĘČĚ•ĘĎĘĘ”•ĘĚ•ĘĘ”•ĘĚ•ĘĎ–Ȑʐϐ•ĘĚ•ĘĘČŘ˜€W•ĘĚ•ĘĘ”•Ę”•ĘĘ”•ĘĚ•ĘĎ–ϐ•ĘĘę˜€W=•ĘĚ•Ę”•ĘĘ”•ĘĎ–ϐ•ĘÔ•ĘĘÍ•ĘÔ•ĘĘČË•ĘĎĎ•ĘĎĎ•ĘČĎ–ʐϐ•ĘĎ˙Ҙ€W‡ˆѐˆ֐ˆѐˆŒ reviewType initializeidlecommitcrIDuserpswdrmbrfrgtresdviewtypeCollab wizardWidthwidth wizardHeightheight align_leftalign_children align_fill alignmentimagebannitem_idwizardMarginWidth margin_width align_topgap static_text AnnotsString%IDS_ACROBAT_DOT_COM_MARKETING_MESSAGEname wrap_nametruebolddialogfontprvwelements#IDS_SHARED_REVIEW_DOC_CENTER_SIGNUP link_text+IDS_SHARED_REVIEW_DOC_CENTER_CREATE_ADOBEID'IDS_SHARED_REVIEW_DOC_CENTER_ALREADY_ID%IDS_SHARED_REVIEW_DOC_CENTER_ADOBE_ID edit_text%IDS_SHARED_REVIEW_DOC_CENTER_PASSWORDpassword check_box.IDS_SHARED_REVIEW_DOC_CENTER_CHECK_PASSWORD_ME,IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD3IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIREDstat)IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_RESEND descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áš(ŘMdialognexttoEnabletoLoadtoShowshareIdentityEmail identityEmailC j$ U A5B6QYB]\WQY\WQY\WQVA55=6QA55Ĺ=A5C6QA55Ĺ=UA55E/QA55 Ĺ=EQA55 = A5= 6 QA55 Ĺ=DQA55 = ś; ¸ ä:Q;5WQ;5WQ; ¸ ä:QV;EQV= A5V6 QGV;EQV= A5V6 QA5= 6 QA55 Ĺ=A5= 6 QA55Ĺ=VA556QVA55 6 QVA55 6 QV; ¸ ä=ä:6QV; ¸ ä=ä:6QV;56QVB6QT ¸ ä=ä:QA55 ;\VA55 6QVC6QA55 ;5!VC6"QVB6"QVB6QVB6"QA55=#VB6QT ¸$ ä= ä:QT ¸% äVä:QT ¸& äVä:QT ¸' äVä:Qˆ͐•ËĘĘˆڐˆŇ•ˆ͐ˆŇ•Ńˆ%镈ѐˆ 镐ˆѐΐΐˆѐŘ•ˆ ԐŘ•ˆ ԐˆѐˆŇ•ˆѐˆŇ•ˆԐˆԐˆԐˆߐˆߐˆӐˆʐˆՐŃW•ˆԐˆʐÖ•ˆϐˆϐˆʐˆʘ€UÉŃ•ˆʐˆՐˆӐˆӐˆӈdatasignupnextprev reviewTypeDocCenterLoginrememberPassword undefined isFirstLaunchuserpswd******app beginPriv shareIdentityEmailidentityemailendPrivrmbrbannCollabgetIcon%A_AcrobatcomBrandingBanner_592x73.pngprvw!A_Acrobatcom_SignIn_230x230_N.png AnnotsString"IDS_SHARED_REVIEW_DOC_CENTER_LOGINhelpsetForeColorRedstat authStatus3IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIREDresd ShareFilefocusloadenablevisible˙˙˙˙Áš6dialogousernamepasswordtoEnabletoLoad€$ b' ÔU T ¸ ä:WQV5WQV5WQY\WQA55=VB6QV;ECQV=E4QV@E)QV;EQV=E QV@VC6 QVB6 QT ¸ äVä:QY\WQV; 5 6 QT ¸ äVä:QŇĚĚĘŃ•ˆʐéă•ˆϐˆʐˆӐĘˆӐˆӈstoreuserpswddata reviewTypeFormDistributionprev undefinednextenable AnnotsString"IDS_SHARED_REVIEW_DOC_CENTER_LOGINload˙˙˙˙Á šD8dialognextoaddStringToPayloadParams connectCalleddriverswConndescresult acceptResultz' łD íUTEQA55C  ôT ¸ ä:WQA5V56QA5V56QA5V56QT ¸ äYB]\ä:QT ¸ ä= ä:QT ¸ äY= ] \ä:QT ¸ äYC] \ä:QT ¸ äY;5] \ä:QT ¸ äYB]\ä:QA55=DQA55=Y\WQV=6Q†BWQ9âäA55ä:WQ9âä=A55ä:Q@WQ; ¸ ä:QA55Ĺ;ZA55EQA55=3; ¸ äYB] V]!\ä:WQCWQV X; ¸ äYA55]"A55]#A55]$V]!\ä:WQ; ¸% ä:QVŒA5V6&Q; ¸ ä:Q; ¸ äA55'ä:"; ¸( äA55'ä:Q;)A556*Q;)V ¸, ä:6+Q;)C6-Q; ¸% ä:QT ¸ äY= ] \ä:QT ¸ äYC] \ä:QA55=DQA55=JV=/6.Q; ¸ ä:Q; ¸0 äVä:Q; ¸% ä:Q91â1ä=2ä:Q9âä=3ä:QĄA55=DQA55=JV=46.Q; ¸ ä:Q; ¸0 äVä:Q; ¸% ä:Q9âä=5ä:Q96â6ä=7ä:QT ¸ äYC]\ä:Q3ĆvWQA55=DQA55=JV=46.Q; ¸ ä:Q; ¸0 äVä:Q; ¸% ä:QT ¸ äYC]\ä:Q98â8äVä:QT ¸ ä= ä:QV59X“DQV59X‘`T ¸ äY;5:] \ä:QT ¸ äYC] \ä:Q96â6ä=7ä:QěV59X’Â9;â;ä:WQ; ¸ ä:Q; ¸< äVä:WQ; ¸% ä:QV== ; ¸ ä:Q; ¸> äA55äA55ä:WQ; ¸% ä:QV>Z†9âäA55ä:WQ; ¸ ä:Q; ¸ äYA55]"A55]#A55]$V]!\ä:WQ; ¸% ä:QVKA5V6&Q; ¸ ä:Q; ¸ äA55'ä:"; ¸( äA55'ä:Q;)A556*Q;)V ¸, ä:6+Q;)C6-Q; ¸% ä:QA55=DQA55=JV=/6.Q; ¸ ä:Q; ¸0 äVä:Q; ¸% ä:Q91â1ä=2ä:Q9âä=3ä:QnĆvW QT ¸ äY;5:] \ä:QT ¸ äYC] \ä:Q96â6ä=7ä:QÇ[T ¸ äY;5:] \ä:QT ¸ äYC] \ä:Q96â6ä=?ä:Q[T ¸ äY;5:] \ä:QT ¸ äYC] \ä:Q96â6ä=@ä:QV59X•|T ¸ äY;5A] \ä:QT ¸ äYC]\ä:QT ¸ äYC] \ä:Q96â6ä=Bä:Q–V59>DQV59X`T ¸ äY;5C] \ä:QT ¸ äYC] \ä:Q96â6ä=7ä:Q96â6ä=7ä:QǐÉˆÎ•ŇˆԐˆԐˆԐˆܐˆՐˆŕˆܐˆ合ܐ蕐ʐˆ ΐ‘•Ţˆᐕˆѐˆ Ň•â•ˆ鐈•ˆ •ˆ˙Ԑˆѐ€‡•ˆϐˆѐÜ•ˆݐˆ֐ˆِˆ̐ˆѐˆŕˆܐ蕐ˆΐˆѐˆՐˆѐˆՐˆژ€V2č•ˆΐˆѐˆՐˆѐˆՐˆՐˆÜx•Ęč•ˆ ΐˆѐˆ Րˆ ѐˆܐˆӐˆՐŢ[•ˆ合ܐˆڐĚ€˝•ŇˆѐؐˆѐÉ€•ˆѐ쐈ѐ€U•‘Ţˆ ѐ˙Ԑˆ ѐ •ˆ ϐˆ ѐÜ•ˆ ݐˆ ֐ˆ ِˆ ̐ˆ ѐ蕐ˆΐˆѐˆՐˆѐˆ Րˆ Őx•Ęˆ 合 ܐˆ Հ{˘€VŒˆ 合 ܐˆ ژ€V“ˆ合ܐˆڐĚw•ˆ合ܐˆܐˆڐÜ[•ˆ合ܐˆڐˆՀ{–ˆdatasignupstoreuserpswdrememberPasswordrmbrenablenextsetForeColorRedstatloadvisible AnnotsString2IDS_SHARED_REVIEW_DOC_CENTER_STATUS_AUTHENTICATINGresd reviewType SharedReviewFormDistributionnameAuthentication_Successful getDriver DebugAlertCOMMIT: app beginPriv isFirstLaunch undefined******Collab swConnectbShowProgressMonitorcDriver cUsername cPassword bSaveCredendPrivswConnWTunsetFirstLaunch shareIdentityEmailFullName getFullName AuthenticatedvalTrueAVUMAddStringToPayloadWrapper DebugPrintln%Successfully connected to Acrobat.com.IWSharedReviewDocCenterLogin: Login successfulFalse.Login Failed. Please enter correct credentials DebugThrow!Login was unsuccessful, try again ANDumpObj errorCode7IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD%IWSharedReviewDocCenterServicesDialog execDialogok swAcceptTOUELogin was successful, but attempt to accept services agreement failed@Login was successful, but user did not accept services agreement3IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIRED6Login was successful, but need to verify email address2IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT˙˙˙˙ee^ßć˙˙˙˙Áš dialogÎD E °VA5C6QT ¸ ä:Qˆ͐ˆψdatasignupnext˙˙˙˙Á'š dialogo5E ĘE śVT ¸ ä:WQA5V56QŇˆԈstoredatauser˙˙˙˙ÁNšdialogoĺE ˛F ˝VT ¸ ä:WQA5V56Q9âä=A55=ä:QŇˆԐˆçˆ2storedatapswd DebugPrintln password:******˙˙˙˙Á?šdialogoĘF nG ĹVT ¸ ä:WQV5A5C6QA5B6QŇČ•ˆҐˆ͈#storermbrdatarememberPassword˙˙˙˙ÁJš dialogfrgt_url†G H ĎV;5=;5;5WQ; ¸ äVäCä:QĐ␈׈app viewerTypeReader AnnotsString7IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD_URL_READER8IDS_SHARED_REVIEW_DOC_CENTER_FORGOT_PASSWORD_URL_ACROBAT launchURL˙˙˙˙Áhš dialog verifyResult—H lI ŐV; ¸ ä:Q; ¸ äA55äA55ä:WQ; ¸ ä:Q9âä= Vä:Qˆѐ쐈ѐˆو?app beginPrivCollabswSendVerifyEmaildatauserpswdendPriv DebugPrinltn!Collab.swSendVerifyEmail: result:˙˙˙˙Á&šP descriptionňZ Ź_ W Y‚]‚]‚]‚]Y=]X]ZY=]ZY= ]; 5 ] X†]C] \`Y=]; 5] =]\`Y=]\`\]\`\]\]\WQ; ¸ ä:Q9âäVä:WQ; ¸ ä:QV•Ę˜€W—Ę˜€WĘ˜€WĄĘ˜€W¨•ĘČ”•Ę”•ĘĎČË•ĘĎĎ•ë˜€WLjѐˆ֐ˆѐˆŒ initializeidlecommitagul align_leftalign_childrenwidthgrouptype static_text AnnotsString-IDS_SHARED_REVIEW_DOC_CENTER_ELIGIBILTY_ERRORname wrap_name link_text8IDS_SHARED_REVIEW_DOC_CENTER_ELIGIBILTY_REQUIREMENT_LINKitem_idokelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Ášdialog,[ @[ “Wˆ˙˙˙˙ÁšdialogV[ ’[ —WˆŠ˙˙˙˙Ášdialog­[ Á[ Wˆ˙˙˙˙ÁJš dialogurlŮ[ î\ ĄW;5=;5;5WQ; ¸ äVäCä:QĐ␈׈app viewerTypeReader AnnotsStringJIDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_ELIGIBILTY_REQUIREMENT_READERKIDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_ELIGIBILTY_REQUIREMENT_ACROBAT launchURL˙˙˙˙IWSharedReviewDocCenterCreateID ą š Ng • reviewTypedisableddescresult_dialogvalidateAgeRequirementsvalidateBirthDay nameFields countriesmonths descriptionŰ_ ó ÎW‚Š˙˙˙˙Q‚Š˙˙˙˙Q; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVh9âä:WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q9âä=ä:QVQ9 â ä: ÍZY= ] ; 5 ]C]=]\`Y=] =]Xć]B]\`Y= ] ; 5]C]=]\`Y=] =]Xć]B]\`\ČZY= ] ; 5]C]=]\`Y=] =]Xć]B]\`Y= ] ; 5 ]C]=]\`Y=] =]Xć]B]\`\WQY\Š˙˙˙˙QY\Š˙˙˙˙QYT]‚]‚]‚]‚]‚]‚]‚] ‚ ]!‚ ]"ZY=#] ;5$];5%]&='](=)]*ZY=#] =+]*='](;5,]-ZY=#] =)]*ZY=.] ?]&\`Y= ] ; 5/]C]=0]×]&\`Y=.] ?]&\`\]1\`\]1\`Y=#] =+]*='](;5,]-ZY=#] =)]*Z Y= ] ; 52]C]=]\`Y=] =3]Xć]\`Y= ] ; 54]C]=]\`Y=] =5]Xć]C]\`Y= ] ; 56]C]=]\`Y=] =7]Xć]C]\`Y=#] =)]*V]1\`Y= ] ; 58]C]=]\`Y=#] =9]*ZY=:] =;]×<]\`Y=] =<]×<]\`Y=] ==]×<]\`\]1\`Y=#] =)]*ZY= ] ; 5>]C]=]\`Y=:] =]XŇ]B]?\`\]1\` \]1\`Y=.] ×]\`Y=#] =)]*ZY=#] =+]*ZY=@] =A]\`Y=#] =)]*ZY= ] XÜ]; 5B]C]C\`Y=D] ; 5E]= ]\`Y=D] ; 5F]=!]\`\]1\`\]1\`Y=.] × ]&\`Y=#] =+]*ZY=@] =]\`Y=#] =)]*ZY= ] XÜ]; 5G]C]C\`Y=D] ; 5F]="]\`\]1\`\]1\`Y=.] × ]&\`\]1\`\]1\`Y=#] =+]*='](;5,]-ZY=#] =)]*Xć]ZY=@] ; 5H]=I]\`\]1\`Y=.] ×]\`Y=#] =)]*ZY= ] Xć]; 5J]C]C=K]\`\]1\`\]1\`\]1\`\]L\W Q; ¸ ä:Q9MâMäV ä:W Q; ¸ ä:QV ˜€WéϘ€XϘ€WϘ€WՈѐԐˆѐ •ŇˆѐؐˆѐˆՐˆ’œ€W阀X˜€X0ˆĎ€Č•”•ĘĎ–ϐ•ĘĘČË•ĘĎ–ϐ•ĘĘČŃ˜€XN”•ĘĎ–ϐ•ĘĘČË•ĘĎ–ϐ•ĘĘČĐ˜€XiАА•ČĘ˜€YŞĘ˜€YąĘ˜€YŇʘ€Zʘ€Zʘ€[[ʘ€[aʘ€[gʘ€[n”•ĘĎĎĘĘ”•ĘĘĘĎ”•ĘĘ”•ĘË•ĘĎ–ʐ̐•Ęá˜€[™•ĘĘĘĎ”•ĘĘ”•ĘĎ–ϐ•ĘĘÍ•ĘĎ–ϐ•ĘĘČË•ĘĎ–ϐ•ĘĘČË•ĘĘÍ•ĘĎ–ϐ•ĘĘ”•ĘĘĚ•ĘĘĚ•ĘĘ×˜€[ë•ĘĘ”•ĘĎ–ϐ•ĘĘČá˜€\•ĘĚ•ĘĘ”•ĘĘ”•ĘĎ•ĘĘ”•ĘČĎË•ĘĎĎ•ĘĎĺ˜€\,•ĘĚ•ĘĘ”•ĘĎ•ĘĘ”•ĘČĎË•ĘĎĺ˜€\M•Ęâ˜€\U•ĘĘĘĎ”•ĘĘČ”•ĘĎÚ˜€\j•ĘĚ•ĘĘ”•ĘČĎ–ű˜€\ƒˆѐˆ֐ˆѐˆŒapp beginPrivCollabisDocCentreSignupDisabledendPriv-IWSharedReviewDocCenterEligibilityErrorDialog execDialog DebugThrow Invalid datahasHanko static_texttype AnnotsString'IDS_SHARED_REVIEW_DOC_CENTER_FIRST_NAMEnamebolddialogfont edit_textfNamitem_idwidthpassword&IDS_SHARED_REVIEW_DOC_CENTER_LAST_NAMElNam reviewType initializepolycntyidlegetSelectedItemTextcommitagulagplpoulview wizardWidth wizardHeightheight align_fill alignment align_leftalign_children align_topwizardMarginWidth margin_widthgap+IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLEheadingelements*IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_ADDRESSmail*IDS_SHARED_REVIEW_DOC_CENTER_PASSWORD_HINTpwd1-IDS_SHARED_REVIEW_DOC_CENTER_PASSWORD_CONFIRMpwd2%IDS_SHARED_REVIEW_DOC_CENTER_BIRTHDAY align_rowpopupbdmtbddybdyr$IDS_SHARED_REVIEW_DOC_CENTER_COUNTRY PopupEdit check_boxagre'IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE wrap_name link_text,IDS_SHARED_REVIEW_DOC_CENTER_READ_AGREE_LINK0IDS_SHARED_REVIEW_DOC_CENTER_PRIVACY_POLICY_LINK"IDS_SHARED_REVIEW_DOC_CENTER_PROMO.IDS_SHARED_REVIEW_DOC_CENTER_CHECK_PASSWORD_MErmbm*IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERICeror descriptionANTrustPropagateAll˙˙˙˙validateAgeRequirements­š* bMonthbDaybYearcDatecDaycMonthcYearác g éW ;äRWQV ¸ ä:WQV ¸ ä:WQV ¸ ä:WQV9âäTä:× BV9âäTä:× -VTBVTVTBCÎŇŇŇŮ•ˆ’Ů••ˆ’••ˆš€Wýˆ Š DategetDategetMonth getFullYearparseInt˙˙˙˙validateBirthDay\šS bMonthbDaybYearminYearcurrDatebDayDateˆg ßm XXlWQ9âäTä:D0Q9âäTä:DQ9âäTä:BTVBT>D QT× BT?D QT×BT×E0QT×D$QT×DQT×D QT× BT?OT×>EQT×d> DQTX>T×BT×B9âä:WQ;äTäTäTäRWQVVBC—˙ •ˆ ’•ˆ ’Ń•ˆ ’Ń•ˆ ’ö•ˆ š€X •Îˆ(Ř••ˆ—•ˆš€X'Ґڐ•ˆ ’ˆ Š isNaNDate˙˙˙˙Á š˙[dialogtoEnabletoLoadsel_onemon_onemonentrytoShowŹr ›§ oX ˆ˙˙˙˙;5>8Qˆ˙˙˙˙;5?8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5×8Qˆ˙˙˙˙;5 ×8Qˆ˙˙˙˙;5 × 8Qˆ˙˙˙˙;5 × 8Qˆ˙˙˙˙;5 × 8Qˆ˙˙˙˙;5 =8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5= 8Qˆ˙˙˙˙;5!="8Qˆ˙˙˙˙;5#=$8Qˆ˙˙˙˙;5%=&8Qˆ˙˙˙˙;5'=(8Qˆ˙˙˙˙;5)=*8Qˆ˙˙˙˙;5+=,8Qˆ˙˙˙˙;5-=.8Qˆ˙˙˙˙;5/=08Qˆ˙˙˙˙;51=28Qˆ˙˙˙˙;53=48Qˆ˙˙˙˙;55=68Qˆ˙˙˙˙;57=88Qˆ˙˙˙˙;59=:8Qˆ˙˙˙˙;5;=<8Qˆ˙˙˙˙;5==>8Qˆ˙˙˙˙;5?=@8Qˆ˙˙˙˙;5A=B8Qˆ˙˙˙˙;5C=D8Qˆ˙˙˙˙;5E=F8Qˆ˙˙˙˙;5G=H8Qˆ˙˙˙˙;5I=J8Qˆ˙˙˙˙;5K=L8Qˆ˙˙˙˙;5M=N8Qˆ˙˙˙˙;5O=P8Qˆ˙˙˙˙;5Q=R8Qˆ˙˙˙˙;5S=T8Qˆ˙˙˙˙;5U=V8Qˆ˙˙˙˙;5W=X8Qˆ˙˙˙˙;5Y=Z8Qˆ˙˙˙˙;5[=\8Qˆ˙˙˙˙;5]=^8Qˆ˙˙˙˙;5_=`8Qˆ˙˙˙˙;5a=b8Qˆ˙˙˙˙;5c=d8Qˆ˙˙˙˙;5e=f8Qˆ˙˙˙˙;5g=h8Qˆ˙˙˙˙;5i=j8Qˆ˙˙˙˙;5k=l8Qˆ˙˙˙˙;5m=n8Qˆ˙˙˙˙;5o=p8Qˆ˙˙˙˙;5q=r8Qˆ˙˙˙˙;5s=t8Qˆ˙˙˙˙;5u=v8Qˆ˙˙˙˙;5w=x8Qˆ˙˙˙˙;5y=z8Qˆ˙˙˙˙;5{=|8Qˆ˙˙˙˙;5}=~8Qˆ˙˙˙˙;5=€8Qˆ˙˙˙˙;5=‚8Qˆ˙˙˙˙;5ƒ=„8Qˆ˙˙˙˙;5…=†8Qˆ˙˙˙˙;5‡=ˆ8Qˆ˙˙˙˙;5‰=Š8Qˆ˙˙˙˙;5‹=Œ8Qˆ˙˙˙˙;5=Ž8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5‘=’8Qˆ˙˙˙˙;5“=”8Qˆ˙˙˙˙;5•=–8Qˆ˙˙˙˙;5—=˜8Qˆ˙˙˙˙;5™=š8Qˆ˙˙˙˙;5›=œ8Qˆ˙˙˙˙;5=ž8Qˆ˙˙˙˙;5Ÿ= 8Qˆ˙˙˙˙;5Ą=˘8Qˆ˙˙˙˙;5Ł=¤8Qˆ˙˙˙˙;5Ľ=Ś8Qˆ˙˙˙˙;5§=¨8Qˆ˙˙˙˙;5Š=Ş8Qˆ˙˙˙˙;5Ť=Ź8Qˆ˙˙˙˙;5­=Ž8Qˆ˙˙˙˙;5Ż=°8Qˆ˙˙˙˙;5ą=˛8Qˆ˙˙˙˙;5ł=´8Qˆ˙˙˙˙;5ľ=ś8Qˆ˙˙˙˙;5ˇ=¸8Qˆ˙˙˙˙;5š=ş8Qˆ˙˙˙˙;5ť=ź8Qˆ˙˙˙˙;5˝=ž8Qˆ˙˙˙˙;5ż=Ŕ8Qˆ˙˙˙˙;5Á=Â8Qˆ˙˙˙˙;5Ă=Ä8Qˆ˙˙˙˙;5Ĺ=Ć8Qˆ˙˙˙˙;5Ç=Č8Qˆ˙˙˙˙;5É=Ę8Qˆ˙˙˙˙;5Ë=Ě8Qˆ˙˙˙˙;5Í=Î8Qˆ˙˙˙˙;5Ď=Đ8Qˆ˙˙˙˙;5Ń=Ň8Qˆ˙˙˙˙;5Ó=Ô8Qˆ˙˙˙˙;5Ő=Ö8Qˆ˙˙˙˙;5×=Ř8Qˆ˙˙˙˙;5Ů=Ú8Qˆ˙˙˙˙;5Ű=Ü8Qˆ˙˙˙˙;5Ý=Ţ8Qˆ˙˙˙˙;5ß=ŕ8Qˆ˙˙˙˙;5á=â8Qˆ˙˙˙˙;5ă=ä8Qˆ˙˙˙˙;5ĺ=ć8Qˆ˙˙˙˙;5ç=č8Qˆ˙˙˙˙;5é=ę8Qˆ˙˙˙˙;5ë=ě8Qˆ˙˙˙˙;5í=î8Qˆ˙˙˙˙;5ď=đ8Qˆ˙˙˙˙;5ń=ň8Qˆ˙˙˙˙;5ó=ô8Qˆ˙˙˙˙;5ő=ö8Qˆ˙˙˙˙;5÷=ř8Qˆ˙˙˙˙;5ů=ú8Qˆ˙˙˙˙;5ű=ü8Qˆ˙˙˙˙;5ý=ţ8Qˆ˙˙˙˙;5˙=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5 = 8Qˆ˙˙˙˙;5 = 8Qˆ˙˙˙˙;5 =8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5= 8Qˆ˙˙˙˙;5!="8Qˆ˙˙˙˙;5#=$8Qˆ˙˙˙˙;5%=&8Qˆ˙˙˙˙;5'=(8Qˆ˙˙˙˙;5)=*8Qˆ˙˙˙˙;5+=,8Qˆ˙˙˙˙;5-=.8Qˆ˙˙˙˙;5/=08Qˆ˙˙˙˙;51=28Qˆ˙˙˙˙;53=48Qˆ˙˙˙˙;55=68Qˆ˙˙˙˙;57=88Qˆ˙˙˙˙;59=:8Qˆ˙˙˙˙;5;=<8Qˆ˙˙˙˙;5==>8Qˆ˙˙˙˙;5?=@8Qˆ˙˙˙˙;5A=B8Qˆ˙˙˙˙;5C=D8Qˆ˙˙˙˙;5E=F8Qˆ˙˙˙˙;5G=H8Qˆ˙˙˙˙;5I=J8Qˆ˙˙˙˙;5K=L8Qˆ˙˙˙˙;5M=N8Qˆ˙˙˙˙;5O=P8Qˆ˙˙˙˙;5Q=R8Qˆ˙˙˙˙;5S=T8Qˆ˙˙˙˙;5U=V8Qˆ˙˙˙˙;5W=X8Qˆ˙˙˙˙;5Y=Z8Qˆ˙˙˙˙;5[=\8Qˆ˙˙˙˙;5]=^8Qˆ˙˙˙˙;5_=`8Qˆ˙˙˙˙;5a=b8Qˆ˙˙˙˙;5c=d8Qˆ˙˙˙˙;5e=f8Qˆ˙˙˙˙;5g=h8Qˆ˙˙˙˙;5i=j8Qˆ˙˙˙˙;5k=l8Qˆ˙˙˙˙;5m=n8Qˆ˙˙˙˙;5o=p8Qˆ˙˙˙˙;5q=r8Qˆ˙˙˙˙;5s=t8Qˆ˙˙˙˙;5u=v8Qˆ˙˙˙˙;5w=x8Qˆ˙˙˙˙;5y=z8Qˆ˙˙˙˙;5{=|8Qˆ˙˙˙˙;5}=~8Qˆ˙˙˙˙;5=€8Qˆ˙˙˙˙;5=‚8Qˆ˙˙˙˙;5ƒ=„8Qˆ˙˙˙˙;5…=†8Qˆ˙˙˙˙;5‡=ˆ8Qˆ˙˙˙˙;5‰=Š8Qˆ˙˙˙˙;5‹=Œ8Qˆ˙˙˙˙;5=Ž8Qˆ˙˙˙˙;5=8Qˆ˙˙˙˙;5‘=’8Qˆ˙˙˙˙;5“=”8Qˆ˙˙˙˙;5•=–8Qˆ˙˙˙˙;5—=˜8Qˆ˙˙˙˙;5™=š8Qˆ˙˙˙˙;5›=œ8Qˆ˙˙˙˙;5=ž8Qˆ˙˙˙˙;5Ÿ= 8Qˆ˙˙˙˙;5Ą=˘8Qˆ˙˙˙˙;5Ł=¤8Qˆ˙˙˙˙;5Ľ=Ś8Qˆ˙˙˙˙;5§=¨8Qˆ˙˙˙˙;5Š=Ş8Qˆ˙˙˙˙;5Ť=Ź8Qˆ˙˙˙˙;5­=Ž8Qˆ˙˙˙˙;5Ż=°8Qˆ˙˙˙˙;5ą=˛8Qˆ˙˙˙˙;5ł=´8Qˆ˙˙˙˙;5ľ=ś8Qˆ˙˙˙˙;5ˇ=¸8Qˆ˙˙˙˙;5š=ş8Qˆ˙˙˙˙;5ť=ź8Qˆ˙˙˙˙;5˝=ž8Qˆ˙˙˙˙;5ż=Ŕ8Qˆ˙˙˙˙;5Á=Â8Qˆ˙˙˙˙;5Ă=Ä8Qˆ˙˙˙˙;5Ĺ=Ć8Qˆ˙˙˙˙;5Ç=Č8Qˆ˙˙˙˙;5É=Ę8Qˆ˙˙˙˙;5Ë=Ě8Qˆ˙˙˙˙;5Í=Î8Qˆ˙˙˙˙;5Ď=Đ8Qˆ˙˙˙˙;5Ń=Ň8Qˆ˙˙˙˙;5Ó=Ô8Qˆ˙˙˙˙;5Ő=Ö8Qˆ˙˙˙˙;5×=Ř8Qˆ˙˙˙˙;5Ů=Ú8Qˆ˙˙˙˙;5Ű=Ü8Qˆ˙˙˙˙;5Ý=Ţ8Qˆ˙˙˙˙;5ß=ŕ8Qˆ˙˙˙˙;5á=â8Qˆ˙˙˙˙;5ă=ä8Qˆ˙˙˙˙;5ĺ=ć8QYB]ç\WQYC]č;5é]ę;5ë]ě\WQA5íB6îQT ¸ď ä=đä:QY\WQV;5ń?8QT ¸ň äYV]đ\ä:QT ¸ň äYˆ˙˙˙˙]đ\ä:QT ¸ď ä=óä:QY\WQV;5ô× 8QT ¸ň äYV]ó\ä:Qˆ˙˙˙˙K>mMWQY\WQVVV8QT ¸ň äYV]ó\ä:QăL˙˙˙ÄNYB]őB]öA5í5÷=ř]ů\WQT ¸ú ä=űä:QT ¸ü äVä:QT ¸ý äVä:QT ¸ţ äVä:QA ¸đ äTä:Qˆ֐ˆ֐ˆאˆאˆאˆאˆאˆאˆאˆאˆאˆאˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐˆڐ•Ë•–ϐԐˆ͘€Y‚ˆՐĘˆАˆސˆ䘀YŽˆՐĘˆѐˆސË0Aːʐˆːˆ琐•––ېˆՐˆӐˆӐˆӐˆш AnnotsString0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JAN0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_FEB0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MAR0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_APR0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MAY0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JUN0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_JUL0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AUG0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_SEP0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_OCT0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_NOV0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DECIDS_AFAFIDS_ALALIDS_DZDZIDS_ASASIDS_ADADIDS_AOAOIDS_AIAIIDS_AQAQIDS_AGAGIDS_ARARIDS_AMAMIDS_AWAWIDS_AUAUIDS_ATATIDS_AZAZIDS_BSBSIDS_BHBHIDS_BDBDIDS_BBBBIDS_BYBYIDS_BEBEIDS_BZBZIDS_BJBJIDS_BMBMIDS_BTBTIDS_BOBOIDS_BABAIDS_BWBWIDS_BVBVIDS_BRBRIDS_IOIOIDS_VGVGIDS_BNBNIDS_BGBGIDS_BFBFIDS_BIBIIDS_KHKHIDS_CMCMIDS_CACAIDS_CVCVIDS_KYKYIDS_CFCFIDS_TDTDIDS_CLCLIDS_CNCNIDS_CXCXIDS_CCCCIDS_COCOIDS_KMKMIDS_CGCGIDS_CKCKIDS_CRCRIDS_HRHRIDS_CUCUIDS_CYCYIDS_CZCZIDS_CICIIDS_DKDKIDS_DJDJIDS_DMDMIDS_DODOIDS_ECECIDS_EGEGIDS_SVSVIDS_GQGQIDS_ERERIDS_EEEEIDS_ETETIDS_FKFKIDS_FOFOIDS_FJFJIDS_FIFIIDS_FRFRIDS_GFGFIDS_PFPFIDS_TFTFIDS_GAGAIDS_GMGMIDS_GEGEIDS_DEDEIDS_GHGHIDS_GIGIIDS_GRGRIDS_GLGLIDS_GDGDIDS_GPGPIDS_GUGUIDS_GTGTIDS_GNGNIDS_GWGWIDS_GYGYIDS_HTHTIDS_HMHMIDS_HNHNIDS_HKHKIDS_HUHUIDS_ISISIDS_ININIDS_IDIDIDS_IRIRIDS_IQIQIDS_IEIEIDS_ILILIDS_ITITIDS_JMJMIDS_JPJPIDS_JOJOIDS_KZKZIDS_KEKEIDS_KIKIIDS_KWKWIDS_KGKGIDS_LALAIDS_LVLVIDS_LBLBIDS_LSLSIDS_LRLRIDS_LYLYIDS_LILIIDS_LTLTIDS_LULUIDS_MOMOIDS_MKMKIDS_MGMGIDS_MWMWIDS_MYMYIDS_MVMVIDS_MLMLIDS_MTMTIDS_MHMHIDS_MQMQIDS_MRMRIDS_MUMUIDS_YTYTIDS_MXMXIDS_FMFMIDS_MDMDIDS_MCMCIDS_MNMNIDS_MSMSIDS_MAMAIDS_MZMZIDS_MMMMIDS_NANAIDS_NRNRIDS_NPNPIDS_NLNLIDS_ANANIDS_NCNCIDS_NZNZIDS_NINIIDS_NENEIDS_NGNGIDS_NUNUIDS_NFNFIDS_KPKPIDS_MPMPIDS_NWNOIDS_OMOMIDS_PKPKIDS_PWPWIDS_PAPAIDS_PGPGIDS_PYPYIDS_PEPEIDS_PHPHIDS_PNPNIDS_PLPLIDS_PTPTIDS_PRPRIDS_QAQAIDS_REREIDS_ROROIDS_RURUIDS_RWRWIDS_SHSHIDS_KNKNIDS_LCLCIDS_PMPMIDS_VCVCIDS_WSWSIDS_SMSMIDS_STSTIDS_SASAIDS_SNSNIDS_SCSCIDS_SLSLIDS_SGSGIDS_SKSKIDS_SISIIDS_SBSBIDS_SOSOIDS_ZAZAIDS_GSGSIDS_KRKRIDS_ESESIDS_LKLKIDS_SDSDIDS_SRSRIDS_SJSJIDS_SZSZIDS_SESEIDS_CHCHIDS_SYSYIDS_TWTWIDS_TJTJIDS_TZTZIDS_THTHIDS_CDCDIDS_TLTLIDS_TGTGIDS_TKTKIDS_TOTOIDS_TTTTIDS_TNTNIDS_TRTRIDS_TMTMIDS_TCTCIDS_TVTVIDS_VIVIIDS_UGUGIDS_UAUAIDS_AEAEIDS_GBGBIDS_USUSIDS_UMUMIDS_UYUYIDS_UZUZIDS_VUVUIDS_VAVAIDS_VEVEIDS_VNVNIDS_WFWFIDS_EHEHIDS_YEYEIDS_ZMZMIDS_ZWZWnextrmbm0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DAYbddy1IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_YEARbdyrdata weEnabledPolyremoveAllEntriesFromListcntyIDS_COUNTRY_SELECT_ONEinsertEntryInListbdmt2IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MONTHerorhelp reviewTypeDocCenterSignupprevfocusmailenableloadvisible>A˙˙˙˙Á>š dialogpoly´§ I¨ ŞYT ¸ ä:5WQVEQA55A5B6Q×Ô•ˆ͈storepolydata weEnabledPoly˙˙˙˙ÁĚš >dialogtoLoadselectedCountrypolyb¨ ઠąYY\WQA ¸ ä=ä:WQA5ˆ˙˙˙˙V76QT ¸ ä:5WQV;5.V VC6QA5C6Q1A55!VB6QA5B6QT ¸ äVä:QĘÖˆِ×Î)•••ˆʐˆҘ€YŐË•ˆʐˆҐˆӈgetSelectedItemTextcntydatastorepoly AnnotsStringIDS_US weEnabledPolyload˙˙˙˙Áľš~€dialogofNamlNamtoEnableöŞ Ľł ŇY T ¸ ä:WQA5V56QA5V56QA5V56QV5WQV ¸ ä;ä äRä=ä:WQV ¸ ä;ä äRä=ä:WQA5V6QV5 WQV ¸ ä;ä äRä=ä:WQV ¸ ä;ä äRä=ä:WQA5V6 QA5ˆ˙˙˙˙A ¸ ä= ä:76 QA5V5 6 QA5V5 6 QA5V56QA5ˆ˙˙˙˙A ¸ ä=ä:76QA5V56QA5V56QY\WQA55;EŒQA55=EuQA55@EbQA55;EKQA55=E4QA55@E!QA55;E QA55=EóQA55@EŕQA55;EÉQA55=E˛QA55@EŸQA55 ;EˆQA55 =EqQA55 @E^QA55 ;EGQA55 =E0QA55 @EQA55;EQA55@EóQA55ˆ˙˙˙˙;57EÍQA55;EśQA55=EŸQA55@EŒQA55;5EpQA55;EYQA55=EBQA55@E/QA55;5EQA55 CVC6QVB6QT ¸ äVä:QŇˆԐˆԐˆԐĚˆ鐈鐈ϐĚˆ鐈鐈ϐˆ萈ԐˆԐˆԐˆ萈ԐˆԐĘ˙’˙’˙’˙’˙’˙’˙ѐ˙ސ˙ސÍ•ˆϐˆʐˆӈstoredatamailpwd1pwd2fNamreplaceRegExplNamcntygetSelectedItemTextrmbmagrepolybdmtbddybdyr undefined AnnotsString2IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_MONTH0IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_DAY1IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_YEARnextenable^\s+\s+$^\s+\s+$˙˙˙˙ÁMšidoiĘł Y´ ZA5 ¸ ä:T7WQVKmMWQVV7> V˜N™ăL˙˙˙ăN=Ů5"ːÉ•ˆ|ːˆŽ dialogstore#"˙˙˙˙Á tš _#dialognextofNamlNamdescresult signupResultdriveraddStringToPayloadParams acceptResultswConnt´ Œç ZTpT ¸ äYB]\ä:QT ¸ äYB]\ä:QT ¸ ä:WQA5V56QA5V56QA5V56QV5 WQV ¸ ä; ä äRä= ä:WQV ¸ ä; ä äRä= ä:WQA5V6 QV5 WQV ¸ ä; ä äRä= ä:WQV ¸ ä; ä äRä= ä:WQA5V6 QA5ˆ˙˙˙˙A ¸ ä=ä:76QA5V56QA5V56QA5V56QA5ˆ˙˙˙˙A ¸ ä=ä:76QA5V56QA5V56QV5A5C6QA5B6Q9âäA55ä:BŒT ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5]\ä:QT ¸ äYC]\ä:Q9âä=ä:QA55Ů×DQA55Ů× ‘T ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5]\ä:QT ¸ äYC]\ä:Q9âä=ä:QéA55A55‘T ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5 ]\ä:QT ¸ äYC]\ä:Q9âä=ä:QAA55Ů×DQA55Ů× ‘T ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5]\ä:QT ¸ äYC]\ä:Q9âä=ä:Q„‰˙˙˙˙äA55äA55äA55ä:B‘T ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5!]\ä:QT ¸ äYC]\ä:Q9âä=ä:Qż‰˙˙˙˙äA55äA55äA55ä:B†9"â"ä:WQ;# ¸$ ä:Q;% ¸& ä:Q;# ¸' äVä:WQ;# ¸( ä:QT ¸) ä:Q9âä=ä:QVQ†A5A556*QA5A556+QT ¸ ä=ä:QT ¸ äY= ]\ä:QT ¸ äYC]\ä:QT ¸ äY;5,]\ä:Q;# ¸$ ä:Q;% ¸- äA55äA55+äA55 äA55 äA55äA55äBä:WQ;# ¸( ä:QŸĆvW QT ¸ äYC]\ä:QT ¸ ä=ä:QT ¸ äY;5.]\ä:QT ¸ äYC]\ä:Q9âä=/ä:QÇVXČ ˇ†90â0äA551ä:WQ;# ¸$ ä:Q;% ¸2 äYA55]3A55]4A55]5C]6V]7\ä:W Q;# ¸( ä:QV hA5V 68Q;# ¸$ ä:Q;9A556:Q;9V ¸< ä:6;Q;9C6=Q;# ¸( ä:QA551=>DQA551=?ľY\WQV=A6@QV=C6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:QV=E6@QV=C6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:Q9FâFä=Gä:Q¤A551=>DQA551=?bY\WQV=A6@QV=H6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:Q9âä=Iä:QT ¸ äYC]\ä:QíĆvW QA551=>DQA551=?bY\WQV=A6@QV=H6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:Q9JâJäV ä:QT ¸ äYC]\ä:QT ¸ ä=Kä:QV 5LX“DQV 5LX‘`T ¸ äY;5M]K\ä:QT ¸ äYC]K\ä:Q9âä=Iä:QŽV 5LX’d9NâNä:WQ;# ¸$ ä:Q;# ¸' äVä:WQ;# ¸( ä:QV=OŻ;# ¸$ ä:Q;% ¸P äA55*äA55+ä:WQ;# ¸( ä:QV>ü†90â0äA551ä:WQ;# ¸$ ä:Q;% ¸2 äYA55*]3A55+]4A55]5V]7\ä:W Q;# ¸( ä:QV cA5V 68Q;# ¸$ ä:Q;% ¸Q äA55Rä:";% ¸S äA55Rä:Q;9A55*6:Q;9V ¸< ä:6;Q;9C6=Q;# ¸( ä:QA551=>DQA551=?bY\WQV=E6@QV=C6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:Q9FâFä=Tä:Q9UâUä=Vä:QřĆvW QA551=>DQA551=?bY\WQV=E6@QV=H6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:QT ¸ äY;5M]K\ä:QT ¸ äYC]K\ä:Q9âä=Iä:QÇ[T ¸ äY;5M]K\ä:QT ¸ äYC]K\ä:Q9âä=Wä:Q[T ¸ äY;5M]K\ä:QT ¸ äYC]K\ä:Q9âä=Xä:QV 5LX•|T ¸ äY;5Y]K\ä:QT ¸ äYC]Z\ä:QT ¸ äYC]K\ä:Q9âä=[ä:Q–V 5L>DQV 5LX`T ¸ äY;5\]K\ä:QT ¸ äYC]K\ä:Q9âä=Iä:Q9âä=Iä:QÇaA551=>DQA551=?bY\WQV=A6@QV=H6BQ;# ¸$ ä:Q;% ¸D äVä:Q;# ¸( ä:QT ¸ äYC]\ä:QVX™DT ¸ ä=ä:QT ¸ äY;5]]\ä:Q?T ¸ ä=ä:QT ¸ äY;5.]\ä:QT ¸ äYC]\ä:Q9âä=^ä:Q •ˆܐˆܐŇˆԐˆԐˆԐĚˆ鐈鐈ϐĚˆ鐈鐈ϐˆ萈ԐˆԐˆԐˆ萈ԐˆԐČ•ˆҐˆ͘€Z:Ü•ˆܐˆՐˆ合ܐˆՐě€Œ•ˆܐˆՐˆ合ܐˆڐ×€Œ•ˆܐˆՐˆ合ܐˆڐě€Œ•ˆܐˆՐˆ合ܐˆڐô€Œ•ˆܐˆՐˆ合ܐˆژ€Zhô•Ňˆ ѐˆ ѐؐˆ ѐˆ ϐˆ Ր”‘ˆאˆאˆ Րˆ ŕˆܐˆ吐ˆѐˆِ̐̐̐̐̐ɐˆŃx•ĘˆܐˆՐˆ合ܐˆՀ{–€ ˛•‘Ţˆѐˆ˙ڐˆѐ€c•ˆϐˆѐˆ֐ˆِˆ̐ˆѐ蕐ʐˆΐˆΐˆѐˆՐˆѐˆΐˆΐˆѐˆՐˆѐˆڐč•ĘˆΐˆΐˆѐˆՐˆѐˆՐˆÜx•Ęč•ĘˆΐˆΐˆѐˆՐˆѐˆӐˆܐˆՐŢ[•ˆ合ܐˆڐĚ€_•ŇˆѐؐˆѐÉ€Ş•ˆ ѐ쐈 ѐ€÷•‘Ţˆ ѐ˙Ԑˆ ѐ •ˆ ϐˆ ѐÜ•ˆ ݐˆ ֐ˆ ِˆ ̐ˆ ѐ蕐ʐˆ"ΐˆ"ΐˆ"ѐˆ"Րˆ"ѐˆՐˆŐx•Ęč•Ęˆ!ΐˆ!ΐˆ!ѐˆ!Րˆ!ѐˆ 合 ܐˆ Հ{˘€[ˆ 合 ܐˆ ژ€[#ˆ 合 ܐˆ ڐĚw•ˆ合ܐˆܐˆڐÜ[•ˆ合ܐˆڐˆՀ{˘€[?č•ĘˆΐˆΐˆѐˆՐˆѐˆܐ?•ˆՐˆꐐˆՐˆ吐ˆܐˆՈ!enablenextvisibleerorstoredatamailpwd1pwd2fNamreplaceRegExplNamcntygetSelectedItemTextrmbmagrepolybdmtbddybdyrrememberPassword eMailValidatesetForeColorRedload AnnotsString2IDS_SHARED_REVIEW_DOC_CENTER_ERROR_EMAIL_NOT_VALID DebugThrow Invalid datalength2IDS_SHARED_REVIEW_DOC_CENTER_ERROR_PASSWORD_LENGTH1IDS_SHARED_REVIEW_DOC_CENTER_PASSWORDS_DONT_MATCH4IDS_SHARED_REVIEW_DOC_CENTER_ERROR_BIRTDAY_NOT_VALID-IWSharedReviewDocCenterEligibilityErrorDialogapp beginPrivCollabdisableDocCentreSignup execDialogendPrivcanceluserpswd,IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CREATINGdcSignup*IDS_SHARED_REVIEW_DOC_CENTER_ERROR_GENERICError in dcSignup getDriver reviewType swConnect cUsername cPassword bSaveCredbValidateEmailcDriverswConn shareIdentityEmailFullName getFullName Authenticated SharedReviewFormDistributionnameSignUp_SuccessfulvalTrueAVUMAddStringToPayloadWrapperAuthentication_Successful DebugPrintlnBAdobe Id account created and successfully connected to Acrobat.comFalse!Login was unsuccessful, try again ANDumpObjstat errorCode7IDS_SHARED_REVIEW_DOC_CENTER_STATUS_INVALID_ID_PASSWORD%IWSharedReviewDocCenterServicesDialogok swAcceptTOU isFirstLaunchWTunsetFirstLaunch%Successfully connected to Acrobat.com DebugAlert.IWSharedReviewDocCenterLogin: Login successfulELogin was successful, but attempt to accept services agreement failed@Login was successful, but user did not accept services agreement3IDS_SHARED_REVIEW_DOC_CENTER_STATUS_REQUEST_EXPIREDresd6Login was successful, but need to verify email address2IDS_SHARED_REVIEW_DOC_CENTER_STATUS_CANNOT_CONNECT,IDS_SHARED_REVIEW_DOC_CENTER_ERROR_DUP_EMAILResponse has error˙˙˙˙err˙˙˙˙ee^\s+\s+$^\s+\s+$fÄD ţ–)˙˙˙˙ÁJš dialogurl§ç ˘č [[;5=;5;5WQ; ¸ äVäCä:QĐ␈׈app viewerTypeReader AnnotsString=IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_READER>IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_SERVICES_AGREEMENT_ACROBAT launchURL˙˙˙˙ÁJš dialogurlşč ­é a[;5=;5;5WQ; ¸ äVäCä:QĐ␈׈app viewerTypeReader AnnotsString9IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_READER:IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_ACROBAT launchURL˙˙˙˙ÁJš dialogurlČé ťę g[;5=;5;5WQ; ¸ äVäCä:QĐ␈׈app viewerTypeReader AnnotsString9IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_READER:IDS_SHARED_REVIEW_DOC_CENTER_ONLINE_PRIVACY_POLICY_ACROBAT launchURL˙˙˙˙Áüš*Ş+ reviewType description( 1 Š\YT]‚]‚]‚]‚]ZY=];5] ;5 ] = ] =]ZY=]=] =];5]Xţ] ZY=]= ] Z Y=]×] \`Y=];5]C]=]\`Y=]×] \`Y=];5]C]Xţ] \`Y=]=]=]C]Xţ] =]\`Y=]×] \`Y=];5 ]C]Xţ] \`Y=]×] \`Y=];5!]C]Xţ] \`Y=]×] \` Y="];5#]=]\` \]$\`\]$\`\]$\`\]%\WQ;& ¸' ä:Q9(â(äVä:WQ;& ¸) ä:QV•ČĘ˜€\ŸĘ˜€\ŁĘ˜€\§Ę˜€\°”•ĘĎĎĘĘ”•ĘĘĘĎČ”•ĘĘ”•ĘĚ•ĘĎ–ϐ•ĘĚ•ĘĎ–͐•ĘĘĘ–Ȑϐ•ĘĚ•ĘĎ–͐•ĘĚ•ĘĎ–͐•ĘĚ•ĘĎű˜€] ˆѐˆ֐ˆѐˆŒ reviewType initializeidlecommitresdviewtypeCollab wizardWidthwidth wizardHeightheight align_leftalign_children align_fill alignment align_topwizardMarginWidth margin_widthgap static_text AnnotsString)IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFYnamebolddialogfont0IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR1 wrap_nameeMl1item_id0IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR20IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_VERIFY_INSTR3 link_text)IDS_SHARED_REVIEW_DOC_CENTER_EMAIL_RESENDelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á–š "dialogotoLoadtoShowˆ 㠏\T ¸ ä:WQYA55]\WQY\WQVA55=6QVB6QT ¸ ä= ä:QT ¸ äVä:QT ¸ äVä:QŇ•ŐĘˆڐˆʐˆՐˆӐˆӈstoredatamaileMl1prev reviewTypeDocCenterSignuphelpfocusresdvisibleload˙˙˙˙Ášdialogů  Ÿ\ˆ˙˙˙˙Ášdialognext% ? Ł\ˆ˙˙˙˙Áhš dialog verifyResultZ / §\; ¸ ä:Q; ¸ äA55äA55ä:WQ; ¸ ä:Q9âä= Vä:Qˆѐ쐈ѐˆو?app beginPrivCollabswSendVerifyEmaildatauserpswdendPriv DebugPrinltn!Collab.swSendVerifyEmail: result:˙˙˙˙Á`š8Ţ+ descriptionh ÷X ]Y‚]‚]‚]‚]‚]‚]‚]‚]‚]‚ ] ‚ ] ‚ ] ‚ ] ‚ ] ‚]‚]ZY=]=]ZY=]=]=];5]\`Y=]=]ZY=]×]\`Y=]ZY=]=]=];5]\`Y=]=]=];5]\`\] \`\] \`Y=]=]=];5!]\`Y="]=#]C]$;%5&];5']\`Y=]=(])=]ZY=*]=+]=(]);,5-].\`Y=/];50]=]\`\] \`Y="]=(])=1]2=3]\`\] \`\]4\WQ;, ¸5 ä:Q96â6äVä:WQ;, ¸7 ä:QV•Ę˜€]Tʘ€]dʘ€]|ʘ€]’Ę˜€]ŹĘ˜€^ ʘ€^&ʘ€^=ʘ€^Fʘ€^Uʘ€^]ʘ€^eʘ€^sʘ€^€Ę˜€^łĘ˜€_+”•ĘĘ”•ĘĘĘÔ•ĘĘ”•ĘĚ•Ę”•ĘĘĘÔ•ĘĘĘę˜€_T•ĘĘĘÔ•ĘĘ–ϐԐ•ĘĘĘ”•ĘĘĘÔ•ĘĎÚ˜€_t•ĘĘĘĺ˜€_ˆѐˆ֐ˆѐˆŒ initializeinviattcsendsavebrws normalizeURLfixURLgetFS getSeparator getFilename getDirectory URLToDiPath URLPartialOkidlecommitviewtype align_leftalign_childrenradioitem_iddistgroup_id AnnotsString*IDS_SHARED_REVIEW_DISTRIBUTION_SEND_INVITEname align_rowgapwidth.IDS_SHARED_REVIEW_DISTRIBUTION_ATTACH_TO_EMAIL'IDS_SHARED_REVIEW_DISTRIBUTION_SEND_URLelementsIDS_SHARED_REVIEW_SAVE_LOCAL static_textbmsg wrap_nameCollab wizardWidth4IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCAL align_fill alignment edit_textdestappisProtectedModeEnabledreadonlybutton IDS_BROWSEtruncate_middletruncatedisp description beginPrivANTrustPropagateAllendPriv˙˙˙˙ÁČš&ĹBdialogoldNameoldPathnewPathtoLoadpath˘ o ] A5B6Q; ¸ ä:Q; ¸ ä:Q; ¸ ä:QA555WQA555 WQV ¸ ä>äV ¸ ä= ä:?ä:WQA5V ¸ ä ä=ä:;56 QA5VA55 6QA55Ĺ=A5=6QY\WQA55x=y=y=y|z; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVA555=V6QVA556QA55Ĺ=VA556QA55x=y=y@=ybzVC6QVC6QV;5 6QSVC6QVC6!QV;5"6Q'VC6#QV;5 6QT ¸$ äVä:QT ¸% ä=ä:Qˆ͐ˆѐˆѐˆѐÔÔëˆńˆېˆŇ•ˆѐĘË`€Ż‘m •m €]3mʘ€]+ˆŃŕˆѐˆÓ ؐP•ˆԐP•ˆŇ•ˆԐË`€ž‘m €]Dm €]Jmʘ€]=ˆʐˆʐˆӐP•ˆʐˆʐˆӐP•ˆʐˆӐP•ˆӐˆՈdatadocWarningPoppedapp beginPrivCollabupdateMountInfoendPrivdocdocumentFileNamepath substring lastIndexOf/ cDocumentNamereplace AnnotsStringIDS_SHARED_REVIEW_FILE_EXT cDocumentPathdistributionMethod undefinedEMAILMANUALUPLOADconvertDIPathToPlatformPathdestrequiresFullSavedistributionURLpreviousDestinationinviattcbmsg4IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCALsend5IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_REMOTEsaveloadfocus.pdf$˙˙˙˙Á}š dialogpropstoEnable‡ ˛ T]T ¸ ä:WQV5A ¸ äTä:Q#V5A ¸ äTä:QYC]C]\WQT ¸ äVä:QŇČ֐ȍѐ•–ːˆӈstoreattcsendenable˙˙˙˙Á š<dialogtoLoadpathpropsĘ § d] Y;5]\WQ; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVA55 5 = V6 QA55Ĺ=VA556 QT ¸ ä:WQV5EQV5 EQV5 VC6QT ¸ äVä:Q•Ô˜€]mˆŃŕˆѐˆÓ ؐˆŇ•ˆԐŇÎˆψÉ•ˆʐˆӈ AnnotsString4IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCALbmsgapp beginPrivCollabconvertDIPathToPlatformPathdata cDocumentPathendPrivdestdocrequiresFullSavepreviousDestination undefinedstoreinviattcsendload˙˙˙˙ÁŘš3dialog cDefaultLinktoLoadpropsż w |]A5555WQV ¸ ä ä: 9âäVä:WQVA55WQY;5] V] \WQT ¸ ä:WQV5 EQV5 EQV5 VC6 QT ¸ äVä:QŮˆŐ•ˆ֐ˆÎp••ĎÍŇÎˆψÉ•ˆʐˆӈdataserverSettingscSettingmatchANSMBURLToPlatformPath cDocumentName AnnotsString5IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_REMOTEbmsgdeststoreinviattcsendload^(http[s]?|file):\/\/˙˙˙˙ÁĂš/dialogtoLoadpathtoEnable '# ’] Y;5]\WQ; ¸ ä:Q; ¸ äA55ä:WQ; ¸ ä:QVA55 5 = V6 QT ¸ äVä:QYB]B]\WQT ¸ äVä:Q•Ô˜€]›ˆŃŕˆѐˆÓ ؐˆӐ•–ːˆӈ AnnotsString4IDS_SHARED_REVIEW_DISTRIBUTION_SELECT_LOCATION_LOCALbmsgapp beginPrivCollabconvertDIPathToPlatformPathdata cDocumentPathendPrivdestdocrequiresFullSaveloadattcsendenable˙˙˙˙Áöš4ěhdialog browsePropspropspathsaveURL validLocationerrMsg?# ˘, Ź]YC]A55]C]\WQT ¸ ä:WQA5=6QV5.A5= 6QV; 5 6 Q#V5 A5=6Q; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QV†VQA5V56QA55x=y=y= yŤzŃ; ¸ ä:Q; ¸ äV5ä:WQ; ¸ ä:QA5V56QA5V5 ¸ äV5 ¸ ä=ä:?äV5Ůä:6Q0A ¸ äV5ä:WQV ¸ ä>ä×ä:=DQV ¸ ä>ä×ä:= WQV X; ¸ ä:Q; ¸! ä;"5#ä:Q; ¸ ä:Q9$â$ä=%ä:Q;5&='EQV5; 5 =; ¸ ä:Q9(â(äVä:WQ; ¸ ä:QA5V6)QT ¸* äYV]+\ä:QäĆvWQV5,=-žVQ9.â.äV5/ä:F?,;"50WQ+;"51WQ;"52WQ; ¸ ä:Q; ¸! äVä:Q; ¸ ä:Q9$â$ä=3ä:Qǐ•–АːŇˆѐČ)•ˆѐˆؐČ•ˆѐˆѐؐˆѐ •‘”ˆԐË`€đ‘m •m €]×mʘ€]ΐˆѐˆݐˆѐˆԐˆ˙ʐP•ˆِߐݐˆ •ˆ ѐˆܐˆ ѐˆՐé•ˆ ѐˆ ֐ˆ ѐˆϐP•ˆŢx•ĘÎ•”×XRِˆ ΐP•ˆ ΐP•ˆ ΐP•ˆѐˆՐˆѐˆՀ{–ˆbSavedata cDocumentName cFilenameInitbUnicodestoredistributionMethodEMAILsendUPLOADcFSInit fileSystemWebDAVsaveMANUALapp beginPriv browseForDocendPrivdistributionFScFSCollabconvertDIPathToPlatformPathcPath cDocumentPath substring lastIndexOf/length normalizeURLcURLhttp:smb:alert AnnotsString+IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATION DebugThrowNon-shared folderplatformWINANSMBURLToPlatformPathdistributionURLloaddestmessageVolume Mount ExceptionNumber errorCode#IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR$IDS_SHARED_REVIEW_VOLUME_MOUNT_ERRORIDS_SHARED_REVIEW_VOLUME_ERROR VolMountError˙˙˙˙eŕ6˙˙˙˙Á—š!url lastSepIndexdirURLsuburlŔ, ő0 ^T ¸ ä=ä:WQV>uT ¸ ä>äV?ä:WQT ¸ äV?ä:WQ; ¸ ä:Q; ¸ äVä:VUQ; ¸ ä:QT˜€^ؐ •ÚŘˆѐˆܐˆѐˆŒ lastIndexOf/substrapp beginPrivCollab uriNormalizeendPriv˙˙˙˙ÁÉš2url1 3 &^T ¸ ä ä:4T ¸ ä ä=A55ä:UQ/T ¸ ä ä=A55ä:UQT ¸ ä ä: =T ¸ ä ä:T=UQT=UQTÔ/•ˆ^/ˆꐐˆŐ•Ô•ˆČpʐˆČp•ˆŒ matchreplace\data cDocumentName/pdf.pdf^\\\\\\\.?$\/\.?$\.pdf$\.$˙˙˙˙Á’šurl3 34 =^T ¸ ä ä:DQT ¸ ä ä:;5ST ¸ ä ä:DQT ¸ ä ä:;5;5î•ˆААˆ ˈmatch fileSystemdefaultWebDAV^\\\\^.+:\\ ^file:\/\/ ^smb:\/\/˙˙˙˙ÁqšurlpathSepQ4 b5 F^=WQT ¸ ä ä:DQT ¸ ä ä:=WQ'T ¸ ä ä:=WQVÉî•ˆΐÔ•ˆɐˆŒ/match\^\\\\^.+:\\^(http[s]|file):\/\/˙˙˙˙ÁJšurl pathIndex5 6 U^T ¸ äA ¸ äTä:ä:WQV>T ¸ äV?ä:UQTă ؐˆŒ lastIndexOf getSeparatorsubstr˙˙˙˙ÁLšurl pathIndex96 Ř6 ]^T ¸ äA ¸ äTä:ä:WQV>T ¸ ä>äV?ä:UQTă ڐˆŒ lastIndexOf getSeparatorsubstr˙˙˙˙Áßš#urlő6 z8 e^T ¸ ä ä:?T ¸ ä ä=ä: ¸ ä ä=ä:UQ}T ¸ ä ä=ä:UQT ¸ ä ä=ä:UQT ¸ ä ä=ä:UQT ¸ ä ä=ä:UQ9âäTä:Ô:•ˆúˆސˆސˆސˆސˆӈmatchreplace//$1/unescape^\\\\\\^\/\/^file:\/\/localhost\/ ^file:\/\/\/ ^file:\/\/^\/([^\/]+)\|\/˙˙˙˙Ádš%dest˜8 : s^;5x=y=yz/T ¸ ä ä:T ¸ ä ä:T ¸ ä ä:Ę`Y‘m •mʘ€^wˆՐˆՐˆՐˆappplatformMACWINmatch4^(?:http[s]?:\/\/)|(?:file:\/\/)|(?:smb:\/\/).+\/.*$B^(?:http[s]?:\/\/.+\/.*$)|(?:file:\/\/.+\/.*$)|(?:\\\\[^\\]+\\.*$))^(?:http[s]?:\/\/)|(?:file:\/\/\/).+\/.*$˙˙˙˙Áš$}\dialogstrpropstoEnable partialOKURLdispVal: š@ €^A55EQA55 &A5C6QA5A55 ¸ ä;5ä;5ä:;56Q; ¸ ä:QA555 1; ¸ äY; 5]\ä:QsA55 b; 5WQ; ¸ äA55ä:; 5WQ; ¸ äYV]\ä:Q; ¸ ä:QT ¸ ä:WQYC]\WQV5EQV5ýA ¸ äV5ä:WQA55@ÍV;; 5 ¸ ä äA ¸ äV5ä:ä:&; 5 ¸ ä ä=ä:WQV5V#T ¸ äYV]\ä:QVA55E"QA555 E QV@6QaVA55EHQA555 E1QV5@E!QV5 ¸! ä ä:@6QT ¸" äVä:QT ¸# äYV5EQV5]\ä:QŃˆĚ•ˆ͐ˆ–ýˆѐĐ,•ˆ쐈 Ě•ÎÜ•ˆΐˆŕˆѐŇĐÖ€ř•ŮÍ•6•öĺĚ•ˆސˆԈ+瘀^ސˆԈ+אńˆӐˆńˆ1datadocdocWarningPopped docModifiablerequestPermission permissiondocumentmodifygrantedapp beginPriv certifiedalert AnnotsString.IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIEDcMsg3IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_NOT_MODIFIABLECollabisSharedReview2IDS_SHARED_REVIEW_UPLOAD_STEP_DOC_IS_SHARED_REVIEWendPrivstorenextsendinvi URLPartialOkdest!IDS_SHARED_REVIEW_UPLOAD_TEMPLATEreplacefixURL--disploadmatchenablevisible%url%%url%\.pdf$˙˙˙˙Áuš6$–dialognextprops locationProps fixedDest validLocationmsg˛@ Q ł^ TqT ¸ ä:WQY\WQV5ŹA5=6QA5A ¸ äV5ä:6QA5= 6Q; ¸ ä:QV; ¸ äV5ä:6 Q; ¸ ä:QVV56QV@6Q‘V5ĺA5=6QA5A ¸ äV5ä:6QA5;56QA5A55 ¸ ä äA55ä:6Q; ¸ ä:QV; ¸ äV5ä:6 Q; ¸ ä:QVV56QV@6Q¤A5=6QA ¸ äV5ä:WQA5V6QA5A ¸ äA55ä:6QA5;56QA5A55 ¸ ä äA55ä:6QA55=QA5555V= 6QV=6QVV6 Qv; ¸ ä:QV; ¸! ä9"â"ä9#â#äVä:ä:ä:6 Q; ¸ ä:QVA556QVV5 6QA5V5 6$QBWQ†VV5 6%Q; ¸ ä:Q; ¸& äVä:EQ; ¸' äVä:WQ; ¸ ä:QšĆvWQVQV5(×;5)WQ6V5(×;5*WQ;5+WQ; ¸, äVä:Q9-â-ä=.ä:QÇV ;5/WQV ¸ ä äV5ä:WQ; ¸ ä:Q; ¸, äVä×ä×ä:×9-â-ä=0ä:Q; ¸ ä:QA5V5 6$QA5A55$ ¸1 äA55$ ¸2 ä=3ä:?äA55$Ů4ä:6QA5V565Q •ŇĘ˜€^ÁČ€§•ˆѐˆᐈѐˆѐˆ␈ѐˆѐˆϐČ€ŕ•ˆѐˆᐈ֐ˆôˆѐˆ␈ѐˆѐˆϐˆѐِˆϐˆ䐈֐ˆô˜€^čŃL•Ő•ˆӐˆΐˆѐˆѐˆűˆѐˆ ԐˆѐˆԐ•‘ˆѐˆѐˆڐؐˆŃx•Ę˜€_ ”Ë•ˆ ӐË•ˆ Ӑˆ ΐˆՐˆՀ{–ˆ •ÎˆᐈѐÝ•ˆՐˆѐˆԐˆ˙ӐˆԈ+storesavedatadistributionMethodMANUALdistributionFSgetFSdestmsgapp beginPriv cFilePathCollabconvertPlatformPathToDIPathendPrivcDisplaycFSattcEMAIL AnnotsString/IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAILreplace cDocumentNameUPLOADfixURLdistributionURL+IDS_SHARED_REVIEW_PREVIEW_INVITE_LINK_EMAILCHTTPserverSettings#bUseWindowsIntegratedAuthenticationCSSO uriToDIPathencodeURIComponentANPlatformPathToURL cDocumentPathcPathisPathWritableisValidSaveLocation errorCode+IDS_SHARED_REVIEW_DISTRIBUTION_BAD_FILENAME+IDS_SHARED_REVIEW_DISTRIBUTION_WRITE_DENIED+IDS_SHARED_REVIEW_DISTRIBUTION_BAD_LOCATIONalert DebugThrow BadLocation(IDS_SHARED_REVIEW_DISTRIBUTION_OVERWRITECannotOverwrite substring lastIndexOf/lengthpreviousDestination˙˙˙˙e %review_name% %review_url% %sFilename%jj˙˙˙˙Á  €šiťidoc serverType serverURLreviewFileNamereviewFileLocationinitiatorEmail reviewMethodrequiredReviewersoptionalReviewersbIsValiddataidriverlogEventParamsstartPayloadParamsaddStringToPayloadParamsłY lm ˆ_TEQ; ¸ äTä:X; ¸ ä:Q; ¸ äY;5]T]\ä:Q; ¸ ä:Q>TEQ; ¸ äTä:X; ¸ ä:Q; ¸ äY;5 ]T]\ä:Q; ¸ ä:Q>9 â ä:WQY\WQVZ\6 QTEQT5"VT56QVT6QV; ¸ ä:6Q; ¸ ä:QVZ\6QVY\6QV;5=6QV9âäTä:6QV9âäTä:6Q;5KŠmMWQ;5V7WQV ¸ ä=ä:YV ¸ ä: 9V5V5ŮV8QV5V5V8QVV6 QăL˙˙˙xN; ¸ ä:QY\WQY\WQY\WQV=6!QV=#6"QV=#6$Q; ¸ ä:Q; ¸% äVä:Q; ¸ ä:QV=6&QV=(6'QV>6)QV=+6*QV=-6,QV=/6.QV?60QV?61QV>62QV>63QV?64QV>65QVT66QVT67QVT68QVT69QV>6:QV?6;QV>6QV=-6@QV>6AQVT6BQV=D6CQV=?6EQV=?6FQV=?6GQV=I6HQVY\6JQV5J>6KQV5J>6LQV5J?6MQV5JT6NQV5JY\6OQV5J5OT6PQVTT6QQTx=Ry=Syo=TyŔzV=V6UQV=?6WQV5J=Y6XQV5J=[6ZQV5J5O>6\QťV=]6UQV=^6WQV5J=_6XQV5J=`6ZQV5J5O?6\Q`V=a6UQV=b6WQV5J=c6XQV5J=d6ZQV5J5O>6\QT EQT=eDQT=f!; ¸ ä=gä:Q9hâhäVä?ä:QÝ•ˆ ѐˆ  ѐˆ ’Ý•ˆ ѐˆ  ѐˆ ’ŇĘˆΐŃ•ˆ ѐˆ ̐ˆِˆѐˆΐˆϘ€_ވِˆېˆېĚ0€ËŇÔ•ˆĎ4•ˆڐˆڐˆ՘€_˝ˆј€_ÁʐʐʐˆΐˆΐˆΐˆѐˆՐˆѐˆΐˆΐˆʐˆΐˆΐˆΐˆʐˆʐˆʐˆʐˆʐˆʐˆ̐ˆ̐ˆ̐ˆ̐ˆʐˆʐˆʐˆʐˆΐˆΐˆʐˆ̐ˆΐˆΐˆΐˆΐˆΐˆϐˆϐˆϐˆϐˆѐˆԐˆ֐ˆАc€5‘m €_üm €`mʘ€_ňˆΐˆΐˆӐˆӐˆԐP•ˆΐˆΐˆӐˆӐˆԐP•ˆΐˆΐˆӐˆӐˆԐP€`ˆ ╈ ܐˆ Ո Collab isDocDirtyapp beginPrivalert AnnotsStringIDS_SEND_FOR_REVIEW_DOC_DIRTYcMsgoDocendPrivisInvalidSaveLocationIDS_SEND_FOR_REVIEW_SAVE_OTHERANValidateIdentitydocsOpenedByWizardpathdocPathdocreviewIDcreateUniqueDocIDserversdrivers readerEnable viewerTypeExchangereqR SplitAddrsoptRcanInitiateWorkflow SharedReviewisDocCenterWorkflowlength driverURLdcDrivercatsubcatSharedReviewPayloadevntAVUMStartPayloadWrapper reviewTypeWT_SRUseDocumentCenterUB_UB cannedSubjPlease join the review cannedMsg1You are invited to participate in a shared reviewdocAlreadyOpened delayOpenDoc checkSize isApproval docModifiableaddInternalServeryurl cDocumentName cDocumentPathdistributionMethodoverwriteIsImplicit doOverwritedeliveryMethodLinkClicked deadlineIsSetmsgsubj msgChangedraddr accessLevel0deadlineinternalDeadline oDeadlineresultfnshserverAlwaysUseServerAlwaysUseServerFDDefault DistMethodSettingscSettingdistributionURLNETWORK SHAREPOINTWEBDAV serverType&Network folderdistributionFSUI My Network Folder (send as link)URL1urn://ns.adobe.com/Collaboration/SharedReview/SMB#bUseWindowsIntegratedAuthentication&SharePoint subsite*CSPMy SharePoint Subsite8urn://ns.adobe.com/Collaboration/SharedReview/Sharepoint&Web server folderCHTTPMy Web Folder (manually send)4urn://ns.adobe.com/Collaboration/SharedReview/WebDAVEMAILUPLOAD/ERROR: requiredReviewers field cannot be empty!CBSharedReviewCompleteî˙˙˙˙Á.š  oDidHappendialogŁm 3n `T ¸ ä;5ä:QT ¸ äTä:Qˆڐˆӈ! setStatus AnnotsString#IDS_SHARED_REVIEW_STATUS_INITIALIZE sharePointwiz˙˙˙˙Á€š  baseURL docLibName oDidHappendialogparamsgn ›o `Y=]T]C]\WQ; ¸ ä:Q;5 ¸ äVä:Q; ¸ ä:Q9 â äTäTäBäTäTä:Q•ĘČËˆѐˆڐˆѐˆáˆFCONNECTcVerbcURL isSPCallSiteapp beginPrivNetHTTPrequestendPrivcreateDocumentLibrary˙˙˙˙ÁŮš*@baseURL docLibNamelogOnce oDidHappendialogformDigestValueformDigestParamsresponseÖo |v (`;Š˙˙˙˙QY=]ˆ˙˙˙˙=]YC]\]ZY=]= ] \`\] Yˆ˙˙˙˙] ‚] \]C]\WQ; ¸ ä:Q;5 ¸ äVä:WQ; ¸ ä:Qϐ•ĘÔ•ĚÉĘŐ•ÎĐ˜€`Oːˆѐݐˆш undefinedPOSTcVerb_api/contextinfocURLUsePlatformAuth oAuthenticateacceptnameapplication/json; odata=verbosevalueaHeadersoNotifyresponseoHandler isSPCallSiteapp beginPrivNetHTTPrequestendPriv˙˙˙˙ÁĐš=,msguriedata¸q ău 6`T5X”-9âäˆ˙˙˙˙äˆ˙˙˙˙ä:Q›T5X“D$QT5X‘DQT5XXEQˆ˙˙˙˙A9âäˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙ä:QT;A5 ¸ ä:Qö†; ¸ ä; ¸ äTä:ä:WQV5 5 5 Š˙˙˙˙Q9 â äˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙ä:QtĆvWQˆA9âäˆäˆäˆäˆä:QA5 ¸ ä:QǐĚ(•ˆč˙<•ˆüÉ•ˆא‘鐈ܐˆ÷x•ĘÉ<•ˆ üˆ Ҁ{–ˆerrorshowChooseSubsiteconnectSubsite undefinedoNotifyonErrorCreationJSONparseSOAPstringFromStreamdGetContextWebInformationFormDigestValue createLibrary˙˙˙˙e߁˙˙˙˙Ázš'G@baseURLformDigestValue docLibName oDidHappendocLibraryParamsŻv %} V` T;pY=]ˆ˙˙˙˙=]YC]\]ZY=]= ] \`Y= ]= ] \`Y= ]T] \`\] ; ¸ ä; ¸ äYY=]\]B]B]C]×e]C]T]T]\ä:ä:]YT]‚]\]C] \WQ;! ¸" ä:Q;#5$ ¸% äVä:Q;! ¸& ä:QÉ••ĘÔ•ĚÉĘĎ•ĘĎ•ĘÓß•Đ–––—–Ȑ֐•ČĐ˜€`}ːˆ ѐˆ ڐˆ ш undefinedPOSTcVerb/_api/web/listscURLUsePlatformAuth oAuthenticateacceptnameapplication/json; odata=verbosevalue content-typeX-RequestDigestaHeadersSOAPstreamFromStringJSON stringifySP.Listtype __metadata ForceCheckoutEnableVersioningAllowContentTypes BaseTemplateContentTypesEnabled DescriptionTitleoRequestoNotifyresponseoHandler isSPCallSiteapp beginPrivNetHTTPrequestendPriv˙˙˙˙ÁTš msgurie‚{ ~| v`T;EQT5XôA5 ¸ ä:Q!A5 ¸ äˆ˙˙˙˙ä:QŰ•ˆאˆ܈+ undefinederroroNotifyonErrorCreationonSuccessfulCreation˙˙˙˙Á$šUAh@data automationdrivermaxStrtitle progressInfodialogL} A …`ˆ˙˙˙˙5ˆ˙˙˙˙5'ˆ˙˙˙˙5ˆ˙˙˙˙557Š˙˙˙˙Q;5 ¸ ä ä;5 ¸ ä ä;5 ä:ä:WQVQˆ˙˙˙˙5 = ]ˆ˙˙˙˙5 = ;5WQ,ˆ˙˙˙˙5 =;5WQ;5WQ9âä=ˆ˙˙˙˙ä:Q9âäˆ˙˙˙˙ä:Q; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QY@]>]ˆ˙˙˙˙]V]ˆ˙˙˙˙]@]@] B]!Z\]"Y‚]#‚]$‚]%\]&Y‚]#‚]$‚]%\]'Y‚]#‚]$‚]%\](Y‚ ]#‚ ]$‚ ]%\])‚ ]*‚ ]+‚],‚]-‚].‚]/‚]0‚]1‚]2‚]3‚]4YV]5XÂ]6ZY=7]8=9]:ZY=7]8=;]=?]@\`\]A\`Y=B]8=9]:=C]@C]DV]5XÂ]6\`Y=E]8;5F]G\`\]A\`\]A\]H\WQˆ˙˙˙˙5I5Jˆ˙˙˙˙5I ¸K äCä:Q; ¸ ä:Qˆ˙˙˙˙; ¸L äYˆ˙˙˙˙5M]Nˆ˙˙˙˙5O]P\ä:6IQ; ¸ ä:Qˆ˙˙˙˙C6QQLm; ¸ ä:Q; ¸R ä9SâSäVä:ä:Q; ¸ ä:Qăˆ˙˙˙˙5Q˙˙˙ŠVV ¸T ä:Q@WQÎ˙•˙—”ÔX•Ô•ˆ ӐÔ•ˆ ӐˆΐˆߐˆِˆѐԐˆѐ•––ΐȐÎ–––ʐ•Ę˜€b&ʘ€b7И€bJ•Ę˜€c ʘ€c(И€c2•Ę˜€c„ĘĐ˜€c‰•Ę˜€cčʘ€cěИ€cňʘ€cţʘ€dʘ€d[ʘ€dbʘ€djʘ€dvʘ€d|ʘ€dŒĘ˜€dŠĘ˜€dĂʘ€dٕȐȐ”•ĘĘ”•ĘĘ”•ĘČ—Ú˜€dđ•ĘĘĘ–Ȑ͐•Ęđ˜€eÓ•ˆܐˆѐˆ˙͐ˆѐˆА(\•ˆ™€eˆѐˆ䐈ј€e ˆ՘€e •ˆϐˆUseDocumentCenterdcDriverdriversserverURL AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEreplace IDS_SHARED_REVIEW_COMPLETE_ERRORIDS_NETWORK_NO_CONNECT reviewTypeSharedReviewEmailactionChangeDeadline"IDS_TRACKER_ACTION_CHANGE_DEADLINE AddReviewers IDS_TRACKER_ACTION_ADD_REVIEWERS%IDS_SHARED_REVIEW_COMPLETE_STEP_TITLE DebugPrintlnThe driver is: ANDumpObjapp beginPrivCollabgetProgressInfoendPrivoDialog nCurrentTaskoDriver oProgressInfodataoTaskSet cDocumentPath bDoCommitaCompleteTasksrunTask onSuccess onFailureoSaveFileTasksoSendEmailTasksoDocCenterTasks_createWorkspaceoDocCenterTasks_completegetAsciiSafeDocNameupdateProgress initialize setTaskStatussetTaskProgressgetCurrentTask getNumTasksrunCurrentTask handleSuccess handleFailurecommitnamewidthviewtype align_fill alignment align_rowalign_children progress_barheightprogitem_idelements static_textdesc wrap_name ok_cancel IDS_SHARED_REVIEW_COMPLETE_RETRYok_name descriptiondochiddencloseDocopenDocdocFScFSdocPathcPath shouldRetry execDialogANTrustPropagateAll setHandler˙˙˙˙Á Üš z3ęcxttaskDatadataid bezelMessage sourceURLeaddrparamsbUB scriptPropscScriptcVersionScriptsavePropsRemoteurlsavePropsLocalၠ˘ś ­`TT6QT5WQT ¸ ä;5ä:QV5T ¸ ä:Q†V55WQ= WQV5 pT55 WQ9 â ä= Vä:Q; ¸ ä:QV5WQ; ¸ ä:Q;5WQ"; ¸ ä:Q; ¸ äV55ä:WQ;5WQ; ¸ ä:QV5x=y=y'=y–z¤;5WQ‘V5x;5y(;5y,;5 y0z>;5!WQ+;5"WQ;5#WQ;5$WQYV5%]%V]&V5']V](V55)5*])V55+],V55-]-V55.]/V50= V51B]2V5=]3B]4V5];55]6;7 ¸8 äV59ä:]9V]:\WQ9;â;ä=<ä:Q; ¸ ä:Q; ¸= äVä:Q; ¸ ä:QV5>WQY;5?]@V]&V5']'V]Aˆ˙˙˙˙5*]BV55+]+V55-]-V55.].V5=]3V50= V51B]2V5];55]6;7 ¸8 äV59ä:]9\WQV(9CâCä‚äVä:=D#9CâCä‚äVä:=DWQ9CâCä‚äY;5E]F;5G]H;5I]J;5K]L;5M]N;5O]P;5Q]R;5S]T;5U]V;5W]XV]YV5 ]Z\ä:=DW Q; ¸ ä:QV5% ¸[ ä=\äV ä:QV5% ¸[ ä=]äVä:Q; ¸ ä:Q; ¸ ä:QV5%5 ¸^ ä:Q; ¸ ä:QV5=EQV5 TYB]_\W QV V5a6`Q; ¸ ä:QV 5`=b@V5c5d5eV =f6`QV V5h6gQn9iâiä9jâjäV5hä:ä:W QV ; ¸k äV ä:6gQV 5`;l5mV C6nQ; ¸ ä:QVV ;p5q6oQ; ¸ ä:QV5% ¸r äV ä:Q; ¸ ä:QYB]_\W QV B6nQV5x=y=y=y zV V5s6gQVV ;p5q6oQ; ¸ ä:QV5% ¸r äV ä:Q; ¸ ä:QV5%5 ¸t äVäCäBä:QVC6QT ¸ ä:Q}ĆvW Q;u ¸v äV 5wä:Q; ¸ ä:Q; ¸x äV5%ä:Q; ¸ ä:QT ¸y ä:Qǐˆ̐̐ˆڐČ•ˆϐˆ’‘ŃÉČk•Ńˆِˆѐ̐ˆѐˆӐˆѐâÎˆѐČ`€Ă‘m €`Űm €`ńmʘ€`֐ˆ ΐP•Č`l ‘Ęh€`äĘh€`éĘhʘ€`ߐˆ ΐP•ˆ ΐP•ˆ ΐP•P•ˆ ΐP€`ů•ÍČÍČ×ŇŇŇÎ ؐӐ–͐ϐސ͐ˆ ՘€aˆѐˆՐˆѐĚ•ĎČÍČÓŇŇŇÓÎ ؐ͐ϐ㐐#•Ń˜€aAҐј€aZѐŃ˜€aą•ĎĎĎĎĎĎĎĎĎĎČŇĘ˜€aÈѐˆސˆސˆѐˆѐˆِˆѐÔˆ2É••ËˆѐˆѐÎ;•Ň•ˆΐˆ֐ęˆ ݐÓ•ˆ ʐˆѐ •ˆӘ€ańˆѐˆؐˆј€a÷•ËˆʐČ`:‘m •m •mʘ€bˆ ѐP• •ˆӘ€bˆѐˆؐˆј€bˆᐈʐˆĎx•Ęˆ ژ€bˆѐˆڐˆѐˆπ{–ˆcxtdata setTaskStatus AnnotsString*IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_STARTsaved handleSuccesscompleteidUseDocumentCenterdcWorkspaceURL DebugAlert9Saving the file for dc case with workspaceURL: sourceURL:app beginPrivuserendPriv$IDS_SHARED_REVIEW_STATUS_INITIATE_DCCollaburiConvertReviewSource sourceURLidentityemaildistributionMethodEMAILUPLOADMANUAL(IDS_SHARED_REVIEW_STATUS_INITIATE_ATTACH serverTypeIDS_SHARED_REVIEW_SMB_NAME!IDS_SHARED_REVIEW_SHAREPOINT_NAMEIDS_SHARED_REVIEW_WEBDAV_NAME,IDS_SHARED_REVIEW_STATUS_INITIATE_SMB_UPLOAD3IDS_SHARED_REVIEW_STATUS_INITIATE_SHAREPOINT_UPLOAD/IDS_SHARED_REVIEW_STATUS_INITIATE_WEBDAV_UPLOAD(IDS_SHARED_REVIEW_STATUS_INITIATE_MANUALdoc initiatorreviewIDsourcedriver driverURLtoinviteesccinitDatesentDateinternalDeadline oDeadlinedeadDate requireSaveui viewerVersion versionInfoMathabs accessLevel bezelMessage DebugPrintlnRegistering review - params:registerReview readerEnableIDS_SEND_FOR_REVIEW_VERSION_ERR cAcroVersion reviewSource driverURI CBFreezeFunc()language cLanguageIDS_SORT_WARNING_TITLEcTitleIDS_VERERR_SR_REcReaderIDS_VERERR_SR_RE_ENU cReaderENUIDS_VERERR_SR_OLD cViewerOldIDS_VERERR_SR_OLD_ENU cViewerOldENUIDS_VERERR_SR_NO_REcViewerIDS_VERERR_SR_NO_RE_ENU cViewerENUIDS_VERERR_SR_DC_REcReader9OrLaterIDS_VERERR_SR_DC_RE_ENUcReader9OrLaterENU bShowReaderbUseDocumentCenter addScript+com.adobe.acrobat.SharedReview.VersionCheck'com.adobe.acrobat.SharedReview.RegistertakeOwnershipOfCommentsbPromptToOverwritecFSdistributionFSCHTTPserverSettings#bUseWindowsIntegratedAuthenticationCSSOcPathdistributionURLencodeURIComponentANPlatformPathToURL uriToDIPath fileSystemdefaultbSaveAsReadOnly cUsageRightssubmitFormUsageRightsRMAsaveAs cDocumentPathsyncconsoleprintlnstackunregisterReview handleFailure˙˙˙˙Áš$/msgÐ Ŕ“ (a;5×EWQ;5 ¸ ä ä: D5Q9âä;5ä;5ä:;5˘YA] = ] = ] =]=]=]=]=]=]=]=]=]= ]!\WQ;" ¸# äVä:QÓˆ âď••–ʐʐʐʐʐʐʐʐʐʐʐϐˆ Ոapp viewerVersion viewerTypematchrequestPermission permissionannotcreategranteddoc {initiator} initiator {reviewID}id{reviewSource}source {driverURI}driver{to}invitees {initDate}sentDate {deadDate}deadDate {requireSave} requireSave{cc}cc{distributionMethod}distributionMethod {versionInfo} versionInfo {accessLevel} accessLevelCollabregisterReviewReader˙˙˙˙ÁŇš- msgö“ •– Ba;5×E"Q;5 ¸ ä ä: ˘YA]=]=]= ] = ] = ]=]=]=]=]=]=]=]\WQ; ¸ äVä:QÓˆ Ü••–ʐʐʐʐʐʐʐʐʐʐʐϐˆ Ոapp viewerVersion viewerTypematchdoc {initiator} initiator {reviewID}id{reviewSource}source {driverURI}driver{to}invitees {initDate}sentDate {deadDate}deadDate {requireSave} requireSave{cc}cc{distributionMethod}distributionMethod {versionInfo} versionInfo {accessLevel} accessLevelCollabregisterReviewReader˙˙˙˙Áš(ĺjbUseDocumentCenter alertMessage bShowReaderŕ– ó¤ \a A5;A;äR6Q;=6Q;=6Q;5;5J;= 6 Q;= 6 Q;=6 Q;=6QE;=6 Q;=6 Q;=6 Q;=6Q;5Ĺ=;B6Q;5Ĺ=;B6Q=WQ;5Ĺ=DQ;5×>VC;× 6Q;×6Q;=6Q;5Ĺ=DQ;5×>VC;× 6Q;×6Q;=6Q;5=¨;5;5EQ;5 x;5 WQ;5× ;5WQ; ¸ äVä?ä?ä:?A ¸! ä;5äBä:Q;C6Qw="WQ;5×EQ;5 V; ¸# äY;5 ]$;5]%;5]&\ä:Q;C6Q;5;5EQ;5 ĎVCu;5 WQ;5× ;5WQ; ¸ äVä?ä?ä:?#; ¸' ä;5äCä:QI; ¸ ä;5 ä?ä?ä:?#; ¸' ä;5äCä:Q;C6QĚ•ˆѐˆАˆАŐE•ˆ Аˆ Аˆ Аˆ Րˆ Аˆ Аˆ АˆИ€asˆ э0̐ˆ э0̐Éˆ 䕐•ˆҐˆ ͐ˆАˆ 䕐•ˆҐˆ ͐ˆАĐ€Ł•Űˆ<Ë•ÎÍ•ˆΐڍ1ڐˆ ј€a•ÉÓˆ%Ë•ˆ ˙–ˆ ̐Űˆ<Ë•p•ÎÍ•ˆΐÚ•ˆ㐐á•ˆސˆ ̈ADBE undefinedObjectLANGUAGE {cLanguage}Viewer_string_Title{cTitle}applanguageViewer_RMA_string_Reader {cReader}Viewer_RMA_string_Viewer_Old {cViewerOld}Viewer_RMA_string_Viewer {cViewer}"Viewer_RMA_string_Reader_9_OrLater{cReader9OrLater} {cReaderENU}{cViewerOldENU} {cViewerENU}{cReader9OrLaterENU}Reader_Value_AskedViewer_Value_Asked{bUseDocumentCenter}Reader_Need_VersionReader_Value_New_Version_URL4http://www.adobe.com/products/acrobat/readstep2.htmlViewer_Need_VersionViewer_Value_New_Version_URL viewerTypeReader viewerVersionalertgetURL {bShowReader}response cQuestioncDefaultcTitle launchURL˙˙˙˙eQ˙˙˙˙Á–š$cxttaskDataaddStringToPayloadParamsžś š &bT ¸ ä;5ä:Qˆ˙˙˙˙55=bY\WQV=6QV= 6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QˆڐŮ•ĘˆΐˆΐˆѐˆՐˆш setTaskStatus AnnotsString,IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_SUCCESSserverURL9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comnameADC_Upload_CompletevalTrueapp beginPrivCollabAVUMAddStringToPayloadWrapperendPriv˙˙˙˙Á–š$cxttaskDataaddStringToPayloadParams9š —ť 7bT ¸ ä;5ä:Qˆ˙˙˙˙55=bY\WQV=6QV= 6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QˆڐŮ•ĘˆΐˆΐˆѐˆՐˆш setTaskStatus AnnotsString*IDS_SHARED_REVIEW_SAVE_SHARED_REVIEW_ERRORserverURL9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comnameADC_Upload_CompletevalFalseapp beginPrivCollabAVUMAddStringToPayloadWrapperendPriv˙˙˙˙Á  š PäđcxttaskDatadata sentEmailpropscopyMe limitedAccesstoList reviewInfotoccsubjmsgurltitleź (Ô LbTT6QT5WQV5=}V5$T ¸ ä;5ä:QQV5= $T ¸ ä;5 ä:QT ¸ ä;5 ä:Q9 â ä= ä:Q†BWQ9 â ä=V5ä:QV5=ëYB]V5 ¸ ä=ä:]V5 ¸ ä=ä:]V5]V5]V55]\WQ9 â ä=V5V5ä:QV5ƒCWQBWQ; ¸! ä:Q;"5#WQ; ¸$ ä:QV5=V5WQVV=V5%WQ;& ¸' äV5(ä:×WQ; ¸! ä:Q;" ¸) äV5*ä:WQ; ¸$ ä:Q; ¸! ä:QV5+ ¸, äV5-äV5.äVäVäV5äV5äV5= ä:Q; ¸$ ä:Q; ¸! ä:QV5+ ¸/ ä:Q; ¸$ ä:QźV5= ß9 â ä=0V51ä:QV5=2P; ¸! ä:Qn3; ¸4 äVä:o3Q; ¸$ ä:QCWQ^V5=5K; ¸! ä:Qn3; ¸6 äVä:o3Q; ¸$ ä:QCWQĎV5=7źV5=2P; ¸! ä:Qn3; ¸4 äVä:o3Q; ¸$ ä:QCWQ^V5=5K; ¸! ä:Qn3; ¸6 äVä:o3Q; ¸$ ä:QCWQ—V5x=2y=5yÄ=ykzk98â8äV5 ¸ ä=ä:ä:WQ98â8äV5 ¸ ä=ä:ä:WQ98â8äV5ä:W Q98â8äV5ä:W Q=9V=:V =;V =<W QV;=V =>VW Q9 â ä=?V ä:QYB]V5 ¸ ä=ä:]V5 ¸ ä=ä:]V5]V5]V55]\WQ; ¸! ä:Qn3; ¸4 äVä:o3Q; ¸$ ä:QCWQťYB]V5 ¸ ä=ä:]V5 ¸ ä=ä:]V5]V5]\WQ; ¸! ä:Qn3; ¸6 äVä:o3Q; ¸$ ä:QCWQ V’V QV5= ;5@W Q;5AW Q;5BW Q; ¸! ä:Q;" ¸C äV ä=DäV ä=Eä:Q; ¸$ ä:QT ¸F ä:QřĆvW Q;G ¸H äV 5Iä:Q; ¸! ä:Q;" ¸J äV5ä:Q; ¸$ ä:Q; ¸! ä:QV 5K=L&; ¸M ä;5Nä:Q*; ¸M äYV 5K]\ä:Q; ¸$ ä:QT ¸O ä:Qǐˆ̐̐Î•Č•ˆ ߐÎ•ˆߐˆڐˆՐ‘•ˆސÎ€敐•–ސސ͐͐אˆ琐Č€~•••ˆѐˆΐˆѐŰ •ˆ֐ˆŕˆѐݐˆѐˆѐˆ˙АˆѐˆѐˆԐˆ֐Î€Ú•ˆސÎK•ˆ ѐˆ ߐˆ ѐˆ ʐÎ•ˆ ѐˆ ߐˆ ѐˆ ʘ€b Î•ÎK•ˆ ѐˆ ߐˆ ѐˆ ʐÎ•ˆ ѐˆ ߐˆ ѐˆ ʘ€b´Č`€Š‘m €bâm €bômʘ€bˇěěŰŰÓÔÉĚp•ˆ ٘€bѐ•–ސސ͐͐אˆ ѐˆ ߐˆ ѐˆ •P••–ސސ͐Ґˆ ѐˆ ߐˆ ѐˆ •P•P€bú •”ΕˆӐˆΐÎˆѐˆ合ј€c ˆĎx•Ęˆ ڐˆѐˆڐˆѐˆѐÎ!•ˆᐐˆ合ѐˆπ{–ˆcxtdatadistributionMethodMANUALUseDocumentCenter setTaskStatus AnnotsString/IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_START_DCactionChangeDeadline5IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_START,IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_START DebugAlertin send email tasksdata.distributionMethod reviewTypeSharedReviewEmailbUIreqRjoin;cTooptRcCcsubjcSubjectmsgcMsgdocpath cAttachmentsadfapp beginPrivCollabcopyMeendPrivuserMathabs accessLevel getReviewInforeviewIDswConn shareFile docCtrURL cReviewURL disconnectdata.sendAttachmentsendAttachmentEMAIL sendResultmailMsgWithAttachmentUPLOADmailMsg AddReviewersescapemailto: ?subject=&body= &ui=false undefined&cc=url : 6IDS_SEND_FOR_SHARED_REVIEW_CHANGE_DEADLINE_CONFIRM_MSG&IDS_SEND_FOR_SHARED_REVIEW_CONFIRM_MSG!IDS_SEND_FOR_REVIEW_CONFIRM_TITLE alertWithHelpAnnots:SharedReviewConfirm handleSuccessconsoleprintlnstackunregisterReviewmessageUser canceled operation.alert!IDS_SHARED_REVIEW_SEND_MAIL_ERROR handleFailure˙˙˙˙ešW˙˙˙˙ÁSš cxttaskDataDÔ NŐ cˆ˙˙˙˙5=$T ¸ ä;5ä:QT ¸ ä;5ä:QÔ•ˆߐˆڈOactionChangeDeadline setTaskStatus AnnotsString7IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_SUCCESS.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_SUCCESS˙˙˙˙ÁSš cxttaskDatajŐ pÖ (cˆ˙˙˙˙5=$T ¸ ä;5ä:QT ¸ ä;5ä:QÔ•ˆߐˆڈMactionChangeDeadline setTaskStatus AnnotsString5IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_DEADLINE_ERROR,IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_ERROR˙˙˙˙ÁŘš9ÂdcxttaskDatacURLcopyMeinviteespropsswConn initResultăÖ Üá 4c 9âä=ä:QTT6QT ¸ ä;5=ä:QT55WQVT5 WQV= WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QCWQ; ¸ ä:Q; 5WQ; ¸ ä:QT55 ¸ ä=ä:=T55 ¸ ä=ä:WQV V=T55WQYˆ˙˙˙˙5]V]T55]T55]T55]; ¸ äˆ˙˙˙˙5!ä:×=" =#]$="]%\WQT55&WQVąT5=(6'Q; ¸ ä:QV ¸) äVä:WQ; ¸ ä:Qn*V5*o*Q9+â+äVä:Q;*>Ď9,â,ä=-ä:Q9,â,ä=.V5/50ä:Q9âä=.V5/50ä:QT5V5/506'QT55' ¸1 ä×˙ä:= T5 5'= 6'QT ¸2 ä:Qe9âä=3ä:Q9âä=4V55ä:Q9,â,ä=4V55ä:QT ¸6 ä:Q/9,â,ä=7ä:Q9âä=8ä:QˆՐˆ̐ˆŕŃˆËp•ˆČp•ˆѐˆؐˆѐ•ˆѐˆΐˆѐ˙Ȑ •ˆ ې•ÓČŇŇŇâ ِϐŃ€Ź•ˆ Ә€cbˆ ѐ֐ˆ ѐˆ Ӑˆ Ӑ€Ę•ˆ Րˆ 㐈 㐈 ېá•ˆÓp—ˆ Ԑˆ Րˆ ސˆ ސˆ Ԙ€c~ˆ Րˆ Ո" DebugAlert'running oDocCenterTasks_createWorkspacecxt setTaskStatus AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYAdobe online servicesdatacSettingreviewID/app beginPrivCollab uriEncodeendPrivcopyMereqRjoin;optRuser driverURLdriverinviteessubjsubjectmsgbody cDocumentPath localPathMathabs accessLeveltruefalsesetACL skipUploadswConndcWorkspaceURLinitiateWorkflowresult ANDumpObj DebugPrintln?Comment repository successfully created on the document center.workspaceURL: props workspaceURLsubstr handleSuccessECould not connect to document center: comment repository not created. *** Workflow initiation failed: errorMessage handleFailureswConn is nullNeed to login again˙˙˙˙ÁšcxttaskDatařá ⠄cˆ(˙˙˙˙ÁšcxttaskData$â 6â …cˆ(˙˙˙˙ÁMš=ŢzcxttaskDatacURLcopyMeinvitees uploadName filePropspropsswConn initResult˘â í ‹c9âä=ä:QTT6QT ¸ ä;5ä:QT55WQVT5WQV= WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QCWQ; ¸ ä:Q; 5WQ; ¸ ä:QT55 ¸ ä=ä:=T55 ¸ ä=ä:WQV V=T55WQT55 ¸ äT55 ¸ ä= ä:?äT55Ůä:WQYT55]V]×˙]\WQ9âäVä:QT5Z\6QT55T55ŮV8QYˆ˙˙˙˙5]V] T55!]"T55#]$T55];% ¸& äˆ˙˙˙˙5'ä:×=( =)]*=)]+\WQT55,WQ†Vă; ¸ ä:QV ¸- äVä:WQ; ¸ ä:Qn.V5.o.Q9âäVä:Q;.>.T ¸/ ä:Q90â0ä=1ä:Q92â2ä=3ä:Q; ¸ ä:QV ¸4 ä:Q; ¸ ä:Q/90â0ä=5ä:Q9âä=6ä:QƒĆvWQ;7 ¸8 äV59ä:Q; ¸ ä:Q; ¸: äˆ5;ä:Q; ¸ ä:QT ¸< ä:QǐˆՐˆ̐ˆڐŃˆËp•ˆČp•ˆѐˆؐˆѐ•ˆѐˆΐˆѐ˙Ȑ •ˆ ې˙ѐ•ŇČĚˆӐˆӐˆ䐐•ÓČŇŇŇâ ِϐŃ‘€Ţ•ˆ ѐ֐ˆ ѐˆ Ӑˆ Ӑ)•ˆϐˆڐˆՐˆ ѐˆ ϐˆ ֐ˆ Րˆ Őx•Ęˆ ڐˆѐˆŕˆѐˆ π{–ˆ DebugAlert running oDocCenterTasks_completecxt setTaskStatus AnnotsStringIDS_SHAREFILE_SING_PROGRESSdatacSettingreviewID/app beginPrivCollab uriEncodeendPrivcopyMereqRjoin;optRuser cDocumentPath substring lastIndexOflength localPath uploadName uploadResult ANDumpObj filesToUpload driverURLdriverinviteessubjsubjectmsgbodyMathabs accessLeveltruefalsesetACL skipUploadswConninitiateWorkflowresult handleSuccess DebugPrintlnWorkflow initiation succeeded DebugThrowWorkflow initiation failed disconnectswConn is nullNeed to login againconsoleprintlnstackunregisterReviewdoc handleFailure˙˙˙˙eš˙˙˙˙ÁšcxttaskData!í ”í čcT ¸ ä;5ä:QˆڈO setTaskStatus AnnotsString.IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_SUCCESS˙˙˙˙ÁšcxttaskDataŽí î ěcT ¸ ä;5ä:QˆڈM setTaskStatus AnnotsString,IDS_SHARED_REVIEW_INVITE_SHARED_REVIEW_ERROR˙˙˙˙ÁjšdocNameresultescapedLî Mď ňcTWQ9âäTä:WQVTAV ¸ ä ä=ä:WQV ¸ ä ä=ä:WQV—֐•ˆސˆސˆŒescapereplace00$1\%u\%([0-9A-F][0-9A-F])˙˙˙˙Á3š pď Bđ ţcA ¸ äA55ä:QA ¸ äA55ä:Qˆِˆو: setTaskStatus oProgressInfo cTaskStatussetTaskProgressnPercentComplete˙˙˙˙Á‰šHÔtdialogdataidtoLoadtoEnable^đ !ű d A5WQA ¸ äV5ä:=V5WQA5A5 ¸ äAä:QVYV5V5 V5 V5 5 7] V5 ¸ ä=ä:]V5 ¸ ä=ä:];äR]T]V]\6QVB6QAT6Q; ¸ ä:QV5==V5V55 ¸ äVäV5 5ä:6QV5= 4AA5" ¸# äVäV5 5ä:6!Q#AYY>]$\]%\6!Q; ¸& ä:QY='](\WQYV5)]*B]+B],\WQ9-â-ä=.ä:Q9/â/äA5!ä:Q90â0ä=1V5=2V53ä:QV5=2A54A54Ů$95â5äA56ä:8Q5V5 šA54A54Ů$95â5äA57ä:8Qˆ˙˙˙˙ ^V53x=8y=9y=:y z2A54A54Ů$95â5äA56ä:8Q’9-â-ä=;ä:QA54A54Ů$95â5äA5<ä:8QA54A54Ů$95â5äA57ä:8QA54A54Ů$95â5äA5=ä:8QV5= NV5>=?EQV5>=@'T ¸A äYB]+B],\ä:QT ¸B äVä:QT ¸B äY;C5D]+\ä:QT ¸E äVä:QA5=G6FQĘč•ˆԐˆ“•Č íŢŢĎČĎˆʐˆʐˆѐÎ•ˆřÎ/•ˆˆސˆѐÔăˆՐˆ֐ˆ퐐Î-•ˆѐܐˆÉ€••ˆѐאˆ Ę•Č`Q‘m •m •mʘ€d:ˆѐאPʘ€dDˆՐˆ萈萈萐Î•â•ˆ␐ˆӐˆ合ӐˆшdatagetAsciiSafeDocName cDocumentName__reviewID oProgressInfo setHandlercompleteUseDocumentCenterdcDriverdriversserverURLdriverreqRjoin;tooptRccDateinitDateoDialogid shouldRetryapp beginPriv reviewTypeSharedReviewEmail sourceURLgetInitiatorSourceSettings SharedReviewoTaskSetoDrivergetWorkspaceCreatorlengthaTasksendPrivdescbWorkspaceSetuptaskokcancel DebugPrintlnCurrent task set is: ANDumpObj DebugAlertinti email task  + distributionMethodaCompleteTasksANTrustPropagateAlloSendEmailTasksoSaveFileTasksEMAILUPLOADMANUAL$creating workspace for shared reviewoDocCenterTasks_createWorkspaceoDocCenterTasks_completeactionChangeDeadline AddReviewersvisibleload AnnotsStringIDS_OKenablestateRUNNING˙˙˙˙ÁEš statusmsg@ű üű [d;5 ¸ ä äTä:WQA5 ¸ äYV]\ä:Qăˆáˆ! AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEreplaceoDialogloaddesc {cStatus}˙˙˙˙ÁJš nPercentnSegLen nCompleteü ý bd×dA ¸ ä:WQA5T×dWQA5 ¸ äYVV]\ä:QÓŃˆĺˆ3 getNumTasks nCurrentTaskoDialogloadprog˙˙˙˙Á…šnIdx3ý °ţ jd>A5EQA5A55ŮA55A57GA55ŮA5+A5A55ŮWQA5V7ĺ•ˆؐוŰˆˈ! nCurrentTaskoTaskSetaTaskslengthaCompleteTasks˙˙˙˙Áš Íţ ƒ˙ vdA55ŮA5ِˆ݈BoTaskSetaTaskslengthaCompleteTasks˙˙˙˙Ápš Ł˙ Ő |d†A ¸ ä>ä:QA ¸ ä: ¸ äAäA5ä:QA55=A ¸ ä×dä:QĆvWQǐ‘ˆϐˆáŃ•ˆĐx•Ę€{–ˆsetTaskProgressgetCurrentTaskrunTaskoTaskSetdatastateRUNNING˙˙˙˙e[˙˙˙˙Á'šB#ô A ŒdA ¸ ä: ¸ äAäA5ä:QA 5# ?… 6QQA5A ¸ ä:ĐA5C6Qˆ˙˙˙˙5=AA ¸ ä; 5 ä:QA5 ¸ äYC]\ä:QUˆ˙˙˙˙5=;5 ¸ ä äT5ä:WQA ¸ äVä:QA ¸ ä: ¸ äAäA5ä:QA5 = 6 QA5 ¸ äY;5]\ä:QA5 ¸ äYC]C]\ä:QA5 ¸ äYC]C]\ä:QA>6QA ¸ ä>ä:QĆvWQǐ‘Ý•čˆѐˆᐈѐˆ萈合合ȐˆĎx•Ę€{–ˆ undefinedtext AnnotsString IDS_SHARED_REVIEW_COMPLETE_ERRORreplace setTaskStatusgetCurrentTask onFailureoTaskSetdatastateRETRYoDialogload IDS_SHARED_REVIEW_COMPLETE_RETRYokvisiblecancelenable nCurrentTasksetTaskProgress˙˙˙˙e%error%˙˙˙˙ÁÄš = dialog2 ń ĂdA55x=y=y5zŁA>6QA5=6QA5C6QxA5B6Qˆ˙˙˙˙5=Mˆ˙˙˙˙5= EQˆ˙˙˙˙5= T ¸ ä= ä:QË`€¸‘m €dÍmʘ€dǐˆȐˆѐˆ͐P•ˆ͐Ô•î•ˆՐP•ˆdatastateRETRYRUNNING nCurrentTask shouldRetry reviewType SharedReviewactionChangeDeadline AddReviewersendok {cStatus}%error%Ť\˙˙˙˙ÁNš#Ş#data initiator localPath initiationURLdriver dataSetPathsavePathdistributionMethodinviteesccsubjectbodysentDateIWStatusparamsq Ű (e9âä=ä:Q9âä=ä:Q; ¸ ä:Q;5WQ; ¸ ä:Q=WQ=WQ=WQ=WQ=WQ9âä= Vä:QVQT5 x= y= y= yz%?WQ×WQ×WQ=WQ=WQ=W Q=W Q=W Q?W Q9âäT5ä:QT5 ¸ ä=ä:WQT5 ¸ ä=ä:WQT5W QT5W Q9âäVä:Q;äRW Q9âä=ä:QYV]V]V]V ]V ]V ]V]V]V]V]V] V] V ]!\W Q9âä="ä:QV ˆՐˆՐˆѐΐˆѐÉÉÉÉÉˆِ”Č`D‘m €e?m €eCmʘ€e;ˆ•P•ˆ–P•ˆ–P•ÉÉÉÉÉ•ˆؐˆݐˆݐˆ̐ˆ̐ˆӐˆΐˆՐ•ČČČČČČČČČČČČÍˆՐˆŒ DebugAlert'begin CBFormDistributionEmailComplete()1app beginPrividentityemailendPriv3distributionMethodEMAILUPLOADMANUALreqRjoin;optRsubjmsgDate5 initiatorinviteesccsubjectbodysentDatedriver initiationURL localPathsavePath dataSetPathIWStatusend form distribution complete˙˙˙˙ÁKš<-Xdata initiator originalPath initiationURLdriver dataSetPathsavePathdistributionMethodinviteesccsubjectbodysentDateIWStatus swConnect sessionIDsecret accessLevelcopyTo sessionInfocopyMeallowAnonymousparams  š oe9âä=ä:Q9âä=ä:Q; ¸ ä:Q;5WQT5WQ9âäT5ä:Q9âäVä:Q9âä=ä:QVQVQT5 WQT5 WQ; ¸ ä:Q9âäT5 ä:Q9âäVä:Q9âä= ä:QVQT5 x=y=y=yz%?WQ×WQ×WQT55WQV ¸ ä ä=ä:WQT5C:; ¸ ä:Q;5WQ; ¸ ä:QT555WQ=WQ=WQ=W Q=W Q=W Q?W QT5C×W QeT5 ¸ ä=ä:WQT5 ¸ ä=ä:WQT5 W QT5!W Q;"äRW Q@W Q@WQ@WQ@WQ@WQT5CĂT5#W Q; ¸ ä:QV ¸$ ä:WQ; ¸ ä:QV5%WQV5&WQ;' ¸( äT5)ä:WQCWQ; ¸ ä:Q;5*WQ; ¸ ä:QVT5+WQT5, WQ9âä=-Vä:QYV].V]/V]0V ]1V ]2V ]3V]4V]5V]6V]7V]8V] V],V]%V]&V])V ]9V]:\WQ9âä=;ä:QVˆՐˆՐˆѐΐ̐ˆؐˆӐˆՐ””̐̐ˆѐˆؐˆӐˆՐ”Č`D‘m €eŠm €eŽmʘ€e†ˆ•P•ˆ–P•ˆ–P€ešˆѐˆސĘ5•ˆѐˆΐˆ֐ˆ֐ÉÉÉÉÉ•Ę •ˆːˆݐˆݐˆ̐ˆ̐ˆΘ€eť•••••Ę•ˆ̐ˆѐҐˆ ѐˆ̐ˆ̐ˆݐ•ˆѐˆΐˆ ѐ •ˆ̐ˆ͐ˆِ•ČČČČČČČČČČČČČČČČČÍˆՐˆŒ DebugAlert"begin CBFormDistributionComplete()1app beginPrividentityemaildocPath2 cDataSetPath cDocumentPathendPriv3distributionMethodEMAILUPLOADMANUALserverURLreplaceFormsUseDocumentCenterCollab docCenterURLSettingscSettingplaceSubmitButtonreqRjoin;optRsubjmsgDateswConngetSessionInfo sessionIDsecretMathabs accessLevelcopyMeuserallowAnonymous5 initiatorinviteesccsubjectbodysentDatedriver initiationURL originalPathsavePath dataSetPathIWStatuscopyToend form distribution complete SharedReview˙˙˙˙ÁČš/ł*wizData serverDesc description maxDescStriserverid CBSharedReviewMakeSelectFunctionô „0 ňeZ\WQYY\]@]B]\WQ=WQT5KĘmMWQVŮ×  ˇT5V7WQ=VWQV5VV8QVVŮY=]V] = ] V5 ] \8Q‚WQÔäVäVä:QV5ŮVŮV5WQăL˙˙˙8NV‚6QV‚6QV‚6QV‚6QVZY=];5] C];5]\`Y=]= ] =]\`Y=]C]=] ;5!] \`Y="]=#]$V]%\`Y=&];5'] =(])ZY=]=#]$=*] C]V] ;5]\`\]%\`\6Q;+ ¸, ä:Q9-â-äVä:WQ;+ ¸. ä:QVÉ•Ë–ːÉĘ0€ÍːËE•ĐÍˆАˆː•ĘČĘĐÉ˜€fˆѐÖ•ˆՐˆΘ€f#ˆΘ€f:ˆΘ€fbˆΘ€foˆ“”•ĘĎ–Ԑ•ĘĘĎ•Ę–ʐԐ•ĘĘÍ•ĘĎĘ”•ĘĘĘ–Čć˜€f™ˆѐˆ֐ˆѐˆŒserverControlsselected hasUserNameserverslengthsvrradiotypeitem_idsrvrgroup_id initiatorNamenameinitiatorDescriptionidle initializecommit didSelect description static_text AnnotsString.IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_STEP_TEXT wrap_nameCollab wizardWidthwidth edit_text align_fill alignmentbolddialogfont*IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_TITLEview align_topalignelementscluster0IDS_SHARED_REVIEW_SELECT_SERVER_TYPE_DESCRIPTION align_rowalign_childrendescapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áš @instancekey4# Ś# fTˆ˙˙˙˙‚8QˆӐˆ˙˙˙˙Ášdialogg#  # fA ¸ äTäˆ˙˙˙˙ä:Qˆۈ didSelect˙˙˙˙Á“š  dialognamenexty$ …% fT ¸ ä:5WQV;E:QVŮ>E*QV ¸ ä ä:@EQA5@WQAA55V6QT ¸ äYV] \ä:Q×˙Ȑˆ֐ˆވstorename undefinedlengthmatchselected hasUserNameinitiatorDefaultNameenablenext^\s+$˙˙˙˙ÁÓš 7dialogtoLoad selection­% ”' #fY=]\WQ=WQA55Ĺ=rA555Ĺ=VA5556QA555Ĺ=!A555WQAC6QVVC8QT ¸ äVä:QA ¸ äTäVä:QÔÉˆŇ•ˆ×•ˆِˆ×•ˆԐˆȘ€f4ˆɐˆӐˆՈ"C_Info_Xl_N.pngtip1svr0datatoAdd undefinednametype hasUserNameload didSelect˙˙˙˙Áîšg=dialognextserversiservermsg¸' b+ :f T ; ¸ ä:Q;5WQ; ¸ ä:QnT ¸ ä:5oQ;Ů×<c; ¸ ä:Q; ¸ äY; 5 ] \ä:Q; ¸ ä:Q9 â ä=ä:QVKĽmMWQVV7WQ;V5; 5 ¸ ä ä;ä:WQ; ¸ ä:Q; ¸ äYV] \ä:Q; ¸ ä:Q9 â ä=ä:QăL˙˙˙]NA5@iA5Y\6QA55A56QA55T ¸ ä:56QA55A56Qˆ ’ˆѐΐˆѐˆސÍ•ˆѐˆ琈ѐˆՐ5€¨ËËÎ•ĺˆѐˆŕˆѐˆޘ€fYČ•ˆҐˆאˆ䐈׈'app beginPrivCollab reviewServersendPriv server_namestorenamelengthalert AnnotsString&IDS_SHARED_REVIEW_SERVER_NAME_TOO_LONGcMsg DebugThrowServer Name too longUI(IDS_SHARED_REVIEW_SERVER_NAME_NOT_UNIQUEreplaceServer Name not UniqueselecteddatatoAddservertype selectedID\{cServerName\}Ó¨˙˙˙˙Ámš dialogidtoLoad‰+ Ÿ, bfAT6QAA5T76QY\WQA5 VA556QVA556QT ¸ äVä:Qˆʐˆѐʐˆ•ˆԐˆԐˆӈ selectedIDselectedserverControls hasUserNamenameinitiatorDefaultNamedescinitiatorDescriptionloadBÍ˙˙˙˙Áuš dataWizdriverdescŔ0 š1  f ; ¸ ä:QT55WQ9âäV ¸ ä:ä:WQT5V ¸ ä:6QV; ¸ ä:Qˆѐѐᐈܐˆ”ˆшapp beginPrivtoAddserverANTrustPropagateAllgetInitiatorConfigconfig getSettingendPriv˙˙˙˙Ápš+ cSourceURLpos searchPosĆ1 Ë2 ŤfTŮ×WQVQVWQ4mT ¸ äVä:= V# ?WQQăV?˙˙˙ĘT ¸ ä>äVä:Ď”ˆ&4(;–ˆŮE€fŻˆ(̘€f°˜€fŻˆ̐ˆՈ&lengthcharAt/substr;˙˙˙˙Á Ůš QŞv cReviewIDdoc cDriverURI bReturningtitlewidth reviewInfo oServerIconoSharedReviewIconurlbIsAcrobatDotComresultdecodedFileName description 3 Dc ľf†T;5;5WQXXWQ; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:Q; ¸ ä= ä:Š˙˙˙˙Q; ¸ ä= ä:Š˙˙˙˙Q; ¸ äV5 ä:WQ; ¸ ä:Q; ¸ äV5 ä:Š˙˙˙˙Qˆ˙˙˙˙V;56Q'V; ¸ äV5ä:6Q; ¸ ä:QYT ]B]\Š˙˙˙˙Q@WQ†9âäT5ä:WQ3ĆvW Q9âäT5ä:WQÇV DQV'=T5WQYV]ˆ˙˙˙˙]V]ˆ˙˙˙˙]Y\]B]‚]‚]‚]‚] ‚]!‚]"YV]#V]$ZY=%]&ZY=%]&='](ZY=)]&=*]+ˆ˙˙˙˙5$]$ˆ˙˙˙˙5,],\`Y=-]&=.]+=/]0=1]2×V×]$×],\`\]3\`Y=%]&='](ZY=4]&XŒ]5×V×]$ZY=-]&;56]#=7]0×],\`Y=-]&=8]+×V×]$\`Y=-]&=9]+×V×]$\`Y=-]&=:]+×V×]$\`Y=-]&=;]+×V×]$\`\]3\`Y=4]&=<]=V×]$XŒ]5ZY=-]&;5>]#=7]0×],\`Y=-]&=#]+=1]2V×]$\`Y=-]&=?]+=1]2V×]$\`Y=-]&=@]+=1]2V×]$\`\]3\`\]3\`Y=%]&=A]==A](V]$ZY=B]&=C]+=A]=XŞ],\`\]3\`Y=%]&='](ZY=)]&=D]+ˆ˙˙˙˙5$]$ˆ˙˙˙˙5,],\`Y=-]&=E]==F]0C]G;5H]#\`Y=-]&=E]=V5]#\`\]3\`Y=%]&='](=A]=ZY=I]&=J]+;5K]#\`Y=L]&\`\]3\`\]3\`\]3\]M\W Q; ¸ ä:Q9NâNäV ä:W Q; ¸O äV ä:Q; ¸ ä:QV ¸P ä:QV 5ĆvW Qǐ‘•ĎÎ—ˆѐؐˆѐŕŕÝˆѐăÉ•ˆؐˆ␈ѐ•ˆɐј€fؕ‘ˆ Űx•Ęˆ ۀ{–ˆ ʈĘ•ˆ ̐•ČÎČÎË–Ę˜€gʘ€gʘ€g ʘ€gʘ€g9ʘ€gĕȐȐ”•Ę”•ĘĘ”•ĘĘÓŘ•ĘĘĘĘÎ×˜€gâ•ĘĘ”•ĘČÎ”•ĘĎĘĚ•ĘĘÓ•ĘĘÓ•ĘĘÓ•ĘĘŢ˜€h •ĘĘËČ”•ĘĎĘĚ•ĘĘĘĐ•ĘĘĘĐ•ĘĘĘć˜€h,•ĘĘĘČ”•ĘĘĘŘ˜€h;•ĘĘ”•ĘĘÓŘ•ĘĘĘ–Ԑ•ĘĘÝ˜€hT•ĘĘĘ”•ĘĘÔ•ö˜€hjˆѐˆ֐ˆՐˆѐˆϐˆÉx•Ę€{–ˆ AnnotsString(IDS_SHARED_REVIEW_STATUS_RETURNING_TITLE&IDS_SHARED_REVIEW_STATUS_INITIAL_TITLEapp beginPrivCollab getReviewInfoendPrivgetIconAX_Server_Lg_N.pngA_SendForSharedReview_Xl_N.pngutilcrackURL cReviewURLisDocCenterURLcHostIDS_TRACKER_ACROBAT_DOT_COMgetFullyQualifiedHostname bDoPublishbDoNotShowWelcomeDialog decodeURIdocumentFileNameunescapestring reviewInforesultbAcrobatDotComoDialog bUpdatedOnce initializecommitdidUpdateReviewhaveUpdatedOncesetIdentityInfosetReviewersInfonamewidthviewtype align_rowalign_childrenimagericoitem_idheight static_textrtxttitlefont truncate_endtruncateelementsclusterdheight&IDS_SHARED_REVIEW_STATUS_REVIEW_STATUSheadingsDftsDedsComsRev align_top alignment)IDS_SHARED_REVIEW_STATUS_REVIEWER_PROFILEtitlmail align_fillmclvlistsico align_leftdialogbold&IDS_SHARED_REVIEW_STATUS_REVIEW_SERVER check_boxsrweIDS_DONT_SHOW_AGAINok descriptionANTrustPropagateAll execDialog setHandler˙˙˙˙e˙˙˙˙Á´š+dialogprops\9 Ě: ífA5 ¸ äAä:QYˆ˙˙˙˙]ˆ˙˙˙˙]A55]\WQT ¸ äVä:QA ¸ äTä:QA ¸ äTä:QAT6 QT ¸ ä= ä:QT ¸ ä= ä:QˆԐ•ÎÎŐˆӐˆѐˆѐˆʐˆՐˆՈ reviewInfo setHandlersicoricoresult bDoPublishpublloadsetIdentityInfosetReviewersInfooDialog makeDefaultokfocus˙˙˙˙Á?š dialogä: q; gA5T ¸ ä:56QA5T ¸ ä:56Qˆߐˆ߈=result bDoPublishstorepublbDoNotShowWelcomeDialogsrwe˙˙˙˙Áš ’; ě; gAC6QA ¸ äA5ä:QˆȐˆԈ$ bUpdatedOncesetReviewersInfooDialog˙˙˙˙Áš< a< gA5ˆ bUpdatedOnce˙˙˙˙ÁCšOdialogparamsƒ< @ g; ¸ ä:Qˆ˙˙˙˙CsY;5];5];5]\WQV5= $VV56QV= 6Q”Y; 5]; 5 ]; 5 ]\WQV5= V; 5 6QV5= $VV56QV= 6Q; ¸ ä:QT ¸ äVä:QˆѐËn••ĎĎÔÎ•ˆ ѐˆ Ә€g$•ĎĎÔÎ•ˆ ӐÎ•ˆ ѐˆ ΐˆѐˆӈapp beginPriv shareIdentityFullNamenameTitletitlEmailmailidentitytitleemail loginNameendPrivload˙˙˙˙Á›šF5 dialog reviewInfo oReviewersnActiveReviewersparamsoStatusicNamecTitle nComments nNewCommentscommentsrowheadingnDraftCommentss)@ S 9gA5WQV5WQ>WQYYZY=];5]<]\`Y=];5]<]\`Y= ];5 ]<]\`Y= ];5 ]<]?] \`Y=];5]<]\`\]Z\]\]\WQY;5];5];5];5]\WQVK™mMWQV;EQV=vVV75WQV;=WQVV75WQV;=WQVV75WQVV75 W QV;V# ?WQQ>WQ>W QV Q;5!W QV ¸" ä ä=#Vä:W QV ¸" ä äV =#ä:W QVV75$ =W QYV]V]V] =V ] VVV75%7]\W QV55V55Ů&V 8QăL˙˙ţiNV5'=(b;5)W QV ¸" ä äA5*ä:W QVV 6+QV;- ¸. ä=/ä:6,QďV5'=0b;51W QV ¸" ä äA5*ä:W QVV 6+QV;- ¸. ä=2ä:6,Qˆ˙˙˙˙53;54;55W QV ¸" ä äA5*ä:W QVV 6+QV;- ¸. ä=6ä:6,QV57W QV5'=(t;58WQV >;59WQV ?;5:WQVV ¸" ä ä=V ä:6;Qj;5=WQV ?;5=WQVV ¸" ä ä=V ä:6;QVV5?6>Q;5@WQV ¸" ä ä=V5 ä:WQVV ¸" ä ä=V5ä:6AQ;5BWQV ¸" ä  ä=Vä:WQVV ¸" ä  ä=V5Dä:6CQV5;=FVV5>6;QVV5A6>QVV5C6AQV=6CQT ¸E äVä:QĘĚ•••”íííóóŐ˜€gQ•ĎĎĎÔ5€œËŘ•ĐÉɐĐÉɐĐĐÉ•ˆѐˆ•ˆ•”ˆΐˆ ␈␈ Í•ˆ ɐ•ČČČÎÚˆ혀g„Î]•Îˆߐˆ̐ˆ䐐Î]•Îˆߐˆ̐ˆ䐐Î•ĎÎˆߐˆ ̐ˆߐĚÎo•Î Ӑ %ΐˆ쐐Î ΐ %ΐˆ琐ˆѐÎˆ琈쐐ΐˆ␈쐐Î•ˆѐˆѐˆѐˆΐˆӈ reviewInfo oReviewersEmailName AnnotsStringIDS_SHARED_REVIEW_STATUS_EMAILUIwidthIDS_SHARED_REVIEW_STATUS_NAMETitleIDS_SHARED_REVIEW_STATUS_TITLEComments!IDS_SHARED_REVIEW_STATUS_COMMENTS JustificationStatusIDS_SHARED_REVIEW_STATUS_STATUSaColumnsaRowslist#IDS_TRACKER_REVIEWER_TYPE_INITIATOR Initiator"IDS_TRACKER_REVIEWER_TYPE_REQUIREDRequired"IDS_TRACKER_REVIEWER_TYPE_OPTIONALOptionalIDS_TRACKER_REVIEWER_TYPE_ADDED Uninvited undefinedcNamecTitle nComments nNewComments#IDS_SHARED_REVIEW_STATUS_N_COMMENTSreplace bHasParticipatedcStatuslengthcStateEnded&IDS_SHARED_REVIEW_STATUS_ENDED_HEADINGdocumentFileNamertxtricoCollabgetIcon#A_ReviewEndedReviewFile_45x45_N.png Corrupted*IDS_SHARED_REVIEW_STATUS_CORRUPTED_HEADING'A_ReviewCorruptedReviewFile_45x45_N.png bDoPublish(IDS_SHARED_REVIEW_STATUS_INITIAL_HEADING*IDS_SHARED_REVIEW_STATUS_RETURNING_HEADINGA_SendForSharedReview_Xl_N.pngnDraftComments9IDS_SHARED_REVIEW_STATUS_MANY_DRAFT_COMMENTS_REVIEW_ENDED9IDS_SHARED_REVIEW_STATUS_ZERO_DRAFT_COMMENTS_REVIEW_ENDED8IDS_SHARED_REVIEW_STATUS_ONE_DRAFT_COMMENTS_REVIEW_ENDEDsDft,IDS_SHARED_REVIEW_STATUS_MANY_DRAFT_COMMENTS+IDS_SHARED_REVIEW_STATUS_ONE_DRAFT_COMMENTSsDedcDeadlineWelcomeString)IDS_SHARED_REVIEW_STATUS_COMMENTS_WELCOMEsCom*IDS_SHARED_REVIEW_STATUS_REVIEWERS_WELCOMEsRev nNewReviewersload%totalComments% %newComments% %filename% %filename% %filename%%num%%num% %newComments%%totalComments% %activeNum%%num%{œĐ?Đ?333333Ă?q= ףpÍ?¸…ëQ¸ž?˙˙˙˙eÄv ˙˙˙˙ÁOš<1I bCanCancel labelWidthidFields descriptionzc ›w {h X,WQZY=];5]=]C]=] \`Y= ]× ] \`Y=];5 ]=]=] \`Y= ]=]V]=]\`\WQ9âä: ‰V ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`\ä:WQëV ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`Y=]=]=] ;5]\`Y= ]=]V]=]\`\ä:WQV ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`Y=]=]=] ;5]\`Y= ]=]V]=]\`Y= ]×]\`Y=]=]=]?]\`Y=]= ]!="]ZY=#]=$]× ]× ] \`Y=];5%]\`\]&\`YT=' =(]\`\ä:WQYB])@]*9âä:]+‚],‚]-‚].‚]/‚](Y=]X];051] ;052]3;054]5ZY=]=]!V]&\`\]&\]6\WQ;7 ¸8 ä:Q99â9äVä:WQ;7 ¸: äVä:Q;7 ¸; ä:QV5)—”•ĘĎĘ–ϐ•ĘĚ•ĘĎĘĎ•ĘĘČÔ˜€h›ˆĎ€„•ˆː”•ĘĘĘÔ•ĘĘČÝ˜€h°ˆː”•ĘĘĘÔ•ĘĘČĎ•ĘĘĘÔ•ĘĘČŘ˜€hψː”•ĘĘĘÔ•ĘĘČĎ•ĘĘĘÔ•ĘĘČĎ•ĘĚ•ĘĘĘË•ĘĘĘ”•ĘĘ—̐•Ęß˜€i• 瘀i •––ӐĘ˜€i0ʘ€i?ʘ€iDʘ€iXʘ€i^•ĘČĎĎĎ”•ĘĘŢ˜€ipˆѐˆ֐ˆՐˆѐˆɈ static_texttype AnnotsString%IDS_SHARED_REVIEW_IDENTITY_SETUP_TEXTname align_fill alignmentbolddialogfontgapheight IDS_SHARED_REVIEW_IDENTITY_EMAIL edit_text align_leftwidthmailitem_idhasHankoconcatIDS_SHARED_REVIEW_IDENTITY_NAME$IDS_SHARED_REVIEW_IDENTITY_LAST_NAMElnme%IDS_SHARED_REVIEW_IDENTITY_FIRST_NAMEfnme$IDS_SHARED_REVIEW_IDENTITY_JOB_TITLEjobt"IDS_SHARED_REVIEW_IDENTITY_COMPANYcmpy separatorview align_rowalign_children align_centerimageimg1$IDS_SHARED_REVIEW_IDENTITY_PREF_TEXTelements ok_cancelokbResultoDialog bHasHanko initializeisValididlecommitCollab wizardHeight marginHeight margin_heightwizardMarginWidth margin_width descriptionapp beginPrivANTrustPropagateAll execDialogendPriv˙˙˙˙Á¨š](dialogpropsgn uq iY\WQ; ¸ ä:QV;56QV;56QV;56QV5=V; 5 6QV;5 6 QV5 =V; 5 6 QV;56QV5=V; 56QV;56QV5=V; 56QV=6Q; ¸ ä:QT ¸ ä=ä:QT ¸ ä=ä:QT ¸ äVä:QT ¸ äYB]\ä:QAT6QĘˆѐˆӐˆӐˆӐΕˆӐˆӐΕˆӐˆӐΕˆӐˆӐΕˆӐˆΐˆѐˆՐˆՐˆӐˆܐˆʈapp beginPrivfnmeidentity firstNamelnmelastNamename shareIdentityFullNamemailemailEmailcmpy corporation CorporationjobttitleTitleimg1C_Info_Xl_N.pngendPriv makeDefaultfocusloadvisiblehideoDialog˙˙˙˙Áš dialogpropsbHasNameŽq s 0iT ¸ ä:WQBWQA50V5=EQV5=WQV5=WQ9âäV5ä:E QVŇ•+•ˆ됐ˆ Ґˆáˆ.store bHasHankofnmelnmenameCBIsValidEmailmail˙˙˙˙Á/šdialog0s ~s ?i T ¸ äYA ¸ äA5ä:]\ä:Qˆîˆ4enableisValidoDialogok˙˙˙˙Áôš6dialogprops–s Tu DiT ¸ ä:WQ; ¸ ä:Q;V56QA50;V56Q;V5 6 Q;V5 6 QV5 = ;V5 6QV5= ;V56Q; ¸ ä:QAA ¸ äTä:6QŇˆѐˆӐ+•ˆӐˆؐˆ ӐÎӐ΍Ӑˆѐˆ׈$storeapp beginPrividentityemailmail bHasHanko firstNamefnmelastNamelnmenamecmpy corporationjobttitleendPrivbResultisValid˙˙˙˙Ášdialoghu “u XiT ¸ ä=ä:QˆՈendok˙˙˙˙ANValidateIdentity š;propsbHasNameÁw z xiY\WQ; ¸ ä:QV;56QV;56QV;56QV;5 6QV;5 6 QV;5 6 Q; ¸ ä:QBWQA50V5=EQV5=WQV5=WQ9âäV5ä:E QVĘˆѐˆӐˆӐˆӐˆӐˆӐˆӐˆѐ•+•ˆ됐ˆҐˆáˆ.app beginPrivfnmeidentity firstNamelnmelastNamenamemailemailcmpy corporationjobttitleendPriv bHasHankoCBIsValidEmail˙˙˙˙Ářš:D labelWidthidFields description1z Ÿ‘ ‘i X,WQZY=];5]=]C]=] \`Y= ]× ] \`Y=];5 ]=]=] \`Y= ]=]V]=]\`\WQ9âä: ‰V ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`\ä:WQëV ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`Y=]=]=] ;5]\`Y= ]=]V]=]\`\ä:WQV ¸ äZY=]=]=] ;5]\`Y= ]=]V]=]\`Y=]=]=] ;5]\`Y= ]=]V]=]\`Y= ]×]\`Y=]=]=]?]\`Y=]= ]!="]ZY=#]=$]× ]× ] \`Y=];5%]\`\]&\`\ä:WQYB]'@](9âä:])‚]*‚]+‚],‚]-Y=];.5/];.50] ;.51]2;.53]4=]!=]V]&\]5\WQ;6 ¸7 ä:Q98â8äVä:WQ;6 ¸9 ä:QV—”•ĘĎĘ–ϐ•ĘĚ•ĘĎĘĎ•ĘĘČÔ˜€iąˆĎ€„•ˆː”•ĘĘĘÔ•ĘĘČÝ˜€iƐˆː”•ĘĘĘÔ•ĘĘČĎ•ĘĘĘÔ•ĘĘČŘ˜€iĺˆː”•ĘĘĘÔ•ĘĘČĎ•ĘĘĘÔ•ĘĘČĎ•ĘĚ•ĘĘĘË•ĘĘĘ”•ĘĘ—̐•Ęč˜€j•––ӐĘ˜€jCʘ€jRʘ€jYʘ€jˆ•ĘĎĎĎĎĘĘÓ˜€j”ˆѐˆ֐ˆѐˆŒ static_texttype AnnotsString%IDS_SHARED_REVIEW_IDENTITY_SETUP_TEXTname align_fill alignmentbolddialogfontgapheight IDS_SHARED_REVIEW_IDENTITY_EMAIL edit_text align_leftwidthmailitem_idhasHankoconcatIDS_SHARED_REVIEW_IDENTITY_NAME$IDS_SHARED_REVIEW_IDENTITY_LAST_NAMElnme%IDS_SHARED_REVIEW_IDENTITY_FIRST_NAMEfnme$IDS_SHARED_REVIEW_IDENTITY_JOB_TITLEjobt"IDS_SHARED_REVIEW_IDENTITY_COMPANYcmpy separatorview align_rowalign_children align_centerimageimg1$IDS_SHARED_REVIEW_IDENTITY_PREF_TEXTelementsbResultoDialog bHasHanko initializeisValididlecommitCollab wizardWidth wizardHeight marginHeight margin_heightwizardMarginWidth margin_width descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Á¨š"tIdialogprops܄ N‰ #jY\WQ; ¸ ä:QVA55;;5A556QVA55;;5A556QVA55 ;;5 A55 6 QV5 = V; 5 6 QVA55;;5A556 QV5 = V; 56 QVA55;;5A556QV5= V; 56QVA55;;5A556QV5= V; 56QV=6Q; ¸ ä:QT ¸ ä= ä:QT ¸ ä= ä:QT ¸ äYB]\ä:QT ¸ äVä:QT ¸ äYB] \ä:QAT6!QĘˆѐˆÔ合Ô合ÔĺÎ•ˆӐˆÔĺÎ•ˆӐˆÔĺÎ•ˆӐˆÔĺÎ•ˆӐˆΐˆѐˆՐˆՐˆܐˆӐˆܐˆʈapp beginPrivfnmedata firstName undefinedidentitylnmelastNamename shareIdentityFullNamemailemailidemailEmailcmpy corporation CorporationjobttitleTitleimg1C_Info_Xl_N.pngendPriv makeDefaultfocusvisiblehelploadenablenextoDialog˙˙˙˙Áš dialogpropsbHasNameg‰ óŠ CjT ¸ ä:WQBWQA50V5=EQV5=WQV5=WQ9âäV5ä:E QVŇ•+•ˆ됐ˆ Ґˆáˆ.store bHasHankofnmelnmenameCBIsValidEmailmail˙˙˙˙Áaš dialog ‹ ɋ Rj A55=!T ¸ äYB]\ä:QT ¸ äYA ¸ äA5ä:]\ä:QŃ•ˆܐˆîˆ4data reviewTypeFormDistributionenableprevisValidoDialognext˙˙˙˙Áš}.dialognextpropsዠý YjT ¸ ä:WQTQA5=6QA5=6QA5=6QA5=6QA5=6QA5=6Q; ¸ ä:Q; V5 6 QA50; V56Q; V56Q; V56QV5=; V56QV5=; V56Q; ¸ ä:QAA ¸ äTä:6QłA5V5 6QA52A5V56QA5V56QA5V56QV5=A5V56QV5=A5V56QŇ€L•ˆѐˆѐˆѐˆѐˆѐˆѐˆѐˆӐ+•ˆӐˆؐˆ ӐÎӐ΍ӐˆѐˆܐˆԐ-•ˆԐˆِˆԐÎԐÎԈstoredataemailid firstNamelastNamename corporationtitleapp beginPrividentityemailmail bHasHankofnmelnmecmpyjobtendPrivbResultisValid˙˙˙˙Á ‰š ;őY cReviewID cSourceURLdocurlhostFQHNbIsAcrobatDotComoIcontitledecodedFileNamebody descriptionres①  œj†; ¸ äTä:WQVQ; ¸ ä:Q; ¸ äTä:WQV;5WQ"; ¸ äV5 ä:WQ; ¸ ä:Q; ¸ ä= ä:Š˙˙˙˙Q;5 WQV ¸ ä ä;5=;5;5ä:WQ@WQ†9âäT5ä:WQ3ĆvW Q9âäT5ä:WQÇV DQV'=T5WQ;5WQV ¸ ä äVä:WQV ¸ ä äVä:WQ9âäVä:WQYB]B]‚]‚]‚]‚]YV];5 ]!ZY="]#=$]%ZY="]#=&]%ZY=']#=(])ˆ˙˙˙˙5!]!ˆ˙˙˙˙5*]*\`Y=+]#C],;5 ]!V]\`\]-\`Y="]#=&]%=.]/ZY=0]#=]);51]\`Y=2]#=.]/\`Y="]#=&]%=3]/ZY=4]#;55]=])\`Y=4]#;56]=])\`\]-\`\]-\`\]-\`\]-\]7\WQ; ¸ ä:Q; ¸8 äVä:Q; ¸ ä:QYV5]9V5]:\WQVĆvW Qǐ‘Ř”ˆѐؐ•ˆӐˆݐˆѐŕÎˆá昀j˛•‘ˆ Űx•Ęˆ ۀ{–ˆ ʈĘ•ˆ ̐Îˆܐˆܐˆ֐•––Ę˜€jÍʘ€jŃʘ€j×ʘ€jݕȐϐ”•ĘĘ”•ĘĘ”•ĘĘÓŘ•Ę–ĎŘ˜€jú•ĘĘĘ”•ĘĘÔ•ĘĎ•ĘĘĘ”•ĘĎĎ•ĘĎ˙š€k#ˆѐˆՐˆѐ•ÍŇˆ|•Ę€{–ˆutilcrackURLapp beginPrivCollabisDocCenterURL AnnotsStringIDS_TRACKER_ACROBAT_DOT_COMgetFullyQualifiedHostnamecHostendPrivgetIconA_SendForSharedReview_Xl_N.pngIDS_SHARED_REVIEW_SECURE_TITLEreplace viewerTypeReaderIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBAT decodeURIdocumentFileNameunescapestringIDS_SHARED_REVIEW_SECURE_BODYCBSetProductVariantbResultbdoNotShowConnectDialog initializesrcocontcnclname wizardWidthwidthviewtype align_leftalign_children align_rowimagesImgitem_idheight static_text wrap_nameelements align_fill alignment check_boxIDS_DONT_SHOW_AGAINgap align_rightbutton IDS_SHARED_REVIEW_SECURE_CONNECT IDS_CANCEL description execDialogresultdoNotShowConnectDialog˙˙˙˙e˙˙˙˙Á%šdialog¤— ۗ ČjT ¸ äYˆ˙˙˙˙]\ä:QˆäˆloadsImg˙˙˙˙Ášdialogń— D˜ ÍjAT ¸ ä:56Qˆڈ6bdoNotShowConnectDialogstoresrco˙˙˙˙Áš dialogX˜ ™˜ ŃjAC6QT ¸ ä:QˆȐˆψ bResultend˙˙˙˙ÁšdialogŻ˜ ֘ ×jT ¸ ä:Qˆψ end˙˙˙˙e\{cProductName\} \{cFilename\} \{cServer\}t  ˙˙˙˙Á(š,°B cSourceURLdocoWorkOfflineIconurlbIsAcrobatDotCombody description closedWithK  Š 6k; ¸ ä=ä:Š˙˙˙˙Q; ¸ äTä:WQ; ¸ ä:Q; ¸ äTä:WQVV; 5 6Q'V; ¸ äV5ä:6Q; ¸ ä:Q; 5 WQV ¸ ä äV5ä:WQ9âäVä:WQY‚]‚]‚]Y;5]ZY=]=]ZY=]=]ZY=]=]ˆ˙˙˙˙5]ˆ˙˙˙˙5]\`Y=]C];5]V] \`\]!\`\ ¸" äZY=]=#]=$]%ZY=&]; 5'] =]\`Y=&]; 5(] =]\`\]!\`\ä:]!\`\]!\])\WQ; ¸ ä:Q; ¸* äVä:WQ; ¸ ä:QVx=y=yzn+×˙o+Qn+?o+Q;+ŕŘˆѐؐ•ˆؐˆ␈ѐΐˆᐈ֐•Ę˜€kLʘ€kQʘ€kW•Ď”•ĘĘ”•ĘĘ”•ĘĘÓŘ•Ę–Ďá˜€kt”•ĘĘĘ”•ĘĎĎ•ĘĎú˜€kˆѐؐˆѐc=‘m €k˜mʘ€k“ˆ͐P•ˆ̐P•ˆŽCollabgetIcon!A_DisconnectedFromServer_Xl_N.pngutilcrackURLapp beginPrivisDocCenterURLcHost AnnotsStringIDS_TRACKER_ACROBAT_DOT_COMgetFullyQualifiedHostnameendPrivIDS_SHARED_REVIEW_OFFLINE_BODYreplaceCBSetProductVariant initializeofflonli wizardWidthwidthviewtype align_leftalign_children align_rowimagedicoitem_idheight static_text wrap_namenameelementsconcatalign_distribute align_right alignmentbutton+IDS_SHARED_REVIEW_OFFLINE_WORK_DISCONNECTED(IDS_SHARED_REVIEW_OFFLINE_WORK_CONNECTED description execDialogresult˙˙˙˙ÁDš dialog—˘ Ł FkT ¸ ä=ä:QT ¸ äY=]ˆ˙˙˙˙]\ä:QˆՐˆîˆAfocusofflloadC_Info_Xl_N.pngtip1dico˙˙˙˙Ášdialog#Ł PŁ LkT ¸ ä=ä:QˆՈendoffl˙˙˙˙ÁšdialogfŁ “Ł QkT ¸ ä=ä:QˆՈendonli \{cServer\}˙˙˙˙Áš0 FdocbDirty bMustClosebEndedbodyoSharedReviewIcon description closedWithGŠ 8¸  k;5WQT3T;5WQ;5WQdT3T;5WQ;5WQ.T;5WQ;5WQ; ¸ ä= ä:Š˙˙˙˙QYT] T] T] ‚] ‚]‚]‚]‚]Y;5]ZY=]=]ZY=]=]ZY=]=]ˆ˙˙˙˙5]ˆ˙˙˙˙5]\`Y=]C];5]V]\`\] \`Y=]=!]="]#ZY=$];5%]=]\`\ ¸& äT ; ¸ ä; 5 ¸ ä äA55ä:ä:QVpÇ; ¸ ä:Q; ¸ ä; ¸ äA55ä:ä:WQ; ¸ äVä:Q; ¸ ä:QA55EQA555 +A55 ¸! äCä:QA5@6Q×ˆϐ •ˆܐˆÝ•ˆѐ˙ •ˆՐˆѐ‘ˆѐÜN•ˆ˙ϐˆ˙Ȑˆ֐ˆŃx•ĘË•ˆůˆ„{–ˆѐńˆՐˆѐá•ˆِˆ͈storedestdatadestURL fixedDestURLfixURLmatchapp beginPrivalert AnnotsString&IDS_SAVE_INACCESSIBLE_WARNING_BBREVIEWreplace DebugThrowBBR loc upload location badendPrivdocsaveAsbCopy fileSystemWebDAVcFScPathbPromptToOverwrite URLToDiPathCollab lastBBRURLnumber%IDS_UPLOAD_FOR_BBR_FILE_UPLOAD_FAILED uriEncode stringToUTF8 launchURLhiddencloseDoc˙˙˙˙e ^http[s]?\: \{location\}^http%url%ęó˙˙˙˙Á˙šM;dialogdlgStoredest partialOKURLdtpvValbStoreOkžĹ ĆÉ ťl A55E(QA555EQA55 9A5C6Q; ¸ äY;5]\ä:QT ¸ ä:WQV5 WQA ¸ äVä:WQA55@SV6;5 ¸ ä äA ¸ äVä:ä:;5WQV5V#T ¸ äYV]\ä:Q; ¸ ä:Q;5=EXQ;5=EBQ; ¸ ä;5ä:D!Q; ¸ ä;5ä:WQ; ¸ ä:QT ¸ äYA555 EQVE QV CB]\ä:Qçˆ3Ě•ˆ͐ˆ琐ŇĚÔÍ•1•ńÎĚ•ˆސˆѐě˙‘ˆѐˆАˆאɐאˆ datadoc certifiedcertWarningPoppedappalert AnnotsString/IDS_BROWSER_REVIEW_UPLOAD_STEP_DOC_IS_CERTIFIEDcMsgstoredest URLPartialOkIDS_UPLOAD_FOR_BBR_DESTreplacefixURLIDS_UPLOAD_FOR_BBR_NO_DESTdtpvload beginPrivCollab defaultStoreNONEgetStoreNoSettingsgetStoreSettingsendPrivenablenext%url%˙˙˙˙ÁRš6'dialogpathnormUrlÚÉ ˘Ě Ýl ; ¸ ä:Q; ¸ äYC];5]A555 ] \ä:WQ; ¸ ä:QVç; ¸ ä:Q; ¸ äV5ä:WQ; ¸ ä:QV ¸ ä>ä×ä:=U;5=%=V ¸ ä×ä:WQ =V ¸ ä×ä:WQA5V6QT ¸ äYA55]\ä:Qˆѐ˙–ˆѐ •ˆѐݐˆѐŮ•Đ •ˆŕˆېˆϐˆćˆ'app beginPriv browseForDocbSave fileSystemWebDAVcFSInitdatadocdocumentFileName cFilenameInitendPrivCollab uriEncodecURL substringsmb:platformWINfile:///file:/destURLloaddest˙˙˙˙ÁšdialogśĚ đĚ ól9âä:Qˆψ CBAutoConfigCommentRepository˙˙˙˙CBRunEmailReviewWizardzšA%data startStepwizĐ Ö m T=6QT;5=6Q9âäY;5] ;5 ] ZY‚] ;5 ];5] ;5=;5;5]@]\`Y‚] ;5];5] ;5]\`Y‚] ;5];5] ;5]@]\`\]\ä:WQ9âäVäTä×˙äTä:ˆΐˆِĐĎĎ”•ĘĎĎĐăË•ĘĎĎÔ•ĘĎĎĎÚ˜€mAˆވ0 reviewTypeEBR readerEnableapp viewerTypeExchangeCBTrustPropagateWiz AnnotsStringIDS_EMAIL_REVIEW_WIZ_FINISH finishStringIDS_EMAIL_REVIEW_WIZ_TITLEtitlecreator-IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_HEADINGheading+IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_TITLE Exchange-Pro.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_PRO_TEXT.IDS_EMAIL_REVIEW_GETTING_STARTED_STEP_STD_TEXTtexttip$IDS_EMAIL_REVIEW_INVITE_STEP_HEADING"IDS_EMAIL_REVIEW_INVITE_STEP_TITLE!IDS_EMAIL_REVIEW_INVITE_STEP_TEXT)IDS_EMAIL_REVIEW_SEND_INVITE_STEP_HEADING'IDS_EMAIL_REVIEW_SEND_INVITE_STEP_TITLE&IDS_EMAIL_REVIEW_SEND_INVITE_STEP_TEXTstepsCBRunSimpleWiz˙˙˙˙ÁšdataRŃ —Ń +m9âä=äCä:ˆ׈:%CBCreateGettingStartedStepDescriptionEBR˙˙˙˙Á7š data Ó Ó 2m9âä=äBä;5= CBäCä:ˆăӈiCBCreateInviteStepDescriptionapp viewerType Exchange-Pro˙˙˙˙ÁšdatadÔ ăÔ 8m9âä;5äBä:ˆ܈t%CBCreateSendInvitationStepDescription AnnotsString1IDS_EMAIL_REVIEW_SEND_INVITE_STEP_MESSAGE_HEADING˙˙˙˙CBRunEmailApprovalWizardš$[2@data startStepbShowInitiatorEmailbShowReaderEnablebCanReaderEnablewiz6Ö €Ţ Dm T;56QT5T;56QT;56QT=6Qˆ˙˙˙˙E$QT5 EQT5 Ů > BŠ˙˙˙˙Q9 â äY;5 ] ;5]ZY‚];5];5];5 ¸ ä ä:;5;5]@]\`Y‚];5];5];5];5]\`Y‚];5];5 ];5!]@]\`\]"\ä:WQ9#â#äVäTä×˙äTä:ˆӐČ•ˆؐˆӐˆΘ€mNψŢ•ˆːĐĎĎ”•ĘĎĎŰăË•ĘĎĎĎÔ•ĘĎĎĎÚ˜€mnˆވ0 cannedSubj AnnotsString#IDS_INVITE_APPROVAL_DEFAULT_SUBJECT readerEnable cannedMsg&IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_UB(IDS_SEND_FOR_APPROVAL_MESG_CONTINUE_NOUB reviewTypeAPPraddrlengthCBTrustPropagateWizIDS_EMAIL_APPROVAL_WIZ_FINISH finishStringIDS_EMAIL_APPROVAL_WIZ_TITLEtitlecreator/IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_HEADINGheading-IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_TITLEapp viewerTypematch0IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_PRO_TEXT0IDS_EMAIL_APPROVAL_GETTING_STARTED_STEP_STD_TEXTtexttip&IDS_EMAIL_APPROVAL_INVITE_STEP_HEADING$IDS_EMAIL_APPROVAL_INVITE_STEP_TITLE#IDS_EMAIL_APPROVAL_INVITE_STEP_TEXT"IDS_EMAIL_APPROVAL_INVITE_STEP_TIP+IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_HEADING)IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_TITLE(IDS_EMAIL_APPROVAL_SEND_INVITE_STEP_TEXTstepsCBRunSimpleWiz˙˙˙˙Ášdata4Ů yŮ Wm9âä=äCä:ˆ׈:%CBCreateGettingStartedStepDescriptionAPP˙˙˙˙Á;šdataůÚ ­Ű ^m9âä;5äBäˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙ä:ˆúˆ€Š%CBCreateInviteStepDescriptionApproval AnnotsString,IDS_EMAIL_APPROVAL_INVITE_STEP_CLUSTER_TITLE˙˙˙˙ÁšdataŇÜ NÝ em9âä;5äBä:ˆ܈q%CBCreateSendInvitationStepDescription AnnotsString.IDS_EMAIL_APPROVAL_INVITE_STEP_MESSAGE_HEADING Exchange-Pro˙˙˙˙CBRunBBRReviewWizard§šH*data startStependStepwizŁŢ ƒĺ qm T=6Q9âäYT>;5;5];5]ZY‚] ;5 ] ;5 ];5 ]@]\`Y‚] ;5] ;5];5];5]\`Y‚] ;5] ;5];5]\`Y‚] ;5] ;5];5]@]\`\]\ä:WQ9âäVäTäTäTä:ˆΐĐăĎ”•ĘĎĎĎË•ĘĎĎĎÔ•ĘĎĎÔ•ĘĎĎĎÚ˜€m™ˆ߈5 reviewTypeBBRCBTrustPropagateWiz AnnotsStringIDS_NEXTIDS_BROWSER_REVIEW_WIZ_FINISH finishStringIDS_BROWSER_REVIEW_WIZ_TITLEtitlecreator/IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_HEADINGheading-IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_TITLE,IDS_BROWSER_REVIEW_GETTING_STARTED_STEP_TEXTtexttip&IDS_BROWSER_REVIEW_UPLOAD_STEP_HEADING$IDS_BROWSER_REVIEW_UPLOAD_STEP_TITLE#IDS_BROWSER_REVIEW_UPLOAD_STEP_TEXT"IDS_BROWSER_REVIEW_UPLOAD_STEP_TIP&IDS_BROWSER_REVIEW_INVITE_STEP_HEADING$IDS_BROWSER_REVIEW_INVITE_STEP_TITLE#IDS_BROWSER_REVIEW_INVITE_STEP_TEXT+IDS_BROWSER_REVIEW_SEND_INVITE_STEP_HEADING)IDS_BROWSER_REVIEW_SEND_INVITE_STEP_TITLE(IDS_BROWSER_REVIEW_SEND_INVITE_STEP_TEXTstepsCBRunSimpleWiz˙˙˙˙Ášdataîß 4ŕ |m9âä=äBä:ˆ׈;%CBCreateGettingStartedStepDescriptionBBR˙˙˙˙ÁšdataIá {á ƒm9âä:ˆψ'CBCreateUploadStepDescription˙˙˙˙Ášdata â č⠊m9âä=äCäBäBä:ˆۈ=CBCreateInviteStepDescription˙˙˙˙ÁšdataŃă Lä m9âä;5äCä:ˆ܈p%CBCreateSendInvitationStepDescription AnnotsString.IDS_BROWSER_REVIEW_INVITE_STEP_MESSAGE_HEADING˙˙˙˙Áš  reviewTypealwaysUseServerűĺ é m; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:QV;E:QV59âä=; ä:EQ;5 ;WQVˆѐؐˆј€m§Ďéˆ^Ë•ˆ ɐˆŒapp beginPrivCollabgetAlwaysUseServerendPriv undefinedUI SharedString*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAILWTisDocCtrInitAvailable˙˙˙˙CBRunSharedReviewWizardžšEPdata startStepwizalwaysUseServeroldNameoldPathnewPath startStepName6é Űü ­mT=6QT=6Qn=oQT=6Qn=oQT=6Qn=oQTB6QT5 (T= 6 Qn = o Q#T= 6 Qn = o QT;56 QT;56QTB6QTB6Q9âäY;5];5]‚];]\ä:WQNmT>$T5 D2QT5 D#QT55DQT5CBTC6Q9âäVäTä×˙äTä:QT5 =!T5•T5CTC6QTB6QTB6"Q9#â#ä=$T5ä:Q†9%â%äTä:Q?UQ'ĆvWQ>UQTC6QÇ$T?TC6Q9&â&äT5ä:WQV;'T55(WQT55)WQV ¸* ä>äV ¸+ ä=,ä:?ä:WQTV ¸. ä ä=/ä:90â0ä=1;ä:6-QTVT5-62QTV63QTB64QT535590â0ä=6;ä:TC6QTB6Q=/WQT5˘97â7ä=8ä:Q99â9äTäYC]:=;]<\ä: (97â7ä==ä:Q=>WQ697â7ä=?ä:Q9@â@äTä:Q=AWQD9BâBä:B=CWQ!9@â@äTä:Q=AWQ9DâDäVäT5ä:UQ9âäVäTä×˙äTä:QT5 =! ˘T5•T5CTC6QTB6QTB6"Q9#â#ä=$T5ä:Q†9%â%äTä:Q?UQ'ĆvWQ>UQTC6QÇăC˙˙ű´ˆΐˆΐˆАˆΐˆАˆΐˆАˆʐČ#•ˆΐˆՐˆΐˆАˆӐˆӐˆʐˆʐĐĎĎĘ˜€mŃӐ(€Q•ˆ™€mՐ€•ˆ ψ앐ˆʐˆސΕˆ’Č•Ę•ˆ ϐˆ ʐˆʐˆސ‘ˆ Ӑˆ }•Ęˆ •ˆ ʀ{˘€mő •ˆ ʐŰÉ•ŃŃëˆţˆՐˆ̐ˆʐč•ˆ ϐˆ ʐÉČ€•ˆ Րˆ ę#•ˆ Րˆ ΐˆՐˆ Ӑˆ Θ€n"Đ•ˆ ΐˆ Ӑˆ ɐˆߐˆސΕˆ —Č•Ę•ˆ ϐˆ ʐˆʐˆސ‘ˆ Ӑˆ }•Ęˆ •ˆ ʀ{ž€mԈȘ€nGˆŠ reviewType SharedReviewWT_SRDT_REVIEWST_YOU_MAYUseDocumentCenter readerEnableUB_UB_NOUB cannedSubj AnnotsString(IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_SR cannedMsg/IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAILdocAlreadyOpened delayOpenDocCBTrustPropagateWiz IDS_FINISH finishStringIDS_SHARED_REVIEW_WIZ_TITLEtitle stepFilterIWStepsstepsdocPathdocisInCollectionCBRunSimpleWizNewresultddoc checkSize DebugPrintlnDFile already opened, so use it for shared review :). data.docPath = IWBrowseDocStepCommitWorkgetAlwaysUseServerValue undefineddocumentFileNamepath substring lastIndexOf/ cDocumentNamereplace SharedStringIDS_SHARED_REVIEW_FILE_EXT cDocumentPathserveraddInternalServerUI*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL DebugAlerttstart shared review skip browsdoc step use dc done dist server commit work now checking if silent is possible or notSilentDocCenterLoginbShowProgressMonitor9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comcDriverSilent login: unsuccessfulIWSharedReviewDocCenterLoginSilent login : successful DistributionServerStepCommitWorkIWEmailStepDescriptionANValidateIdentityIWIdentityDialog GetStepNum˙˙˙˙ÁšdatastepNum1ě ě ËmT5=E QTאˆۈ=distributionMethodMANUAL˙˙˙˙e˙˙˙˙e.pdf$JQT0˙˙˙˙CBRunFormDistributionWizard‰šMËedata startStepwizdocalwaysUseServeroldNameoldPathnewPath startStepNameý Ÿ JnT=6QT=6Qn=oQT=6Qn=oQT=6Qn=oQTB6QT= 6 Qn = o QT; 5 6 QT; 56QTB6QTB6Q9âäY; 5]; 5]‚];]\ä:WQimT>”; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVEQV5EQT5 C"TV56!QTV6"QT5! DQT5CBTC6Q9#â#äVäTä×˙äTä:QT5$=%T5!ŽT5CTC6QTB6QTB6&Q9'â'ä=(T5!ä:Q†9)â)äTä:Q?UQ@ĆvWQV=*˜Ç™>UQTC6QÇĎT?ĹTC6Q9+â+äT5ä:WQV;,¤T5"5-WQT5"5WQV ¸. ä>äV ¸/ ä=0ä:?ä:WQTV ¸2 ä ä= ä:93â3ä=4;ä:=561QTVT5166QTV67QTB68QT575993â3ä=:;ä:TC6QTB6Q= WQT5˘9;â;ä=<ä:Q9=â=äTäYC]>=?]@\ä: (9;â;ä=Aä:Q=BWQ69;â;ä=Cä:Q9DâDäTä:Q=EWQĐ9FâFä:B=GWQ­T5759; 5H&9DâDäTä:Q=IWQoT575993â3ä=J;ä:&9DâDäTä:Q=KWQ!9DâDäTä:Q=EWQ9LâLäVäT5ä:UQ9#â#äVäTä×˙äTä:QT5$=% ťT5!ŽT5CTC6QTB6QTB6&Q9'â'ä=(T5!ä:Q†9)â)äTä:Q?UQ@ĆvWQV=*˜Ç™>UQTC6QÇăC˙˙ú™ˆΐˆΐˆАˆΐˆАˆΐˆАˆʐˆΐˆАˆӐˆӐˆʐˆʐĐĎĎĘ˜€ngӘ€nk(€l•ˆ™€nl€•ˆѐԐˆѐá•ˆѐˆ̐ˆ Ů•ˆ ʐˆ ސΕˆ’Č•Ę•ˆ ϐˆ ʐˆʐˆސ‘ˆ Ӑˆ }•ĘÉ •ˆzɐˆ •ˆ ʀ{˘€nœ •ˆ ʐŰÉ•ŃŃëˆ˙•ˆՐˆ̐ˆʐč•ˆ ϐˆ ʐÉČ€•ˆ Րˆ ę#•ˆ Րˆ ΐˆ Րˆ Ӑˆ Θ€nɐĐ•ˆ ΐŘ!•ˆӐˆΐč!•ˆӐˆΐˆ Ӑˆ ɐˆߐˆސΕˆ —Č•Ę•ˆ ϐˆ ʐˆʐˆސ‘ˆ Ӑˆ }•ĘÉ •ˆzɐˆ •ˆ ʀ{ž€nkˆȘ€oˆŠ reviewTypeFormDistributionWT_FDDT_FORMSST _HOST_FORMSUseDocumentCenterUB cannedSubj AnnotsString(IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_FD cannedMsg,IDS_SHARED_REVIEW_PREVIEW_INVITE_DC_EMAIL_FDdocAlreadyOpened delayOpenDocCBTrustPropagateWiz IDS_FINISH finishStringIDS_SHARED_REVIEW_WIZ_TITLEtitle stepFilter IWFDStepsstepsapp beginPrivCollabGetActiveDocIWendPrivpath selectFiledocPathdocCBRunSimpleWizNewresultddoc checkSize DebugPrintlnDFile already opened, so use it for shared review :). data.docPath = IWBrowseDocStepCommitWorkhaltgetAlwaysUseServerValue undefineddocumentFileName substring lastIndexOf/ cDocumentNamereplace SharedStringIDS_SHARED_REVIEW_FILE_EXT.pdf cDocumentPathserveraddInternalServerUI*IDS_SHARED_REVIEW_SERVER_DOC_CENTER_DETAIL DebugAlerttstart shared review skip browsdoc step use dc done dist server commit work now checking if silent is possible or notSilentDocCenterLoginbShowProgressMonitor2urn://ns.adobe.com/Collaboration/Forms/Acrobat.comcDriverSilent login: unsuccessfulIWSharedReviewDocCenterLoginSilent login : successful DistributionServerStepCommitWorkIWEmailStepDescriptionANValidateIdentityIWIdentityDialog'IDS_SHARED_REVIEW_DISTRIBUTE_STEP_EMAILIWDistributeStepDescription5IDS_SHARED_REVIEW_DISTRIBUTE_STEP_ADD_INTERNAL_SERVERIWNewInternalServer GetStepNum˙˙˙˙ÁšdatastepNum’ đ cnT5=E QTאˆۈ=distributionMethodMANUAL˙˙˙˙e˙˙˙˙e.pdf$l&W˙˙˙˙CBRunShareFileWizardgšNdata startStepstartwiz ÷ o T=6QTC6QT=6QT5>(T=6Qn=oQ#T=6Qn=oQTWQ9 â äY; 5 ] = ]T5>; ;]\ä:WQ9âäTäYC]=]\ä: +9âä=äT5ä:WQ&9âä=äT5ä:WQ9âäVäVä×˙äTä:ˆΐˆʐˆΐĘ#•ˆΐˆՐˆΐˆА—ĐĎĘĘ ␐ˆę&•ˆ搐ˆᐐˆވ/ reviewType ShareFileUseDocumentCenterdistributionMethodUPLOADtypeWT_SF_UFCBTrustPropagateWiz AnnotsString IDS_FINISH finishString Share FiletitleShareFileStepsUploadFileStepsstepsSilentDocCenterLoginbShowProgressMonitor8urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.comcDriver GetStepNumIWSharedReviewDocCenterLoginIWBrowseAnyDocCBRunSimpleWizNew˙˙˙˙ CBEncodeURLłš!urlbEnsureTrailingSlash crackedURL pathIndexs / +o TŮ>¤; ¸ äTä:WQT ¸ äV5ä:WQV>gT ¸ ä>äVä:9âäV5ä:UQTEQT ¸ ä×˙ä:=T=UQTĘ•ŘŰ •ˆ đŕ•ˆČp€o9ˆŒ lengthutilcrackURL lastIndexOfcPathsubstrescape/˙˙˙˙Áš cWorkflow‚ â >oT=DQT=ˆوF SharedReviewFormDistribution˙˙˙˙Áš # CoCˆŠ ˙˙˙˙ÁšĹ É Noˆ"˙˙˙˙Ášé í Ooˆ ˙˙˙˙Ášresource   Poˆ(˙˙˙˙Ášresource> K Qoˆ.˙˙˙˙Ášcodeˆ š ToA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙ÁšcodeÔ  YoA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙Áše M ^oA5 ¸ äTä:Qˆֈcxt handleFailure˙˙˙˙Á-šcxttaskDatacURLˆ Ž goTT6QT55WQT ¸ ä:Qˆ̐ŃˆψcxtdatacSetting handleSuccess˙˙˙˙ÁšcxttaskDataŤ ű qoT ¸ ä;5ä:Qˆڈ) setTaskStatus AnnotsStringIDS_DONE˙˙˙˙ÁšcxttaskData * voˆ)˙˙˙˙Áeš!reviewIDconfigiq ™" |oA5T6QTK"mMWQA55VTV78QăL˙˙˙ŕNA5T6Q9âäA5ä:˜€o‚ˆϘ€o†5%ːˆŕˆϐˆֈ*oTaskSetdatareviewIDANTrustPropagateAll%˙˙˙˙Á šć" ,# ’o;5ˆˈ2 AnnotsStringIDS_SHARED_REVIEW_WEBDAV_NAME˙˙˙˙Á šS# Ą# —o;5ˆˈ: AnnotsString%IDS_SHARED_REVIEW_WEBDAV_DEFAULT_NAME˙˙˙˙Á šĆ# $ œo;5ˆˈ8 AnnotsString#IDS_SHARED_REVIEW_WEBDAV_ADD_SERVER˙˙˙˙Á š9$ †$ Ąo;5ˆˈ9 AnnotsString$IDS_SHARED_REVIEW_WEBDAV_DESCRIPTION˙˙˙˙Á š cWorkflow¨$ ĺ$ ĽoT=ˆʈ# SharedReview˙˙˙˙Á9š@Á+result% ¸@ ŞoYY=]B]\]@]@]@]Y\]‚]‚] ‚] ‚] ‚] ‚] Z=`=`=`\]>]@]@]B]B]‚]‚]‚]‚ ]‚ ]‚ ]‚ ]‚ ]‚]ZY= ]!ZY= ]!="]#ZY=$]!;%5&]'C](;)5*]+\`Y= ]!=,]-="]#ZY=$]!;%5.]'\`Y=/]!="]#=0]1\`\]2\`Y= ]!=,]-="]#ZY=3]!;%54]'=]1\`Y=$]!="]#=5]1\`\]2\`\ ¸6 ä;758=9ä;)5*ä:ä:]2\`\]2\`\]?\WQV••ĘĚ–––ːĘĘ˜€oĚʘ€oÓʘ€oŘʘ€oôʘ€oű吖––––Ę˜€pʘ€p6ʘ€p>ʘ€pOʘ€pVʘ€piʘ€poʐʐ”•Ę”•ĘĘ”•ĘĎ–Ԑ•ĘĘĘ”•ĘÔ•ĘĘÚ˜€p”•ĘĘĘ”•ĘĎĎ•ĘĘă˜€pŚĐ7ɐ•ĘĎŐ˙ژ€płˆŒcSetting#bUseWindowsIntegratedAuthenticationoConfigoDialog cVerifyURL cVerifiedURLoAuth getSetting initialize setStatussetURLcommitidle writeable enumerable removeableaStatesnStatecFileURLoFileURL bFoundFile bDoCommitvrfyverifyNextStateonErroronVerifySuccessonVerifyFailureonEnumerateFileonEnumerateEnd onPutFile onDeleteFileviewtype align_fill alignment static_text AnnotsString$IDS_SHARED_REVIEW_WEBDAV_INSTRUCTIONname wrap_nameCollab wizardWidthwidth align_rowalign_childrenIDS_SHARED_REVIEW_ENTER_URL edit_textsurlitem_idelementsbutton!IDS_SHARED_REVIEW_VALIDATE_BUTTONtaskconcatappplatformWIN check_boxIDS_USE_NTLM_AUTHENTICATIONntlmANCreateTipElementsIDS_SHARED_REVIEW_WEBDAV_TIP description˙˙˙˙Áš?& Z& šoA5ˆoConfig˙˙˙˙ÁĆš&dialognextw& ‰( ťoAT6QA55ƒA ¸ äTäA555ä:QT ¸ äYA555]A555] \ä:QAA555 6 QA ¸ ä; 5 ä:QT ¸ ä=ä:QˆʐË~•ˆ ␈ ˙‘ˆ ܐˆ ؐˆՈoDialogdataoSavedWebDavStatesetURLcURLloadcStatustask#bUseWindowsIntegratedAuthenticationntlm cVerifiedURL setStatus AnnotsString(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWNfocussurl˙˙˙˙Á]š ttaskĽ( ]) Ěo ;5WQA5 ¸ äYV ¸ ä äTä:]\ä:QA5 ¸ ä=ä:QÎˆöˆ؈ AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEoDialogloadreplacetaskresize {cStatus}˙˙˙˙Ášdialogurlv) ľ) ÓoT ¸ äYT]\ä:Qˆވloadsurl˙˙˙˙Ášš5dialognextpropsurlÎ) F, ŘoT ¸ ä:WQTlV5WQVA5=AC6QAV6QA ¸ äTä:Q9âä=ä:QA5V6 Q.A>6QV ¸ ä×˙ä:= A ¸ äTäV=ä:QAT ¸ ä:56QAA5 5 5 YC] \ Y\6Q; ¸ ä:QA; ¸ äA5=ä:6Q; ¸ ä:QA; ¸ äA5ä:6QAB6QA5 ¸ äYB]\ä:QA ¸ ä:Q9âä;5ä:QŇ×Ę€)•ˆȐ×•ˆېˆڐˆŃ␈ѐˆ䐈ѐˆސˆȐˆߐˆҐˆڈ@storesurllengthnStatesubstr/setURL cVerifyURLoAuthdataoSavedWebDavState#bUseWindowsIntegratedAuthenticationUsePlatformAuthapp beginPrivcFileURLCollab uriEncode)com.adobe.acrobat.webdav.writeability.txtendPrivoFileURLutilcrackURL bFoundFileoDialogenablevrfyverifyNextStateonVerifyFailure AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙Á+šN#statetaskdata=1 84 p A5A57WQ=WQVx=y=yp=y¤zÝ; ¸ ä=ä:WQ; 5 5 ¸ äA5 äVäAäA5ä:Q;5WQ; 5 5 ¸ äA5 äAäA5ä:Q;5WQC; 5 5 ¸ äA5 äAäA5ä:Q;5WQA ¸ äVä:QŃÉc€ü‘m €p(m €p-mʘ€p"ÚˆΐP•ˆ됈ΐP•ˆ됈ΐP•ˆшaStatesnState writeable enumerable removeableSOAPstreamFromStringTesting WriteablilityNetHTTPWebDAVPutFilecFileURLoAuth AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEEnumerateCollection$IDS_SHARED_REVIEW_NETWORK_CHECK_READ DeleteFile&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE setStatus˙˙˙˙Áqš eR4 :5 6p; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA ¸ äT5T5;5ä:QˆѐˆܐˆѐˆŃ áˆ^app beginPrivalert AnnotsString&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERTendPrivonVerifyFailuretext(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN˙˙˙˙Áźš,\5 ř6 >pA 5# ?… 6QQA5A5هAA56QA ¸ ä;5ä:QA5 ¸ äYC] \ä:QA5 3A ¸ äA5äCä:QA5 ¸ ä=ä:QA ¸ ä:QˆՐŇ€‚•ˆ͐ˆؐˆߐ•ˆ֐ˆݐˆ ͈nStateaStateslength cVerifiedURL cVerifyURL setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDoDialogenablevrfy bDoCommitcommitendfnshverifyNextState˙˙˙˙Á9šmsg7 ‘7 OpA ¸ äTä:QA5 ¸ äYC]\ä:QAB6QˆѐˆߐˆȈ setStatusoDialogenablevrfy bDoCommit˙˙˙˙Á˜š resourcestateoURLł7 [9 VpA5A57WQV=E QA5 p†; ¸ äT5ä:WQAV5A55EQV5 A55 6QĆvWQǐŃĎˆ!•‘ÝˆېÚx•Ę€{–ˆaStatesnState enumerable bFoundFileutilcrackURLurlcHostoFileURLcPath˙˙˙˙e-W˙˙˙˙Á+šresource|9 é9 ipA5A ¸ ä:QA ¸ ä:QҐˆ ͈ bFoundFileonVerifySuccessonVerifyFailure˙˙˙˙Ášstatus: ): opA ¸ ä:Qˆ"͈onVerifySuccess˙˙˙˙ÁšstatusF: j: ppA ¸ ä:Qˆ%͈onVerifySuccess˙˙˙˙Á*š  cReviewIDconfigencURLă@ ^A śpT59âäTä:=WQVĺˆŒcSettingencodeURIComponent/˙˙˙˙ÁšţA B Âpˆ"˙˙˙˙Áš"B &B Ăpˆ ˙˙˙˙ÁšresourceEB RB Äpˆ(˙˙˙˙ÁšresourcewB „B Ĺpˆ.˙˙˙˙ÁšcodeÁB ňB ČpA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙Ášcode C >C ÍpA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙ÁšeWC †C ŇpA5 ¸ äTä:Qˆֈcxt handleFailure˙˙˙˙ÁŃš-cxttaskDatacURLßC  E ŰpTT6QT ¸ ä;5T5555ä:QT55WQVT5WQV= WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q;55 ¸ äVäTäY\ä:Qˆ̐ˆňŃˆËp•ˆČp•ˆѐˆؐˆѐˆ ęˆ5cxt setTaskStatus AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYdataserverSettingscSettingreviewID/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollection˙˙˙˙ÁšcxttaskData˝E ĎE ípˆ)˙˙˙˙ÁšcxttaskDataęE üE îpˆ)˙˙˙˙Á3š="cxttaskDatacURLMF CI ňpTT6QT55WQV ¸ ä>ä×ä:=EQV ¸ ä>ä×#ä:=ÎT ¸ ä;5T55 5 5ä:QT55WQVT5 WQV= WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q;55 ¸ äVäTäY\ä:QT ¸ ä:Qˆ̐ŃßŮ€É•ˆ ňŃˆ Ëp•ˆ Čp•ˆ ѐˆ ؐˆ ѐˆ ˆψcxtdatacSettingsubstrhttps://api.share.adobe.com/#http://api-dcdevlab.corp.adobe.com/ setTaskStatus AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYserverSettingsreviewID /attachments/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollection handleSuccess˙˙˙˙ÁšcxttaskData`I °I qT ¸ ä;5ä:Qˆڈ) setTaskStatus AnnotsStringIDS_DONE˙˙˙˙ÁšcxttaskDataÍI ßI qˆ)˙˙˙˙Áeš!reviewIDconfigi+J SL qA5T6QTK"mMWQA55VTV78QăL˙˙˙ŕNA5T6Q9âäA5ä:˜€qˆϘ€q 5%ːˆŕˆϐˆֈ*oTaskSetdatareviewIDANTrustPropagateAll%˙˙˙˙Á šĽL ęL ,q;5ˆˈ1 AnnotsStringIDS_SHARED_REVIEW_IDISK_NAME˙˙˙˙Á šM ^M 1q;5ˆˈ9 AnnotsString$IDS_SHARED_REVIEW_IDISK_DEFAULT_NAME˙˙˙˙Á šƒM ÎM 6q;5ˆˈ7 AnnotsString"IDS_SHARED_REVIEW_IDISK_ADD_SERVER˙˙˙˙Á šőM AN ;q;5ˆˈ8 AnnotsString#IDS_SHARED_REVIEW_IDISK_DESCRIPTION˙˙˙˙Á š cWorkfloweN ˘N @qT=ˆʈ# SharedReview˙˙˙˙Á š@Ů,resultÍN Tl EqY=]Y=]B]\]@]@]@]@] ‚] ‚] ‚] ‚] ‚]‚]Z=`=`=`\]>]@]@]B]B]‚]‚]‚]‚ ]‚ ]‚ ]‚ ]‚ ] ‚]!ZY="]#ZY="]#=$]%ZY="]#=&]'=$]%ZY=(]#;)5*]+\`Y=,]#=$]%=-].\`\]/\`Y="]#=&]'=$]%ZY=(]#;)50]+\`Y=,]#=$]%=1].\`\]/\`Y=(]#;)52]+C]3;455]6=7].\`Y=(]#;)58]+C]3;455]6\`Y="]#=&]'=$]%ZY=9]#;)5:]+=].\`Y=(]#=$]%=;].\`\]/\`\ ¸< ä9=â=ä;)5>ä;455ä:ä:]/\`\]/\`\]?\WQV•Ę•ĘĚ––––ĘĘ˜€qjʘ€qqʘ€q‰Ę˜€q’Ę˜€qžĺ–––––Ę˜€qˇĘ˜€qŇʘ€qÚʘ€qëʘ€qňʘ€rʘ€r ʐʐ”•Ę”•ĘĘ”•ĘĘĘ”•ĘÔ•ĘĘÚ˜€r*•ĘĘĘ”•ĘÔ•ĘĘÚ˜€r;•ĘĎ–ϐϐ•ĘĎ–Ԑ•ĘĘĘ”•ĘĎĎ•ĘĘă˜€rZ˙ɘ€raˆŒhttps://idisk.mac.com/cBaseURLcSetting#bUseWindowsIntegratedAuthenticationoConfigoDialog cVerifyURL cVerifiedURL cCurrentURL getSetting initialize setStatuscommit getCurrentURLidle writeable enumerable removeableaStatesnStatecFileURLoFileURL bFoundFile bDoCommitvrfyverifyNextStateonErroronVerifySuccessonVerifyFailureonEnumerateFileonEnumerateEnd onPutFile onDeleteFileviewtype align_fill alignment align_rowalign_children static_text AnnotsStringIDS_SHARED_REVIEW_IDISK_ACCOUNTname edit_textacctitem_idelements!IDS_SHARED_REVIEW_IDISK_DIRECTORYfldrIDS_SHARED_REVIEW_IDISK_URL wrap_nameCollab wizardWidthwidthiurl#IDS_SHARED_REVIEW_IDISK_INSTRUCTIONbutton!IDS_SHARED_REVIEW_VALIDATE_BUTTONtaskconcatANCreateTipElementsIDS_SHARED_REVIEW_IDISK_TIP_4 description˙˙˙˙ÁšRP mP UqA5ˆoConfig˙˙˙˙ÁŃš+dialognextŠP ­R WqAT6QT ¸ äY=]\ä:QAA ¸ äTä:6QA55WT ¸ äYA555] A5 ] \ä:QAA555 6 QA ¸ ä;5ä:QT ¸ ä=ä:QˆʐˆŕˆאËR•ˆ öˆ ܐˆ ؐˆՈoDialogloadPublicfldr cCurrentURL getCurrentURLdataoSavedWebDavStatecStatustask currentURLiurl cVerifiedURL setStatus AnnotsString(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWNfocusacct˙˙˙˙Á]š ttaskÉR S jq ;5WQA5 ¸ äYV ¸ ä äTä:]\ä:QA5 ¸ ä=ä:QÎˆöˆ؈ AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEoDialogloadreplacetaskresize {cStatus}˙˙˙˙Áéš7dialognexturlšS V qqTtA ¸ äTä:WQVA5=AC6QAV6QA ¸ äTä:Q9âä=ä:QA5V6QvA5 Y\6 QA5 5 T ¸ ä:5 6 QA5 5 A56QA5 5 T ¸ ä:56Qo•ÔĘ•ˆȐˆʐˆѐˆՐˆ Ԑˆ Ґˆ 䐈 אˆ äˆ= getCurrentURL cVerifiedURL bDoCommit cVerifyURLvrfy DebugThrowURL requires verificationoConfigcSettingdataoSavedWebDavStatecURLstoresurlcStatustask˙˙˙˙Árš dialogpropsresult>V W ‰q T ¸ ä:WQ; ¸ ä:Q; ¸ äA5V5=V5=ä:WQ; ¸ ä:QVŇˆѐůˆѐˆŒstoreapp beginPrivCollab uriEncodecBaseURLacct/fldrendPriv˙˙˙˙ÁŒš dialogurlbEnabled(W RX ’qA ¸ äTä:WQV ¸ ä ä:@WQT ¸ äYV]V]\ä:QVA5-T ¸ äYV]\ä:QAV6QÔÚˆćĘ•ˆސˆʈ getCurrentURLmatchenablenextvrfy cCurrentURLloadiurl^http[s]?\:\/\/.+\/˙˙˙˙ÁĘš-dialogprops Y [ ĽqT ¸ ä:WQA>6QAA ¸ äTä:6Q; ¸ ä:QA; ¸ äA5= ä:6Q; ¸ ä:QA; ¸ äA5ä:6 QAB6QA5 ¸ äYB]\ä:QA ¸ ä:QŇˆȐˆאˆѐˆ䐈ѐˆސˆȐˆߐˆ͈storenState cVerifyURL getCurrentURLapp beginPrivcFileURLCollab uriEncode)com.adobe.acrobat.webdav.writeability.txtendPrivoFileURLutilcrackURL bFoundFileoDialogenablevrfyverifyNextState˙˙˙˙Á+šN#statetaskdata-[ ^ ˇq A5A57WQ=WQVx=y=yp=y¤zÝ; ¸ ä=ä:WQ; 5 5 ¸ äA5 äVäAäY\ä:Q;5WQ; 5 5 ¸ äA5 äAäY\ä:Q;5WQC; 5 5 ¸ äA5 äAäY\ä:Q;5WQA ¸ äVä:QŃÉc€ü‘m €qÄm €qÉmʘ€qžÚˆΐP•ˆ됈ΐP•ˆ됈ΐP•ˆшaStatesnState writeable enumerable removeableSOAPstreamFromStringTesting WriteablilityNetHTTPWebDAVPutFilecFileURL AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEEnumerateCollection$IDS_SHARED_REVIEW_NETWORK_CHECK_READ DeleteFile&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE setStatus˙˙˙˙Áqš e*^ _ Ňq; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA ¸ äT5T5;5ä:QˆѐˆܐˆѐˆŃ áˆ^app beginPrivalert AnnotsString&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERTendPrivonVerifyFailuretext(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN˙˙˙˙Áźš,4_ Đ` ÚqA 5# ?… 6QQA5A5هAA56QA ¸ ä;5ä:QA5 ¸ äYC] \ä:QA5 3A ¸ äA5äCä:QA5 ¸ ä=ä:QA ¸ ä:QˆՐŇ€‚•ˆ͐ˆؐˆߐ•ˆ֐ˆݐˆ ͈nStateaStateslength cVerifiedURL cVerifyURL setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDoDialogenablevrfy bDoCommitcommitendfnshverifyNextState˙˙˙˙Á9šmsgň` ia ëqA ¸ äTä:QA5 ¸ äYC]\ä:QAB6QˆѐˆߐˆȈ setStatusoDialogenablevrfy bDoCommit˙˙˙˙Á˜š resourcestateoURL‹a 3c ňqA5A57WQV=E QA5 p†; ¸ äT5ä:WQAV5A55EQV5 A55 6QĆvWQǐŃĎˆ!•‘ÝˆېÚx•Ę€{–ˆaStatesnState enumerable bFoundFileutilcrackURLurlcHostoFileURLcPath˙˙˙˙e-W˙˙˙˙Á+šresourceTc Ác rA5A ¸ ä:QA ¸ ä:QҐˆ ͈ bFoundFileonVerifySuccessonVerifyFailure˙˙˙˙ÁšstatusÝc d rA ¸ ä:Qˆ"͈onVerifySuccess˙˙˙˙Ášstatusd Bd rA ¸ ä:Qˆ%͈onVerifySuccess˙˙˙˙Á*š  cReviewIDconfigencURLl úl drT59âäTä:=WQVĺˆŒcSettingencodeURIComponent/˙˙˙˙Áššm žm prˆ"˙˙˙˙Ášžm Âm qrˆ ˙˙˙˙Ášresourceám îm rrˆ(˙˙˙˙Ášresourcen n srˆ.˙˙˙˙Ášcode]n Žn vrA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙ÁšcodeŠn Ún {rA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙Ášeón "o €rA5 ¸ äTä:Qˆֈcxt handleFailure˙˙˙˙Ášš,cxttaskDatacURL{o q ‰rTT6QT ¸ ä;5ä:QT55WQVT5WQV=WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q; 55 ¸ äVäTäY\ä:Qˆ̐ˆڐŃˆËp•ˆČp•ˆѐˆؐˆѐˆęˆ5cxt setTaskStatus AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYdatacSettingreviewID/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollection˙˙˙˙ÁšcxttaskData#q 5q šrˆ)˙˙˙˙ÁšcxttaskDataPq bq ›rˆ)˙˙˙˙Ášš,cxttaskDatacURLłq Ks ŸrTT6QT ¸ ä;5ä:QT55WQVT5WQV=WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q; 55 ¸ äVäTäY\ä:Qˆ̐ˆڐŃˆËp•ˆČp•ˆѐˆؐˆѐˆęˆ5cxt setTaskStatus AnnotsString*IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENTdatacSettingreviewID /attachments/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollection˙˙˙˙ÁšcxttaskDatahs ¸s °rT ¸ ä;5ä:Qˆڈ) setTaskStatus AnnotsStringIDS_DONE˙˙˙˙ÁšcxttaskDataŐs çs ľrˆ)˙˙˙˙Áeš!reviewIDconfigi3t [v źrA5T6QTK"mMWQA55VTV78QăL˙˙˙ŕNA5T6Q9âäA5ä:˜€rˆϘ€rĆ5%ːˆŕˆϐˆֈ*oTaskSetdatareviewIDANTrustPropagateAll%˙˙˙˙Á šŚv čv Ňr;5ˆˈ/ AnnotsStringIDS_SHARED_REVIEW_SMB_NAME˙˙˙˙Á šw Yw ×r;5ˆˈ7 AnnotsString"IDS_SHARED_REVIEW_SMB_DEFAULT_NAME˙˙˙˙Á š~w Çw Ür;5ˆˈ5 AnnotsString IDS_SHARED_REVIEW_SMB_ADD_SERVER˙˙˙˙Ášîw @x ár9âä=;ä:ˆۈ> SharedString!IDS_SHARED_REVIEW_SMB_DESCRIPTIONWT˙˙˙˙Áš cWorkflowdx Äx ćrT=DQT=ˆوF SharedReviewFormDistribution˙˙˙˙Áš/Ą +tipStrresultďx ĺ ër;5=;5;5WQYY=]\]@] @] ‚] ‚] ‚] ‚]‚]‚]‚]‚]‚]‚ ]ZY=]ZY=]=]ZY=];5]C];5]\`Y=];5 ]\`Y=]=!]"=]ZY=#]=$]%=]\`Y=&];5']=]%\`\](\`Y=]=!]"=]ZY=&];5)]=]%\`Y=]C];5];5*]=+]%\`\](\`\ ¸, ä9-â-äVä;5ä:ä:](\`\](\`\].\WQVĐ␐••Đ––ĘĘ˜€s ʘ€s!ʘ€s/ʘ€s4ʘ€sAʘ€s•Ę˜€sżĘ˜€sČʘ€s甕ʐ”•ĘĘ”•ĘĎ–Ԑ•ĘÔ•ĘĘĘ”•ĘĘĎ•ĘĎÚ˜€t •ĘĘĘ”•ĘĎĎ•Ę–ĎĎă˜€t!˙š€t(ˆŒappplatformWIN AnnotsStringIDS_SHARED_REVIEW_SMB_TIPIDS_SHARED_REVIEW_SMB_TIP_MACcSettingoConfigoDialog cVerifiedURL getSetting initializecommit getServerURLsetURL setStatus verifyURLbrwsvrfyidleviewtype align_fill alignment static_text!IDS_SHARED_REVIEW_SMB_INSTRUCTIONname wrap_nameCollab wizardWidthwidth IDS_SHARED_REVIEW_SMB_URL_PROMPT align_rowalign_children edit_textsurlitem_idbutton#IDS_SHARED_REVIEW_SMB_BROWSE_BUTTONelements!IDS_SHARED_REVIEW_VALIDATE_BUTTONIDS_SHARED_REVIEW_SMB_STATUSstatconcatANCreateTipElements description˙˙˙˙Áš z (z řrA5ˆoConfig˙˙˙˙Áœš dialognextEz ä{ úrAT6QA55nA ¸ äTäA555ä:QT ¸ äYA555]\ä:QAA5556QA ¸ ä; 5 ä:QˆʐËi•ˆ ␈ 됈 ܐˆ ؈FoDialogdataoSavedSMBStatesetURLcURLloadcStatusstat cVerifiedURL setStatus AnnotsString(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWN˙˙˙˙Áđš3dialognextverifiedurlý{ É~ sT{CWQA ¸ ä:WQVA5A ¸ äVä:WQVA5A56Q9âä;5ä:QvA5Y\6 QA55 T ¸ ä:5 6 QA55 A56QA55 T ¸ ä:56 Qv••ĐĘ•ˆ Ԑ•ˆ אˆ ߐˆ Ґˆ 䐈 אˆ äˆ: getServerURL cVerifiedURL verifyURLoConfigcSetting DebugThrow AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALIDdataoSavedSMBStatecURLstoresurlcStatusstat˙˙˙˙Árš urldlgDatač~ )€ !sVQA5 ¸ ä:WQ9âäV5ä:WQVŮ>EQV ¸ ä×˙ä:=V=WQV”Őˆېç•ˆ͐ˆŒ oDialogstoreANPlatformPathToURLsurllengthsubstr/˙˙˙˙Á.šdialogurlF€ Ÿ€ /sT ¸ äY9âäTä:]\ä:Qˆíˆ7loadANSMBURLToPlatformPathsurl˙˙˙˙Á]š status statusStrť€ ‚ 4s ;5WQA5 ¸ äYV ¸ ä äTä:]\ä:QA5 ¸ ä=ä:QÎˆöˆ؈ AnnotsStringIDS_SHARED_REVIEW_SMB_STATUSoDialogloadreplacestatresize {cStatus}˙˙˙˙Áššť<smbURL verifyResult errorString folderURIdatafileURI deleteResult enumeratorű‚ ƒ As VQVQVQ; ¸ ä:QTWQVEQVŮ>ďA ¸ ä;5ä:Q9âä=Tä:QV=WQ; ¸ äVä:WQV ;5 WQVx; ¸ ä=ä:WQV=WQVQ; ¸ äVäVä:WQV (;5 ¸ ä äVä:WQVŠA ¸ ä;5ä:Q; ¸ äVä:WQmăV ¸ ä:WQVS; ¸ äVä:WQV 2;5 ¸ ä äVä:WQBWQ V˙˙˙’VN; ¸ äVä:WQV -;5 ¸ ä äVä:WQBWQBWQ;5WQV A; ¸ äTä:6Q; ¸ ä:QA ¸ äV;5Vä:QV˜€sH”””ˆѐˆ—Ó€ꕐˆؐˆِˆČp•ˆؐˆ •ˆΘ€s] •ÚÍ”ˆܐˆ •ˆ㘀sj •ˆؐؐ(l)nˆ›€snˆҐ •ˆ ؐˆ •ˆ 㐈 •@•Č˜€s} •ˆؐˆ •ˆ㐈ʘ€sˆˆ•ˆΐ •ˆېˆѐˆĚܐˆŒapp beginPrivlength setStatus AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITE DebugAlert smbURL : com.adobe.acrobatCollaburiCreateFolder'IDS_SHARED_REVIEW_SMB_FOLDER_CREATE_ERRSOAPstreamFromStringTesting Writeablility /testfile.txt uriPutData$IDS_SHARED_REVIEW_SMB_FILE_WRITE_ERRreplace&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETEuriEnumerateFiles uriNextFile uriDeleteFile#IDS_SHARED_REVIEW_SMB_ENUM_FILE_ERRuriDeleteFolder'IDS_SHARED_REVIEW_SMB_DELETE_FOLDER_ERR!IDS_SHARED_REVIEW_NETWORK_INVALID cVerifiedURL uriNormalizeendPriv"IDS_SHARED_REVIEW_NETWORK_VERIFIED%url%%url%%url%]s˙˙˙˙Á­še)dialog folderURIerrMsgš °‘ •s †; ¸ ä:Q; ¸ ä:WQ9âä=Vä:Q; ¸ ä:QVEQVŮ>eV ¸ äVŮ?ä:= V= WQA ¸ äVä:A ¸ äTäA5 ä:QäĆvWQV5 =žVQ9âäV5ä:F?,;5WQ+;5WQ;5WQ; ¸ ä:Q; ¸ äVä:Q; ¸ ä:Q9âä=ä:Qǐ‘ˆѐԐˆِˆѐӕߍ:Čp•Đ•ˆؐˆz€sĽĘÎ•”×XRِˆ ΐP•ˆ ΐP•ˆ ΐP•ˆѐˆՐˆѐˆՀ{–ˆapp beginPrivCollabbrowseForNetworkFolder DebugAlert folderURI : endPrivlengthcharAt/ verifyURLsetURL cVerifiedURLmessageVolume Mount ExceptionNumber errorCode AnnotsString#IDS_SHARED_REVIEW_VOLUME_TYPE_ERROR$IDS_SHARED_REVIEW_VOLUME_MOUNT_ERRORIDS_SHARED_REVIEW_VOLUME_ERRORalert DebugThrow VolMountError˙˙˙˙eĚ˙˙˙˙Á>šdialogurlˑ §’ żsA ¸ ä:WQA ¸ äVä:A ¸ äTäA5ä:QĐĐ•ˆ ؈' getServerURL verifyURLsetURL cVerifiedURL˙˙˙˙ÁŻšpdialogurlokpos searchPosΒ — Čs T ¸ ä:5WQBWQVŮ×EQV ¸ ä>ä×ä:=ŕ×WQVQVWQ4mV ¸ äVä:= $V# ?WQQăVVŮ˙˙˙ĂVVEQVVŮjV# ?WQQVWQ4mV ¸ äVä:= $V# ?WQQăVVŮ˙˙˙ĂVVWQV EQ;5= PVŮ×Eä×ä:= EQV ¸ ä×ä:= WQT ¸ äYV] \ä:Q×•ę•–”ˆ &4(B–ˆŮE€sӈ6̘€sԘ€sӈӐŮ•ˆ̐ˆ &4(B–ˆŮE€sو7̘€sژ€sوӘ€s݈˘€sáˆÚ•ˆ˙̐ˆ ވstoresurllengthsubstrsmb://charAt/appplatformWIN\\\enablenextŮBaB˙˙˙˙Á*š  cReviewIDconfigencURLž ž +tT59âäTä:=WQVĺˆŒcSettingencodeURIComponent/˙˙˙˙Áš-Ÿ 1Ÿ 8tˆ"˙˙˙˙ÁšQŸ UŸ 9tˆ ˙˙˙˙ÁšresourcetŸ Ÿ :tˆ(˙˙˙˙ÁšresourceŚŸ łŸ ;tˆ.˙˙˙˙ÁšcodeđŸ !  >tA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙Ášcode<  m  CtA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙ÁUše†  $Ą Ht; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA5 ¸ äTä:Qˆѐˆܐˆѐˆֈapp beginPrivalert AnnotsString&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERTendPrivcxt handleFailure˙˙˙˙ÁCš5"cxttaskDatamsgcURL createResult}Ą k¤ Tt TT6Q;5T5555WQT ¸ äVä:QT55WQVV ¸ ä×˙ä:= =  = 9 â äT5 ä:= WQ; ¸ ä:Q; ¸ ä9 â äVä:ä:WQ; ¸ ä:QVT ¸ ä:Q;;5 ¸ ä äVä:WQT ¸ äVä:Qˆ̐ćˆӐŃˆÚ ňp•ˆѐçˆѐ•ˆԐăˆӈcxt AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYdataserverSettingscSetting setTaskStatussubstr/encodeURIComponentreviewIDapp beginPrivCollaburiCreateFolderendPriv handleSuccess IDS_SHARED_REVIEW_SMB_CREATE_ERRreplace handleFailure%url%˙˙˙˙ÁšcxttaskDataˆ¤ š¤ ktˆ)˙˙˙˙ÁšcxttaskDataľ¤ Ǥ ltˆ)˙˙˙˙Á+š7cxttaskDatacURL createResultmsgĽ î§ pt TT6QT ¸ ä;5ä:QT55WQVV ¸ ä×˙ä:== =9 â äT5 ä:WQV= WQ; ¸ ä:Q; ¸ ä9 â äVä:ä:WQ; ¸ ä:QVT ¸ ä:Q;;5 ¸ ä äVä:WQT ¸ äVä:Qˆ̐ˆڐŃˆÚ ěp•ˆČp•ˆѐçˆѐ•ˆԐăˆӈcxt setTaskStatus AnnotsString*IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENTdatacSettingsubstr/encodeURIComponentreviewID /attachments/app beginPrivCollaburiCreateFolderendPriv handleSuccess'IDS_SHARED_REVIEW_SMB_CREATE_ATTACH_ERRreplace handleFailure%url%˙˙˙˙ÁšcxttaskData ¨ [¨ †tT ¸ ä;5ä:Qˆڈ) setTaskStatus AnnotsStringIDS_DONE˙˙˙˙ÁšcxttaskDatax¨ Š¨ ‹tˆ)˙˙˙˙ÁešreviewIDconfigiÖ¨ Ş ’tA5T6QTK"mMWQA55VTV78QăL˙˙˙ŕNA5T6Q9âäA5ä:ˆϘ€t™5%ːˆŕˆϐˆֈ*oTaskSetdatareviewIDANTrustPropagateAll%˙˙˙˙Á šÓŞ Ť Ľt;5ˆˈ6 AnnotsString!IDS_SHARED_REVIEW_SHAREPOINT_NAME˙˙˙˙Á šCŤ ”Ť Şt;5ˆˈ> AnnotsString)IDS_SHARED_REVIEW_SHAREPOINT_DEFAULT_NAME˙˙˙˙Á ššŤ Ź Żt;5ˆˈ< AnnotsString'IDS_SHARED_REVIEW_SHAREPOINT_ADD_SERVER˙˙˙˙Á š0Ź Ź ´t;5ˆˈ= AnnotsString(IDS_SHARED_REVIEW_SHAREPOINT_DESCRIPTION˙˙˙˙Áš cWorkflowĽŹ ­ štT=DQT=ˆوF SharedReviewFormDistribution˙˙˙˙Á%šT@9result0­ ő žtA5=n=oQYY=]C]\]@]@] @] @] @] @] @]B]‚]‚]‚]‚]‚]‚]‚]Z=`=`=`\]>]@]B]Y\]‚]‚] ‚ ]!‚ ]"‚ ]#‚ ]$‚ ]%‚]&‚]'‚](‚])‚]*‚]+‚],‚]-‚].‚]/ZY=0]1=2]3ZY=4]1;556]7C]8;95:];\`Y=4]1;55<]7;95:];\`Y=0]1==]>=2]3ZY=?]1=@]AX];\`Y=B]1;55C]7=D]3=']A\`\]E\`Y=4]19FâFä;G;ä:]7C]8;95:];\`Y=0]1==]>=2]3ZY=0]1ZY=4]1;55H]7=I]JC]K\`Y=L]1=%]A×d]MXš];\`\]E\`Y=0]1ZY=4]1;55N]7=I]JC]K\`Y=L]1=$]A×d]MXš];\`\]E\`\]E\`Y=4]1;55O]7\`Y=4]1;95:];=P]A\`Y=0]1==]>=2]3ZY=B]1;55Q]7=!]A\`Y=4]1=2]3=R]A\`\]E\`\]E\`\]S\WQVĚ•ˆА••ĘĚ––––––––ĘĘ˜€tčʘ€tďʘ€tőʘ€túʘ€uʘ€u)吖––ːĘ˜€uFʘ€uXʘ€ukʘ€u|ʘ€uĘ˜€uĘ˜€v ʘ€vʘ€vEʘ€v`ʘ€viʘ€vzʘ€v€Ę˜€v‹Ę˜€v‘ʐʐ”•ĘĘ”•ĘĎ–Ԑ•ĘĎÔ•ĘĘĘ”•ĘĘÍ•ĘĎĘÚ˜€vš•Ęß–Ԑ•ĘĘĘ”•Ę”•ĘĎĘË•ĘĘ—Ř˜€vוʐ”•ĘĎĘË•ĘĘ—ă˜€vë•ĘÔ•ĘĎĎ•ĘĘĘ”•ĘĎĎ•ĘĘđ˜€w ˆŒ reviewTypeFormDistributionWT_FDcSetting#bUseWindowsIntegratedAuthenticationoConfigoDialogsites workspaces workspaceURLlocation cVerifyURL cVerifiedURL bDoCommit getSetting initialize setStatus setLocationsetURLcommitidle writeable enumerable removeableaStatesnStatecFileURL bFoundFile workspaceURLS getServerURL encodeURLvrfyloadWorkspacesloadDocumentLibrariesdoclwksp getSoapValuescanverifyNextStateonErroronVerifySuccessonVerifyFailureonEnumerateFileonEnumerateEnd onPutFile onDeleteFileviewtype align_fill alignment static_text AnnotsString(IDS_SHARED_REVIEW_SHAREPOINT_INSTRUCTIONname wrap_nameCollab wizardWidthwidth&IDS_SHARED_REVIEW_SHAREPOINT_ENTER_URL align_rowalign_children edit_textsurlitem_idbutton+IDS_SHARED_REVIEW_SHAREPOINT_GET_WORKSPACES align_bottomelements SharedString%IDS_SHARED_REVIEW_SHAREPOINT_URL_HELP'IDS_SHARED_REVIEW_SHAREPOINT_WORKSPACESdialogfontboldlist_boxheight$IDS_SHARED_REVIEW_SHAREPOINT_DOCLIBS%IDS_SHARED_REVIEW_SHAREPOINT_LOCATIONlocn!IDS_SHARED_REVIEW_VALIDATE_BUTTONtask description˙˙˙˙Áš;Ż VŻ ÓtA5ˆoConfig˙˙˙˙Áőš3dialognextsŻ Úą ŐtAT6QA55ŒA ¸ äTäA555ä:QT ¸ äYA555]\ä:QAA5556QA ¸ äA555 ä:Q0A ¸ ä; 5 ä:QA ¸ ä=ä:QA ¸ äTä@ä:QT ¸ ä=ä:QˆʐË€‡•ˆ ␈ 됈 אˆ 㐐ˆ ؐˆ ӐˆӐˆՈoDialogdataoSavedSharePointStatesetURLcURLloadcStatustask cVerifiedURL setLocation cLocation setStatus AnnotsString(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWNloadWorkspacesfocussurl˙˙˙˙Átš ttasköą ě˛ čt ;5WQA5 ¸ äYV ¸ ä äT T;5ä:]\ä:QA5 ¸ ä=ä:QÎˆç搈؈ AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEoDialogloadreplace(IDS_SHARED_REVIEW_NETWORK_ACCESS_UNKNOWNtaskresize {cStatus}˙˙˙˙Á/š loc ł oł ďtAT6QA5 ¸ äYA5]\ä:Qˆʐˆäˆ-locationoDialogloadlocn˙˙˙˙Ášdialogurlˆł Çł őtT ¸ äYT]\ä:Qˆވloadsurl˙˙˙˙Á˙š7dialognexturlŕł œś útTfA ¸ ä:WQVA53AC6QA ¸ äTä:Q9âä=ä:QA5V6QšA5Y\6 QA55 T ¸ ä:5 6 QA55 T ¸ ä:56 QA55 A56QA55 T ¸ ä:56Qa•ĐĘ•ˆȐˆѐˆՐˆ Ԑˆ Ґˆ 䐈 䐈 אˆ äˆA getServerURL cVerifiedURL bDoCommitvrfy DebugThrowURL requires verificationoConfigcSettingdataoSavedSharePointStatecURLstoresurl cLocationlocncStatustask˙˙˙˙ÁÁš, dialogurltoEnablelistBoxiłś ภu T ¸ ä:5WQYB]B]B]\WQV ¸ ä ä:@dT ¸ ä:5WQVK0mMWQVV7>VVC66Q ăL˙˙˙ŇNVC6QT ¸ äVä:Q×ÜÖ•×53ːÉ•ˆҐ@Θ€u#ˆʐˆӈstoresurlnextvrfyscanmatchdoclenable^http[s]?\:\/\/.+o3˙˙˙˙Áš# urldlgDataš ˙ş /uVQA5EQA5Ů>A5WQ&A5 ¸ ä:WQV5WQVŮ>EQV ¸ ä×˙ä:=V=WQV”Ů•ˆ ϐŐˆ ̘€u<畈͐ˆŒ locationlengthoDialogstoresurlsubstr/˙˙˙˙Áłš!urlbEnsureTrailingSlash crackedURL pathIndexź ™ž Fu TŮ>¤; ¸ äTä:WQT ¸ äV5ä:WQV>gT ¸ ä>äVä:9âäV5ä:UQTEQT ¸ ä×˙ä:=T=UQTĘ•ŘŰ •ˆđŕ•ˆČp€uTˆ Œ lengthutilcrackURL lastIndexOfcPathsubstrescape/˙˙˙˙Á–š+dialog serverURLüž ĆŔ XuA>6QA ¸ ä:WQVŮ>[AV6QAA5=6QAB6QA5 ¸ äYB] \ä:QA ¸ ä:QA ¸ ä; 5 ä:QˆȐАĘV•ˆʐˆӐˆȐˆߐˆҐˆ؈?nState getServerURLlength cVerifyURLcFileURL)com.adobe.acrobat.sharepoint.writeability bFoundFileoDialogenablevrfyverifyNextState setStatus AnnotsString!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙ÁŞšCdialogi$Á ,Ă kuA5ŁAY\6Q>WQ4mA5A5V755V?"8QV# ?WQQăVA5Ů˙˙˙ŔT ¸ äYA5]\ä:QT ¸ äYY\]\ä:Q•ˆ͐ˆ $4(Ež€uuˆ ™€uq˜€uuˆ ڈ9Ș€upˆ-̘€uu˜€upˆ֘€uwˆ ᐈ áˆsites workspacessoapAttributesTitlelengthloadwkspdocl"E˙˙˙˙ÁšdialogdocLibsXĂ žĂ |uT ¸ äYT]\ä:Qˆވloaddocl˙˙˙˙Á\šdialoglistBoxiÁĂ [Ĺ u T ¸ ä:5WQVK6mMWQVV7>"A ¸ äA5V7ä:Q ăL˙˙˙ĚN×59ːÉ•ˆؐ@Έstoredocl setLocation workspaceURLS!9˙˙˙˙Á%šF fdialoglistBoxinsurlrequestresponsedocLibsresultvlistslibNum defaultLibj listPropsoURLportStrcBaseURLcPathmsg~Ĺ Ż× uA@6QT ¸ ä:5WQVK÷mMWQVV7>ăT ¸ äY;5]\ä:Q=WQAA5VV7?75 5 6Q9 â äA5äCä:WQYV= ] YY\]\]V=]B]V]YC]\]=]\WQ†; ¸ äVä:WQY\WQAY\6QA ¸ äV>75ä=ä:WQVŹA ¸ äVä=ä:WQY\WQ?W Q=W Q>W QmVV 75 W QV 5= EQV 5!="ÂVV 5#×˙8QV ?V 5#W Q;$ ¸% äVä:W Q=WQV 5&='EQV 5(×P=)V 5(WQV 5&=*EQV 5(Xť=)V 5(WQ=WQV 5+;,5V 5&=-=.V 5/=0VWQ$V 5&=-V 5/VWQV 51WQV ¸2 ä ä:3V ¸3 ä>äV ¸4 ä=5ä:ä:WQ.V ¸3 ä>äV ¸4 ä=6ä:ä:WQA5V 5#VV8QV # ?W QQV # ?W QQăV VŮ7˙˙ýńA ¸8 äTäVä:QV Ů7>"A ¸9 äA5V 7ä:QA ¸9 äVä:Q&T ¸ äYA5:]\ä:QéĆvWQV5;Š;WQVM;? ¸@ ä:Q;? ¸A äYV]B>]C\ä:Q;? ¸D ä:QT ¸ äYZ\]E\ä:QÇ ăL˙˙ű NˆȐא5€úːÉ•ˆ 吐ɐˆᐐې•Î•ŃÎ–ČŃĎ˜€u­‘ŘĘˆ͐á€§•ÚĘ•Éˆ)$€€ú€–ˆ(™€uťĐâ•ˆ,ϐ =̐ŘÉß:Ґŕ<ҐÉÎ0•ˆ 𐐐ˆ ߐĚÔ.•ˆ 鐐ˆ אˆ,̘€uşˆI̘€uژ€uşˆ5Ә€u݈$Րʍ?ݐˆ֐ˆáx•ĘČ•ÉČXCݐˆ ΐP•ˆ ΐP• •ˆ ѐˆ 搈 ј€uţˆŕ€{–@Έ workspaceURLstorewkspload AnnotsString,IDS_SHARED_REVIEW_SHAREPOINT_LOADING_DOCLIBSlocn-http://schemas.microsoft.com/sharepoint/soap/sitessoapAttributesUrl CBEncodeURL_vti_bin/Lists.asmxcURLGetListCollectionoRequestcActionbEncoded cNamespaceUsePlatformAuth oAuthenticateMessagecResponseStyleSOAPrequest workspaceURLS getSoapValue soapValueGetListCollectionResultListsBaseType1HiddenFalseTitleutilcrackURLcSchemehttpnPort:httpsnURLTypeIPV6Type://[cHost]DefaultViewUrlmatchsubstr lastIndexOf/Forms//lengthloadDocumentLibraries setLocationlocation statusCode undefined1IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICTIDS_SERVICE_MISSINGapp beginPrivalertcMsgnIconendPrivdocl˙˙˙˙e \/Forms\/)ú %Ą˙˙˙˙ÁĽš? soapValuesnameivalueindexJŮ BŰ v>WQ†mTV7WQV5EQV5SV5 ¸ äTä:WQV>E QTŮV5ŮVV5V# ?WQQăVTŮ˙˙˙q;ˆ $€†z€”–ˆ ™€v ËÖ•Űĺ•ˆɘ€v ˆ1̘€v˜€v ˆӘ€vˆŽsoapName soapValue lastIndexOflength undefined ”˙˙˙˙Á˜šQ(dialogresultnsurlrequestresponseŁŰ Aŕ v Z\WQ=WQ†9âäT ¸ ä:5äCä:WQVŮ>E%QV ¸ äVŮ?ä:=V=WQYV=]YY\] \] V= ] B] V] YC]\]=]\WQ; ¸ äVä:WQAV>75>75>756QA ¸ äTä:QnĆvWQ; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA ¸ ä;5ä:QǐÉÉ‘čď•ˆČp••Î•ŃÎ–ČŃĎ˜€v5ؐˆߐˆŃx•Ęˆѐˆܐˆѐˆ؀{ž€vBˆ-http://schemas.microsoft.com/sharepoint/soap/ CBEncodeURLstoresurllengthcharAt/_vti_bin/Webs.asmxcURLGetWebCollectionoRequestcActionbEncoded cNamespaceUsePlatformAuth oAuthenticateMessagecResponseStyleSOAPrequestsites soapValueloadWorkspacesapp beginPrivalert AnnotsString&IDS_SHARED_REVIEW_NETWORK_FAILED_ALERTendPriv setStatus!IDS_SHARED_REVIEW_NETWORK_INVALID˙˙˙˙e˙˙˙˙Á=šN#statetaskdatagŕ ‘ă Ev A5A57WQ=WQVx=y=yv=y°zď; ¸ ä=ä:WQ; 5 5 ¸ äA5 äVäAäYC]\ä:Q;5WQ; 5 5 ¸ äA5äAäYC]\ä:Q;5WQI; 5 5 ¸ äA5 äAäYC]\ä:Q;5WQA ¸ äVä:QŃÉc€‘m €vRm €vWmʘ€vLÚˆőˆΐP•ˆńˆΐP•ˆńˆΐP•ˆшaStatesnState writeable enumerable removeableSOAPstreamFromStringTesting WriteablilityNetHTTPWebDAVPutFilecFileURLUsePlatformAuth AnnotsString%IDS_SHARED_REVIEW_NETWORK_CHECK_WRITEEnumerateCollection cVerifyURL$IDS_SHARED_REVIEW_NETWORK_CHECK_READ DeleteFile&IDS_SHARED_REVIEW_NETWORK_CHECK_DELETE setStatus˙˙˙˙ÁUšeŤă _ä `v; ¸ ä:Q; ¸ ä;5ä:Q; ¸ ä:QA ¸ äT5ä:Qˆѐˆܐˆѐˆֈapp beginPrivalert AnnotsString1IDS_SHARED_REVIEW_SHAREPOINT_CONTRIBUTOR_RESTRICTendPrivonVerifyFailuretext˙˙˙˙Áźš,ä ć ivA 5# ?… 6QQA5A5هAA56QA ¸ ä;5ä:QA5 ¸ äYC] \ä:QA5 3A ¸ äA5äCä:QA5 ¸ ä=ä:QA ¸ ä:QˆՐŇ€‚•ˆ͐ˆؐˆߐ•ˆ ֐ˆݐˆ ͈nStateaStateslength cVerifiedURL cVerifyURL setStatus AnnotsString"IDS_SHARED_REVIEW_NETWORK_VERIFIEDoDialogenablevrfy bDoCommitcommitendfnshverifyNextState˙˙˙˙Á1š msgBć ›ć zvA ¸ äTä:QA5 ¸ äYC]\ä:Qˆѐˆ߈$ setStatusoDialogenablevrfy˙˙˙˙ÁŒš resourcestate oCheckURL oMatchURL˝ć řç €v A5A57WQV=E QA5 d; ¸ äT5ä:WQ; ¸ ä9âäA5ä:ä:WQAV5 V5 6QŃĎˆ!•Ýęˆ؈7aStatesnState enumerable bFoundFileutilcrackURLurlunescapecFileURLcPath˙˙˙˙Á+šresourceč †č ‹vA5A ¸ ä:QA ¸ ä:QҐˆ ͈ bFoundFileonVerifySuccessonVerifyFailure˙˙˙˙Ášstatus˘č Ćč ‘vA ¸ ä:Qˆ"͈onVerifySuccess˙˙˙˙Ášstatusăč é ’vA ¸ ä:Qˆ%͈onVerifySuccess˙˙˙˙Á*š  cReviewIDconfigencURLŞő 'ö wT59âäTä:=WQVĺˆŒcSettingencodeURIComponent/˙˙˙˙Ášóö ÷ö wˆ"˙˙˙˙Áš÷ ÷ wˆ ˙˙˙˙Ášresource:÷ G÷ wˆ(˙˙˙˙Ášresourcel÷ y÷ wˆ.˙˙˙˙Ášcodeś÷ ç÷ "wA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙Ášcodeř 3ř 'wA5 ¸ ä:Qˆ҈cxt handleSuccess˙˙˙˙ÁšeLř {ř ,wA5 ¸ äTä:Qˆֈcxt handleFailure˙˙˙˙Áך,cxttaskDatacURLţř Äú 6wTT6QT ¸ ä;5T5555ä:QT55WQVT5WQV= WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q;55 ¸ äVäTäYC]\ä:Qˆ̐ˆňŃˆËp•ˆČp•ˆѐˆؐˆѐˆđˆLcxt setTaskStatus AnnotsString)IDS_SHARED_REVIEW_CREATE_REVIEW_DIRECTORYdataserverSettingscSettingreviewID/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollectionUsePlatformAuth˙˙˙˙ÁšcxttaskDataáú óú Gwˆ)˙˙˙˙ÁšcxttaskDataű ű Hwˆ)˙˙˙˙Áżš,cxttaskDatacURLqű ý LwTT6QT ¸ ä;5ä:QT55WQVT5WQV=WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:Q; 55 ¸ äVäTäYC]\ä:Qˆ̐ˆڐŃˆËp•ˆČp•ˆѐˆؐˆѐˆđˆLcxt setTaskStatus AnnotsString*IDS_SHARED_REVIEW_CREATE_REVIEW_ATTACHMENTdatacSettingreviewID /attachments/app beginPrivCollab uriEncodeendPrivNetHTTPWebDAVCreateCollectionUsePlatformAuth˙˙˙˙ÁšcxttaskData=ý ý ]wT ¸ ä;5ä:Qˆڈ) setTaskStatus AnnotsStringIDS_DONE˙˙˙˙ÁšcxttaskDataŞý źý bwˆ)˙˙˙˙Áaš#reviewIDconfigresult ţ s˙ iwBWQ†A5T6QA5T6Q;5 ¸ äA5ä:WQĆvWQÇV•‘ˆϐˆϐˆŕx•Ę€{ž€w{ˆŒoTaskSetdatareviewIDNetHTTP runTaskSet˙˙˙˙eC˙˙˙˙ÁešreviewIDconfigiš˙ E~wA5T6QTK"mMWQA55VTV78QăL˙˙˙ŕNA5T6Q9âäA5ä:ˆϘ€w…5%ːˆŕˆϐˆֈ*oTaskSetdatareviewIDANTrustPropagateAll%˙˙˙˙ CBFreezeFunc‘š" funcsubsts funcSourceivaluevalSrcIy¤w T ¸ ä:WQTKlmMWQTV7WQVQV'=V ¸ ä:WQV ¸ ä;ä=V=äRäVä:WQăL˙˙˙–NVŇ5oːË”ˆĘ•ˆҐˆúˆŒtoSource undefinedreplaceRegExp"\{\}"o˙˙˙˙Á“š0xdocrequiredReviewersoptionalReviewersbIsValiddataidriverlogEventParamsstartPayloadParamsaddStringToPayloadParamsiŘ˝wTEQ; ¸ äTä:X; ¸ ä:Q; ¸ äY;5]T]\ä:Q; ¸ ä:Q>TEQ; ¸ äTä:X; ¸ ä:Q; ¸ äY;5 ]T]\ä:Q; ¸ ä:Q>9 â ä:WQY\WQVZ\6 QT V9âäTä:6QT V9âäTä:6QTEQT5"VT56QVT6QV; ¸ ä:6Q; ¸ ä:QVZ\6QVY\6QV;5=6Q;5KŠmMWQ;5V7WQV ¸ ä=ä:YV ¸ ä: 9V5V5ŮV8QV5V5V8QVV6 QăL˙˙˙xN; ¸ ä:QY\WQY\WQY\WQV=6!QV=#6"QV=#6$Q; ¸ ä:Q; ¸% äVä:Q; ¸ ä:Q9&â&äVä>ä:Q; ¸ ä:Q; ¸' ä:Q; ¸ ä:QV5(=)9*â*äVä>ä:Q; ¸ ä:Q; ¸+ ä:Q; ¸ ä:QV5(=,DQV5(=)EQV5 Ů>œV5 K„mMWQV5 V7UQ; ¸ ä:QV5(=,DQTV5'T ¸- äYC].C]/\ä:Q; ¸ ä:QăL˙˙˙~NÝ•ˆ ѐˆ  ѐˆ ’Ý•ˆѐˆѐˆ’ŇĘˆΐ •ˆې •ˆېŃ•ˆѐˆ̐ˆِˆѐˆΐˆϘ€wëˆِĚ0€ËŇÔ•ˆĎ4•ˆڐˆژ€wůˆ՘€wţˆј€xʐʐʐˆΐˆΐˆΐˆѐˆՐˆѐˆՐˆѐˆѐˆѐÎ•ˆՐˆѐˆѐˆѐ÷•Ę0€‡ËĐˆѐŕ•ˆ␈ ڈCollab isDocDirtyapp beginPrivalert AnnotsStringIDS_SEND_FOR_REVIEW_DOC_DIRTYcMsgoDocendPrivisInvalidSaveLocationIDS_SEND_FOR_REVIEW_SAVE_OTHERANValidateIdentitydocsOpenedByWizardreqR SplitAddrsoptRpathdocPathdocreviewIDcreateUniqueDocIDserversdrivers readerEnable viewerTypeExchangecanInitiateWorkflow SharedReviewisDocCenterWorkflowlength driverURLdcDrivercatsubcatSharedReviewPayloadevntAVUMStartPayloadWrapperCBRunSharedReviewWizardremoveDocsOpenedByWizardresultfnshCBSharedReviewCompleteAVUMEndPayloadWrappercnclcloseDocbNoSaversvd1 ‡ţ˙˙˙˙ÁÁ šv?đreviewIDactiondatastep reviewInfo localPathbIsAcrobatDotComwizidriverresultparamsoldtooldccnewtonewcccodevalinternalDeadlineág-3xY\WQV=6Qn=oQV;5=6QV5(V= 6Qn= oQ#V= 6Qn= oQ>WQ9 â ä= ä:Q; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:QVT6QVT6QV;56QV;56QVV56QVV56QVV56QT=–9 â ä=TV5ä:QVV5! ¸" ä=#ä:6 QVV5% ¸" ä=#ä:6$QV;5&6QV;5'6Q!V=(6 QV=(6$Q; ¸ ä:Q; ¸) äV5*ä:WQVYV ¸, äV ¸- ä=.ä:?ä:]/V]0\6+Q; ¸ ä:QVV5+5061QVV5+5/62QVV5+5063QVV5564Q9 â ä=6V54ä:QVV54 ¸, ä>äV54 ¸- ä=.ä:ä:64QV52=(YVV54 ¸, äV54 ¸- ä=.ä:?äV54 ¸- ä=7ä:?ä:62Q9 â ä=8V52ä:Q9 â ä=9V54ä:QVV54 ¸, ä>äV54 ¸- ä=.ä:?ä:64Q9 â ä=:V54ä:QVYV5<]==(]>YV54]?\]@\6;QV5;V5A6>Q; ¸ ä:Q; ¸B äV55ä:WQ; ¸ ä:QVVC6CQVB6CQT=PV5=(!;D>7;5F6EQ;D>7;5G6EQ;D>7;5H6EQ9IâIäY;5J]K;5L]E;D]M\ä:WQ; ¸ ä:QVZ\6NQVY\6OQVC6Q;5OKemMWQ;5OV7WQV ¸P ä=Qä:4V5NV5NŮRV8QV5OV5SV8QăL˙˙˙N; ¸ ä:QY\WQV5CĽ; ¸ ä:QV;5U=.V526TQ; ¸ ä:Q9VâVä:WQV5WC,VV5X6XQVV5Z6YQY?][\W QV 9 â ä=\ä:Q9]â]äVä:Q9^â^äVä>ä>äVä:Q9 â ä=_V5`ä:QV5`=a)9 â ä=bä:QV5! ¸" ä=#ä:W QV5% ¸" ä=#ä:W QZ\W QZ\W QV5 KmMWQV VV5 V78QăL˙˙˙ăNV5$KmMWQV VV5$V78QăL˙˙˙ăN9 â äV ä:Q9 â äV ä:Q9câcäV äV äV5däV äV ä:Q9 â ä=eV ä:Q9 â ä=fV ä:QV ŮR>DQV ŮR>VC6gQ?WQV5WQV5h=iD(QV5h=jDQV5h=kżV ŮR>E"QV ŮR>EQV5V>WQ„V5h=jEQV5gNYT]l\W Q; ¸ ä:Q; ¸m äV ä:Q; ¸ ä:Q9nânäVä>ä:QnoV ¸p ä=#ä:ooQnqV ¸p ä=#ä:oqQ9 â ä=r;o;qä:QY;o]s;q]tV5]V][\W Q9 â ä=uä:QV YV][\W QV ĘˆΐˆИ€x;ˆِČ#•ˆΐˆՐˆΐˆА•ˆՐˆѐؐˆѐˆ̐ˆ̐ˆӐˆӐˆѐˆѐˆѐÉ€‘•ˆ␈␈␈ӐˆؐˆΐˆΐˆѐݐˆňĎˆѐˆ֐ˆ֐ˆ֐ˆѐˆސˆřÎ•ˆ˙Րˆސˆސˆúˆޘ€x~ˆȐ͐ʐߐˆ֐ˆѐݐˆѐ•ˆϐˆʐÉK•Î•ˆܐˆܐˆאĐĎĎÓˆѐˆΐˆϐˆʐĚ0hːŇÔ•ˆڐˆޘ€xąˆѐĘČ•ˆѐˆ␈ѐˆҐĘ'•ˆѐˆ֐•Ëˆœ€x͈ՐˆӐˆېˆސÎ€$•˜€x؈ՐݐݐÉÉĘ0"ːˆݐĘ0"ːˆݐˆӐˆӐˆ萐ˆِˆ٘€xóÚ•ˆʐ•Ěö•ě •ˆʐÜ••ÍˆѐˆՐˆѐˆ ՘€yˆߐˆߐˆᐐ•ĘĘÍÍˆՐˆɐ•ÍˆŒ reviewTypeSharedReviewEmailWT_SR readerEnableapp viewerTypeExchangeUB_UB_NOUB DebugAlert!Start ANRunSharedReviewEmailStep beginPrivCollab getReviewInfoendPrivreviewIDaction cannedMsg AnnotsString2IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL_SR cannedSubj(IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_SRdeadline cDeadlineinternalDeadlinecInternalDeadline accessLevel cAccessLevelChangeDeadlineaction reqRcRequiredReviewerssplit;optRcOptionalReviewers;IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_ATTACHED_EMAIL_SR1IDS_SHARED_REVIEW_PREVIEW_CHANGE_DEADLINE_SUBJ_SRconvertPlatformPathToDIPath cLocalPathdoc substring lastIndexOf/documentFileNamepathdocPath cDocumentName cDocumentPathdistributionURL cReviewURLdata.distributionURL 1_data.cDocumentNamedata.distributionURL 2data.distributionURL 3server cDriverURIURL DistMethodcSettingSettingscDistributionMethodisDocCenterURLUseDocumentCenter IWEmailStepstitleIDS_TRACKER_ACTION_ADD_DEADLINE"IDS_TRACKER_ACTION_CHANGE_DEADLINE IDS_TRACKER_ACTION_ADD_REVIEWERSCBTrustPropagateWiz IDS_FINISH finishString!IDS_SHARED_REVIEW_WIZARD_TITLE_SRstepsserversdriverscanInitiateWorkflow SharedReviewlength driverURL docCtrURL docCenterURLANDocCenterLoginForAddReviewersresponseswConnuserUsernamecode Calling the commit work function DistributionServerStepCommitWorkCBRunSimpleWizNewreturned from wizardresultfnshcalling filterAddrs filterAddrscInitiatorEmailafter returning new toafterreturning new ccsendAttachmentdistributionMethodUPLOADEMAILMANUAL cReviewIDtakeOwnershipAndPublishCommentsCBSharedReviewCompleteinviteesjoinccinvitees + cc newTonewCcend link task complete("ö"áh˙˙˙˙Á ú š ^QňpropsdatastepoldPatholdNamenewPathwizidriverlogEventParamsstartPayloadParamsaddStringToPayloadParamsretValdocâ-ŁH+yY\WQ>WQVZ\6Qn=oQV=6QV=6Qn=oQTT5?&V=6QV= 6QV; 5 6 QV; 56 QV=6QV=6QT5œVY=]T5]\6Q; ¸ ä:QV; ¸ äV55ä:6Q; ¸ ä:QV55WQ9âä=Vä:QV5V ¸ äV ¸ ä=ä:?ä:6QV55WQV ¸ ä>äV ¸ ä=ä:?ä:WQ9âä= Vä:QVT5" ¸ äT5" ¸ ä=ä:?ä:6!QVT5"6#Q9âä=$V5#=$V5!ä:QT5%3VT5%6%QV 5%V5!6%QV=6%Q; ¸ ä:QV; ¸' ä=ä:6&Q; ¸ ä:Q9âä=(T5)ä:Q9âä=*T5%ä:QT5)V5&T5)6+QT5% V5&5,T5%6-QT5.sT5.Fa1IV5&=06/Q5V5&=16/QV5&=26/QV=6.Q93â3äY; 54]5; 56]7;8]9\ä:WQ; ¸ ä:QVZ\6:QVY\6;QVC6 ä: 9V5:V5:Ů?V8QV5;V5@V8QVV6AQăL˙˙˙xN; ¸ ä:Q9BâBäVä:Q9CâCäVäVä:QV5D=E9FâFäVä:>ŘT5×ČV5&T5)6+QVY=]T5]\6Q; ¸ ä:QV; ¸ äV55ä:6Q; ¸ ä:QV55WQ9âä=Vä:QV5V ¸ äV ¸ ä=ä:?ä:6QV55WQV ¸ ä>äV ¸ ä=ä:?ä:WQ9âä= Vä:QVV ¸G ä ä=ä:9HâHä=I;ä:=J6!QVVV5!6#Q9âä=$V5#=$V5!ä:Q×WQV; ¸L ä:6KQ; ¸ ä:QVZ\6:QVC6 ä: 9V5:V5:Ů?V8QV5;V5@V8QVV6AQăL˙˙˙xN; ¸ ä:QY\WQY\W QY\W QV =6OQV =Q6PQV =Q6RQ; ¸ ä:Q; ¸S äV ä:Q; ¸ ä:Q9TâTäVäVä:Q9âä=UV5Vä:QV QV5D=EDQV5WC 9XâXäVä:W QJV5V×DQV5V×)YV5V]VV5]\W Q; ¸ ä:Q; ¸Y ä:Q; ¸ ä:QV5D=ZD6QV5D=ED"QV5V×DQV5V×EQV5Ů?>œV5K„mMWQV5V7W Q; ¸ ä:QV5D=ZDQV V5'V ¸[ äYC]\C]]\ä:Q; ¸ ä:QăL˙˙˙~NV Ę•ˆΐˆАˆΘ€y6ˆΐˆА •Ę€!•ˆ ΐˆΐˆӐˆӐˆΐˆ ΐČ•ˆҐԐˆѐˆ琈ѐŃˆِˆóŃëˆِˆřˆѐˆ퐐Č.•ˆѐˆŃp̐ˆΐˆѐˆߐˆѐˆސˆސČ•ˆ֐Č•ˆېČn•ČXaِˆ ӐP•ˆ ӐP•ˆ ӐPʘ€y†ˆΐĐĎĎÓˆѐˆΐˆϐˆʐĚ0€ËŇÔ•ˆ Ď4•ˆڐˆژ€y ˆ՘€yĽˆѐˆӐˆאÎ•ˆ ؐˆŸ€yśË•ˆ֐ˆҐԐˆѐˆ琈ѐŃˆِˆóŃëˆِˆ˙•ˆՐˆ퐐ˆ–ˆِˆѐˆΐˆʐˆѐ×•ˆϐĚ0€ËŇÔ•ˆĎ4•ˆڐˆژ€y쐈՘€yóˆѐʐʐʐˆΐˆΐˆΐˆѐˆՐˆѐˆאˆސ”Ţ•ˆېÜ•ˆ•ÍŇˆѐˆѐˆѐ˙Ú•Ę0€‡ËĐˆѐŕ•ˆ␈ ڐˆŒdocsOpenedByWizardWT_FD reviewTypeFormDistributionUBactionFormDistributionEmail AddReviewers cannedMsg AnnotsString2IDS_SHARED_REVIEW_PREVIEW_INVITE_ATTACHED_EMAIL_FD cannedSubj(IDS_SHARED_REVIEW_PREVIEW_INVITE_SUBJ_FDreqRoptR originalPathdocdocumentFileNamepathapp beginPrivdocPathCollabconvertDIPathToPlatformPathendPriv DebugAlertoldPath substring lastIndexOf/newPath cDocumentNamesavePath cDocumentPath1 initiationURLserver getEmailDistributionReviewServer props.driver :driver props.initiationURLURLSettingscSettingdistributionMethod DistMethodEMAILUPLOADMANUALCBTrustPropagateWiz IDS_FINISH finishString!IDS_SHARED_REVIEW_WIZARD_TITLE_FDtitleIWEmailFormStepsstepsserversdrivers readerEnablecanInitiateWorkflowisDocCenterWorkflowlength driverURLdcDriver DistributionServerStepCommitWork CBRunFormDistributionWizardEmailresultfnshCBFormDistributionEmailCompletereplace SharedStringIDS_SHARED_REVIEW_FILE_EXT.pdfreviewIDcreateUniqueDocID selectFile,urn://ns.adobe.com/Collaboration/Forms/EmailcatsubcatFormDistributionPayloadevntAVUMStartPayloadWrapperCBRunFormDistributionWizarddata.IWStatus IWStatusplaceSubmitButtonCBFormDistributionCompleteAVUMEndPayloadWrappercnclcloseDocbNoSaversvd1.pdf$m ‡ó–˙˙˙˙ CBRunFormDistributionWizardEmail‡š data startStepwizŃHDJ z9âä=ä:Q9âäY;5];5];] \ä:WQ9âä= ä:Q9 â äVä>ä>äTä:ˆՐĐĎĎÓˆՐˆۈ* DebugAlertCBFormDistributionWizardCBTrustPropagateWiz AnnotsString IDS_FINISH finishString!IDS_SHARED_REVIEW_WIZARD_TITLE_FDtitleIWEmailFormStepssteps'calling cbrunsimplewiznew from wizemailCBRunSimpleWizNew˙˙˙˙IWUploadFileFailedDialog›š0ÂK@datafilesFailed_UnsupportedfileFailed_OutOfSpacefilesFailed_Unknown bAllFailed errorType descriptionŽKęi;z>Š˙˙˙˙Qˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>?Š˙˙˙˙Qěˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙Qšˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙QHˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙Qöˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙Q¤ˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙QRˆ˙˙˙˙Ů>E,Qˆ˙˙˙˙Ů>EQˆ˙˙˙˙Ů>׊˙˙˙˙QY‚]‚]‚]‚]‚]Y9âä=;ä:] = ] = ] >]>]ZY=]ZY=]= ] = ] =]=]=]=];5];5]ZY=]XÂ]C]; 5!] ="]\`Y=#]=$]= ] XŞ]%XÂ]\`Y=&]; 5'] =]= ] \`Y=&]; 5(] =]= ] \`Y=)]\`\]*\`\]*\`\]*\]+\WQ;, ¸- ä:Q9.â.äVä:WQ;, ¸/ ä:QVËü•ˆАü•ˆѐü•ˆѐü•ˆѐü•ˆѐü•ˆѐü•ˆ̐•Ę˜€zĎʘ€zÓʘ€z×ʘ€zĺʘ€zô•ßĘĘ––”•Ę”•ĘĘĘĘĘĘĘĎĎ”•ĘČ–ϐϐ•ĘĘĘČÍ•ĘĎĘĎ•ĘĎĘĎ•ö˜€{2ˆѐˆ֐ˆѐˆŒlength initializecommitidlelnk1lnk2 SharedString'IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLEWTname align_leftalign_children align_fill alignment margin_width margin_heightgrouptypeviewmgrpitem_iddialogBackground back_color topToBottomgradient_direction darkToLight gradient_typeCollabwizardMarginWidth static_textwidth wrap_name AnnotsString.IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLYtxt0mclvlistheight link_text.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG$IDS_SHARE_FILE_LINK_OUT_OF_SPACE_MSGokelements descriptionapp beginPrivANTrustPropagateAllendPriv˙˙˙˙Áqš:rdialogtoShowtoLoadtxt0paramsia_rowPě`QzY\WQY\WQ=WQYYZY=];5]<]\`Y=];5]<]\`\] Z\] \] \WQVB6 QVB6 Qˆ˙˙˙˙?^ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 QՈ˙˙˙˙×^ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 Qkˆ˙˙˙˙×Aˆ˙˙˙˙;5;5WQVV6Qˆ˙˙˙˙×{ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 QVC6 QV;56 Q—ˆ˙˙˙˙×^ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 Q-ˆ˙˙˙˙×^ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 QÈ˙˙˙˙×{ˆ˙˙˙˙;5;5WQVV6QVC6 QV;56 QVC6 QV;56 Q<ˆ˙˙˙˙;5;5WQVV6Qˆ˙˙˙˙KZmMWQYˆ˙˙˙˙V7];5]\WQV5 5 V5 5 ŮV8QăL˙˙˙¨Nˆ˙˙˙˙KZmMWQYˆ˙˙˙˙V7];5]\WQV5 5 V5 5 ŮV8QăL˙˙˙¨Nˆ˙˙˙˙KZmMWQYˆ˙˙˙˙V7];5]\WQV5 5 V5 5 ŮV8QăL˙˙˙¨NT ¸ äVä:QT ¸ äVä:QT ¸ äVä:QĘĘÉ••”íóŐ˜€zfˆʐˆʐËY•ˆÉ␈̐ˆʐˆؐĚY•ˆÉ␈̐ˆʐˆؐĚ<•ˆÉ␈ѐĚv•ˆÉ␈̐ˆʐˆӐˆʐˆؐĚY•ˆÉ␈̐ˆʐˆؐĚY•ˆÉ␈̐ˆʐˆؐĚv•ˆÉ␈̐ˆʐˆӐˆʐˆؐˆÉ␈̘€zŹË0]ː•ŇÔˆ퐐Ë0]ː•ŇÔˆ퐐Ë0]ː•ŇÔˆ퐐ˆӐˆӐˆӈFileNameName AnnotsString%IDS_SAHRE_FILE_ERROR_DIALOG_MCLV_COL1UIwidthError%IDS_SAHRE_FILE_ERROR_DIALOG_MCLV_COL2aColumnsaRowslistlnk1lnk2FIDS_SHARE_FILE_ERROR_MESSAGE_UNSUPPORTED_FILE_TYPE_ONLY_AND_ALL_FAILED7IDS_SHARE_FILE_ERROR_MESSAGE_UNSUPPORTED_FILE_TYPE_ONLYtxt0.IDS_SHARE_FILE_LINK_UNSUPPORTED_FILE_TYPES_MSG=IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLY_AND_ALL_FAILED.IDS_SHARE_FILE_ERROR_MESSAGE_OUT_OF_SPACE_ONLY!IDS_SHARE_FILE_ERROR_OUT_OF_SPACE8IDS_SHARE_FILE_ERROR_MESSAGE_UNKNOWN_ONLY_AND_ALL_FAILED)IDS_SHARE_FILE_ERROR_MESSAGE_UNKNOWN_ONLY3IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL_AND_ALL_FAILED$IDS_SHARE_FILE_ERROR_MESSAGE_GENERAL%IDS_SHARE_FILE_UNSUPPORTED_FILE_TYPES*IDS_SHARE_FILE_ERROR_UNSUPPORTED_FILE_TYPElengthIDS_SHARE_FILE_ERROR_UNKNOWNloadvisibleŮ]k]ý]333333ă?š™™™™™Ů?˙˙˙˙ÁšdialogaaĎzˆ˙˙˙˙Ášdialog*aoô…‰{T5WQT5WQVEQ; ¸ äVä:X; ¸ ä:Q; ¸ äY;5] V] \ä:Q; ¸ ä:Q>Y\WQVEQV5 hVV5 6 QVV5 ¸ äV5 ¸ ä=ä:?äV5 Ůä:6QVV6QVV6Q9âäVä>ä:QV5=V5ň9âäVä:QV5WQBWQCWQV55K?mMWQV55V75>CWQV BWQăL˙˙˙ĂNV œ=WQ=WQ=W QV5Ů?69âä=; ä:WQ;5!WQW9âä="; ä:WQV ¸# ä äV5Ůä:WQ;5$WQ;5%W Q9&â&ä='ä:Q9&â&ä=(V55)5*ä:Q9+â+ä=(V55)5*ä:QY\UQYV],V]-V ])\UQBW Q; ¸ ä:Q;5.W Q; ¸ ä:QV Ů>CW QM; ¸ ä:Q; ¸/ ä:WQ; ¸ ä:QV50 CW QV q91â1äT5,äT5-äT5)ä:W Q; ¸ ä:Q; ¸2 äV ä:W Q; ¸ ä:Q<; ¸ ä:Q; ¸3 äTä:Q; ¸ ä:Q—Z\WQZ\WQZ\WQV55KumMWQV55V75XœaV5V754WQV ¸ äV ¸ ä=ä:?äVŮä:WQVVŮV8QôV55V75X“aV5V754WQV ¸ äV ¸ ä=ä:?äVŮä:WQVVŮV8QyV55V75>\V5V754WQV ¸ äV ¸ ä=ä:?äVŮä:WQVVŮV8QăL˙˙ţN9+â+ä=5ä:Q96â6äVä:Q96â6äVä:Q96â6äVä:Q97â7äA58äVäVäVäVä:W Q; ¸ ä:Q; ¸2 äV ä:Q; ¸ ä:Q9&â&ä=9V5:ä:Q9+â+ä=9V5:ä:Q; ¸ ä:QV5 ¸; ä:Q; ¸ ä:Q; ¸ ä=<ä:QĚĚÝ•ˆ ѐˆ  ѐˆ ’ĘŃ•ˆѐˆ˙—ˆ̐ˆ̐ˆՐÎ•Č€핐ˆӐĚ••Ď0BːŘ •ˆ ʐ •ˆ Θ€{ťˆ €—•ÉÉÉĎ1•ˆ ސˆ Ә€{ɐˆ ސˆ 搐ˆ ΐˆ ΐˆՐˆ萈萐ʐˆ •ČČÍ˜€{═ˆѐΐˆѐĘ •ˆʐˆѐԐˆѐČ•ˆ•l•íˆѐؐˆ֐ˆ ѐˆ Րˆ ֘€|ÉÉÉĎ0€xːÚ\•ŐňˆՐÚ\•Őňˆ ՐŘ•Őňˆ٘€|ˆՐˆ Ӑˆ Ӑˆ ӐéˆѐˆՐˆѐˆ ސˆ ސˆѐˆ Ԑˆ ֐ˆ׈FdoctypeCollab isDocDirtyapp beginPrivalert AnnotsString$IDS_SEND_FOR_COLLABORATION_DOC_DIRTYcMsgoDocendPrivpathdocPathdocName substring lastIndexOf/lengthCBRunShareFileWizardresultfnshswConnCBShareFileComplete initResultprops filesToUpload uploadResultdocList SharedString IDS_SHARE_FILE_BEZEL_SINGLE_FILEWT0IDS_SHARE_FILE_BEZEL_SINGLE_FILE_DOC_CENTER_LINK#IDS_SHARE_FILE_BEZEL_MULTIPLE_FILESreplace4IDS_SHARE_FILE_BEZEL_MULTIPLE_FILES_DOC_CENTER_LINK_IDS_SHARE_FILE_VIEW_MY_FILES DebugAlertWorkflow initiation succeededWorkflow file URL: uploadPathNameDIText DebugPrintln bezelMessagebezelLinkMessage activeDocsGetActiveDocIWisInCollectionIWShareFileConfirmDialog execDialogshareFileBezel localPath$The following files failed to upload ANDumpObjIWUploadFileFailedDialogdataWorkflow initiation failed: errorMessage disconnect7 ERROR: Unable to establish connection with Acrobat.com%cNum% xŽB˙˙˙˙Áš<Ô7@datadrivermaxStr progressInfodialog†ޤ:|=WQ;5 ¸ ä ä;5 ¸ ä ä;5ä:ä:WQ; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QY@] >] V] V]ˆ˙˙˙˙]Z\]Y‚]‚]‚]\]‚]‚]‚]‚]‚]‚]‚ ]‚ ]‚ ]‚ ]‚ ]‚] Y9!â!ä=";#ä:]$XÂ]%ZY=&]'=(])ZY=&]'=*]+ZY=,]'X]%× ]-=.]/\`\]0\`Y=1]'=(])=2]/C]3V]$XÂ]%\`Y=4]';55]6\`\]0\`\]0\]7\WQˆ˙˙˙˙C68QLm; ¸ ä:Q; ¸9 ä9:â:äVä:ä:Q; ¸ ä:Qăˆ˙˙˙˙58˙˙˙ŠV5V5 ¸; ä:QV@6QÉ˙—ˆѐԐˆѐ•––ȐȐΐʐ•Ę˜€|“Ę˜€|ŸĐ˜€|ŤĘ˜€|˛Ę˜€|śĘ˜€|Ďʘ€|Öʘ€|Űʘ€|ăʘ€|éʘ€|îʘ€|ţʘ€}ʘ€}'ʘ€}9•ßČ”•ĘĘ”•ĘĘ”•ĘČ—Ú˜€}P•ĘĘĘ–Ȑ͐•Ęđ˜€}bˆА(\•ˆ™€}dˆѐˆ䐈ј€}cˆ՘€}jČ•ˆԐˆʈ8urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.com AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEreplace IDS_SHARED_REVIEW_COMPLETE_ERRORIDS_NETWORK_NO_CONNECTapp beginPrivCollabgetProgressInfoendPrivoDialog nCurrentTaskoDriver oProgressInfodataaCompleteTasksrunTask onSuccess onFailureoShareFileTasksupdateProgressupdateProgressDialog initialize setTaskStatussetTaskErrorStatussetTaskProgressgetCurrentTask getNumTasksrunCurrentTask handleSuccess handleFailurecommit SharedString'IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLEWTnamewidthviewtype align_fill alignment align_rowalign_children progress_barheightprogitem_idelements static_textdesc wrap_name ok_cancel IDS_SHARED_REVIEW_COMPLETE_RETRYok_name description shouldRetry execDialogANTrustPropagateAll setHandler˙˙˙˙Ámš-˘^cxt localDiPathsicopyMeinviteespropsfˆO|†Z\WQT ¸ ä;5ä:Q; ¸ ä:Qˆ˙˙˙˙5K;mMWQVVŮ; ¸ äˆ˙˙˙˙5V7ä:8QăL˙˙˙ÇN; ¸ ä:QCWQ; ¸ ä:Q;5 WQ; ¸ ä:Q= WQˆ˙˙˙˙5 >rˆ˙˙˙˙5 ¸ ä=ä:=ˆ˙˙˙˙5 ¸ ä=ä:WQV!V=ˆ˙˙˙˙5WQY=]V]ˆ˙˙˙˙5]ˆ˙˙˙˙5]V]ˆ˙˙˙˙5]; ¸ äˆ˙˙˙˙5ä:×= =] \WQ; ¸ ä:Qn!ˆ˙˙˙˙5" ¸# äVä:o!Q; ¸ ä:Q9$â$ä=%ä:Q9&â&ä;!5'5ä:Q;!5'5K.mMWQ9&â&ä;!5'5V7ä:QăL˙˙˙ÔNˆ˙˙˙˙;!6!Qˆ˙˙˙˙;!5)6(Qˆ˙˙˙˙5(>DQˆ˙˙˙˙5(Xœ)ˆ˙˙˙˙C6*QT ¸+ ä:QT ¸, ä:Q'ĆvWQT ¸, ä:Qǐ‘Éˆڐˆ ѐĐ0>ːˆ ůˆѐ•ˆѐˆΐˆѐÉĐ•ˆ ˙ʐ •ˆ ܐ•ĘČÓÓČÓâ ސˆѐˆ 萈 ѐˆՐˆߐŃ01ːˆ쐐ˆԐˆِč$•ˆАˆԐˆĎx•Ęˆπ{–ˆ setTaskStatus AnnotsStringIDS_SHAREFILE_SING_PROGRESSapp beginPrivdocListlengthCollabconvertPlatformPathToDIPathendPrivcopyMetypereqRjoin;optRuser8urn://ns.adobe.com/Collaboration/FileSharing/Acrobat.comdriverinviteessubjsubjectmsgbody localPaths filesToUploadMathabs accessLeveltruefalsesetACL initResultswConninitiateWorkflow DebugPrintln######the upload result: ANDumpObjpropsinitiateWorkflowResultresultsaved handleSuccess handleFailure˙˙˙˙eI†1J>˙˙˙˙Á§šcxtmsg6‘“|ˆ˙˙˙˙5Ů?4T ¸ ä9âä=;ä:ä:Qb9âä=;ä:WQV ¸ ä äˆ˙˙˙˙5Ůä:WQT ¸ äVä:QŐ/•ˆ Ţˆ 쐈ӈdocListlength setTaskStatus SharedString IDS_SHARE_FILE_BEZEL_SINGLE_FILEWT#IDS_SHARE_FILE_BEZEL_MULTIPLE_FILESreplace%cNum%˙˙˙˙Á‡š cxterrorMsg generalErrorť‘†“Ÿ| ;5WQ;5 ¸ ä ä;5 ¸ ä=ä:@;5;5 ä:WQT ¸ äV= Vä:QÎŘÝ•ĎŇˆ݈5 AnnotsStringIDS_DEFINITION_LIST_ERRORIDS_HTTP_ERROR_UNKNOWNreplaceapp viewerTypematchExchangeIDS_PRODUCT_VARIANT_ACROBATIDS_PRODUCT_VARIANT_READERsetTaskErrorStatus %cProductVariant%˙˙˙˙Á3š ­“_”Ť|A ¸ äA55ä:QA ¸ äA55ä:Qˆِˆو: setTaskStatus oProgressInfo cTaskStatussetTaskProgressnPercentComplete˙˙˙˙Ášdialog„”–”˛|ˆ˙˙˙˙Áš5dialogdatatoLoadtoEnableł”-—ś| A5WQA5A5 ¸ äAä:QVB6QAT6QY=]\WQYV5]B] B] \WQA5 A5 Ů 9 â äA5ä:8QT ¸ äYB] B] \ä:QT ¸ äVä:QT ¸ äY;5] \ä:QT ¸ äVä:QA5=6QĘ•ˆԐˆʐˆʐÔăˆ萐ˆ␈Ӑˆ合Ӑˆшdata oProgressInfo setHandler shouldRetryoDialogdescbWorkspaceSetuptaskokcancelaCompleteTaskslengthANTrustPropagateAlloShareFileTasksvisibleload AnnotsStringIDS_OKenablestateRUNNING˙˙˙˙ÁEš statusmsgK—˜Ď|;5 ¸ ä äTä:WQA5 ¸ äYV]\ä:Qăˆáˆ! AnnotsString!IDS_SHARED_REVIEW_STATUS_TEMPLATEreplaceoDialogloaddesc {cStatus}˙˙˙˙Á"šmessage'˜d˜Ö|A5 ¸ äYT]\ä:Qˆáˆ%oDialogloaddesc˙˙˙˙ÁJš nPercentnSegLen nComplete„˜t™Ű|×dA ¸ ä:WQA5T×dWQA5 ¸ äYVV]\ä:QÓŃˆĺˆ3 getNumTasks nCurrentTaskoDialogloadprog˙˙˙˙Áš nIdx“™č™ă|A5WQA5V7Ęˆˈ! nCurrentTaskaCompleteTasks˙˙˙˙Á šš9šé|A5ِˆ̈$aCompleteTaskslength˙˙˙˙Áiš Xšm›î|†A ¸ ä>ä:QA ¸ ä: ¸ äAä:QA55=A ¸ ä×dä:QĆvWQǐ‘ˆϐˆڐŃ•ˆĐx•Ę€{–ˆsetTaskProgressgetCurrentTaskrunTaskdatastateRUNNING˙˙˙˙eT˙˙˙˙Ášš &‹› ţ|A ¸ ä: ¸ äAä:QA 5# ?… 6QQA5A ¸ ä:JA5C6QA5 ¸ äYC]\ä:QA ¸ äA5ä:QA ¸ ä:QˆڐˆՐÓE•ˆ͐ˆߐˆِˆ͈getCurrentTask onSuccess nCurrentTask getNumTasksdatabWorkspaceSetupoDialogenableokcommitrunCurrentTask˙˙˙˙Á)š7es*uŸ}†T;EQT5;>;5 ¸ ä äT5ä:WQA ¸ äVä:QA ¸ ä: ¸ äAä:QA5= 6 QA5 ¸ äY;5 ]\ä:QA5 ¸ äYC]C]\ä:QA5 ¸ äYC]C]\ä:QA>6QA ¸ ä>ä:QĆvWQǐ‘Ý•čˆѐˆڐˆѐˆ萈合合ȐˆĎx•Ę€{–ˆ undefinedtext AnnotsString IDS_SHARED_REVIEW_COMPLETE_ERRORreplace setTaskStatusgetCurrentTask onFailuredatastateRETRYoDialogload IDS_SHARED_REVIEW_COMPLETE_RETRYokvisiblecancelenable nCurrentTasksetTaskProgress˙˙˙˙e%error%˙˙˙˙Áxš3dialogŒŸŤ '}A55x=y=y5zWA>6QA5=6QA5C6Q,A5B6QT ¸ ä=ä:QË`l‘m €}1mʘ€}+ˆȐˆѐˆ͐P•ˆ͐ˆՐP•ˆdatastateRETRYRUNNING nCurrentTask shouldRetryendok {cStatus}%error%“\˙˙˙˙ÁĘš#ĽIbInSilentShowProgressMonitordatawizݤfŤp} A;äR6QA5B6QY\WQV=6Q9âäVäYT]\ä: I9âäY;5 ] ;5 ] ; ]\ä:WQ9âäVä>ä×˙äVä:QV5=ÇV5¨A5C6Q; ¸ ä:QA5V5 ¸ ä=ä:6QA5V5 ¸ ä=ä:6QA5V5 ¸ ä=ä:6Q; ¸ ä:QA5B6QA5B6QÂV5¨A5C6Q; ¸ ä:QA5V5 ¸ ä=ä:6QA5V5 ¸ ä=ä:6QA5V5 ¸ ä=ä:6Q; ¸ ä:QA5B6QA55CAA5V56QA5V56QA5V5!6 Q9"â"äA5ä:QA5ˆѐˆ͐Ęˆΐˆâ€D•ĐĎĎÓˆܐ΀•Č€Ł•ˆ͐ˆѐˆ合合合 ֐ˆҐˆҘ€}–Č€Ł•ˆ͐ˆѐˆ 合 合 合 ֐ˆ͐Í•ˆԐˆԐˆԘ€}Žˆ֐ˆresultObjectresponse reviewTypeDocCenterLoginSilentDocCenterLoginbShowProgressMonitorCBTrustPropagateWiz AnnotsString IDS_FINISH finishString"IDS_SHARED_REVIEW_ADOBE_DOC_CENTERtitleDocCenterLoginStepsstepsCBRunSimpleWizNewfnshswConnapp beginPriv AuthToken getAuthInfo authToken AuthTokenType authTokenType Timestamp timeStampendPrivUsernameuserPasswordpswdSaveCredentialrememberPassword ANDumpObj˙˙˙˙ANDocCenterLoginForAddReviewersÖš(datawiz“Ť#°ł} A;äR6QA5B6QY\WQV=6Q9âäVäYC]=]\ä: ¸9 â äY; 5 ] ; 5 ];]\ä:WQ9âäVä>ä×˙äVä:QV5=6V5A5C6QA5B6QA5B6Q1V5A5C6QA5B6QA55CZA5V56QA5V56QA5V56QA5V56QA5@6Q9âäA5ä:QA5ˆѐˆ͐Ęˆΐˆę€ł•ĐĎĎÓˆܐÎ1•Č•ˆҐˆҐˆҘ€}ӐČ•ˆҐˆ͐ÍU•ˆԐˆԐˆԐˆِˆ͐ˆ֐ˆresultObjectresponse reviewTypeDocCenterLoginSilentDocCenterLoginbShowProgressMonitor9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comcDriverCBTrustPropagateWiz AnnotsString IDS_FINISH finishString"IDS_SHARED_REVIEW_ADOBE_DOC_CENTERtitleDocCenterLoginStepsstepsCBRunSimpleWizNewfnshswConnUsernameuserPasswordpswdSaveCredentialrememberPassword ANDumpObj˙˙˙˙Áášx4disableddescresultdatawizY°Đľě} A;äR6QA5B6Q; ¸ ä:Q; ¸ ä:WQ; ¸ ä:QVX9âä:WQ; ¸ ä:Q; ¸ äVä:WQ; ¸ ä:QA5Y\WQV= 6 Q9 â äY; 5]; 5];]\ä:WQ9âäVä>ä×˙äVä:QV5=6V5A5C6QA5B6QA5B6QA55CAA5V56QA5V56QA5V56Q9âäA5ä:QA5ˆѐˆ͘€}öˆѐԐˆѐ •Ňˆѐؐˆѐˆ—ĘˆΐĐĎĎÓˆܐÎ1•Č•ˆҐˆҐˆ͐Í•ˆԐˆԐˆԐˆ֐ˆresultObjectresponseapp beginPrivCollabisDocCentreSignupDisabledendPriv-IWSharedReviewDocCenterEligibilityErrorDialog execDialog reviewTypeDocCenterSignupCBTrustPropagateWiz AnnotsString IDS_FINISH finishString"IDS_SHARED_REVIEW_ADOBE_DOC_CENTERtitleDocCenterSignupStepsstepsCBRunSimpleWizNewfnshswConnUsernameuserPasswordpswdSaveCredentialrememberPassword ANDumpObj˙˙˙˙Á&šš9doceaddrdata-śŁş&~ ; ¸ ä:Q;5WQ; ¸ ä:QV Amăn; ¸ äBä;5 ä:oQ;˝; ¸ ä:Q;5WQ; ¸ ä:Q9 â äVä: p; ¸ ä:Q; ¸ äY;5 ] ;5]?]T]\ä:Q; ¸ ä:Q@WQ@WQV@˙˙˙; ¸ ä:QV@;V6Q; ¸ ä:QV@ =Y\WQTEQT5GVT56QT5 ¸ ä ä:V;56Q9âäVä>ä?ä:QV5=V5 =ˆѐΐˆѐˆ •(€ř)€üˆ›€~/ˆč€¸•ˆѐˆΐˆѐˆÓ•ˆѐˆ˙•ˆѐˆʘ€~@ˆ•@•Ęˆѐ •ˆΐˆѐ –ĘŃ•ˆѐŮ•ˆӐˆאÎ•ˆΐˆŽ app beginPrividentityemailendPrivbStatusCollab getIdentity AnnotsStringIDS_REVIEW_IDENTITY_SETUP_TEXTCBIsValidEmailalertIDS_EMAIL_INVALIDcMsgIDS_BROWSER_BASED_REVIEW_TITLEcTitlenIconoDocpathdocPathmatchdocFS fileSystemWebDAVCBRunBBRReviewWizardresultfnsh fixedDestURL^http:˙˙˙˙ÁK šIČdoc decodedURLdataemailto cstoreInitinitDateinitinitAPRsubjurl sendResult sendRaiseeparamsdocName arguments‚ťŹÉb~ Š˙˙˙˙QYˆ˙˙˙˙]ˆ˙˙˙˙]\Š˙˙˙˙Q; ¸ ä:Q;5Š˙˙˙˙Q; ¸ ä:QŐm9âäˆ˙˙˙˙ä×ä×˙ä:Qˆ˙˙˙˙5= šˆ˙˙˙˙5 ¸ ä= ä:Š˙˙˙˙Q9 â ä‚äYˆ˙˙˙˙5]ˆ˙˙˙˙5]\ä:=Š˙˙˙˙Q;äRŠ˙˙˙˙Q9 â ä‚äY;5];]ˆ˙˙˙˙]ˆ˙˙˙˙]=]ˆ˙˙˙˙]ˆ˙˙˙˙]\ä:=Š ˙˙˙˙Q9 â ä‚äY;5];] ˆ˙˙˙˙]ˆ˙˙˙˙]=]ˆ˙˙˙˙]ˆ˙˙˙˙]\ä:=Š ˙˙˙˙Qˆ˙˙˙˙5!Š ˙˙˙˙Q="9#â#äˆ˙˙˙˙ä:=$9#â#äˆ ˙˙˙˙ä:=%9#â#äˆ˙˙˙˙5&ä:='Š ˙˙˙˙Qˆ ˙˙˙˙QBŠ˙˙˙˙Qˆ˙˙˙˙Q†; ¸ ä:Qˆ˙˙˙˙ ¸( äYˆ ˙˙˙˙])Z\]*Yˆ ˙˙˙˙]+ˆ ˙˙˙˙],\]-B].\ä:Š ˙˙˙˙Q; ¸ ä:QbĆvŠQ; ¸/ äYˆ50]1ˆ]2\ä:QCŠQLj˙˙˙˙ EQˆ ˙˙˙˙FYˆ˙˙˙˙]@]ˆ˙˙˙˙]3ˆ˙˙˙˙]4=]=]5ˆ˙˙˙˙]6\Š˙˙˙˙Q;7 ¸8 äˆ˙˙˙˙ä:Qˆ˙˙˙˙59Š˙˙˙˙Q;5:=;@ˆ˙˙˙˙ ¸< äˆ˙˙˙˙ ¸= ä=>ä:?ä:Š˙˙˙˙Qˆ˙˙˙˙ ¸? ä=@ä:×˙EQˆ˙˙˙˙5žˆ˙˙˙˙5 ¸< äˆ˙˙˙˙5 ¸= ä=Aä:?ä:Š˙˙˙˙Qˆ˙˙˙˙=BŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙59Š˙˙˙˙Qˆ˙˙˙˙=CŠ˙˙˙˙Q; ¸ ä:Q;7 ¸D ä;5E ¸F ä äˆ˙˙˙˙ä:ä=ä;5G ¸F ä äˆ˙˙˙˙ä:ä=Hä:Q; ¸ ä:Q?>ăC˙˙ú-ÂėěˆѐԐˆѐ(€ؕˆ™€~kˆߐÔ€••éŃ˜€~v•ÓŘĐÔŃ˜€~••ĎĘÎÎĘÎÓĐŃ˜€~ˇ•ĎĘÎÎĘÎÓĐŘ˙ňĘËĘ‘ˆѐˆ˙됈Ńx•Đˆůˆˀ{–ˆŮ••Î–ΐΐʐʐِˆېŘĐ•ˆűń•ˆ˙–ˆÎpːˆ×pːˆÎpːˆѐˆó–ćĘˆѐˆ—ˆš€~jˆȘ€~úˆdoc decodedURLapp beginPrividentityemailendPrivCBRunBBRReviewWizardresultfnshaddrsjoin; CBFreezeFunccollabStoreTypecNamecollabStoreSettings cSettings()Date AnnotsStringIDS_SEND_FOR_REVIEW_VERSION_ERR cAcroVersionCBCanDoReviewWorkflowCheckExpr canDoWorkflow initiatortoccdatescriptCBCanDoWorkflowCheckExprAPRcanDoWorkflowAPRsubjmailto:escape ?subject=&body=msg &ui=false submitFormcURLaFieldsAfterAfterPermsReady oJavaScriptbCheckReqdFieldsalertmessagecMsgoDoc initScriptinviteesbccsentDateCollabregisterReviewdocumentFileNameplatformWIN substring lastIndexOf\indexOf%/ () alertWithHelpIDS_SEND_FOR_REVIEW_CONFIRM_MSGreplace!IDS_SEND_FOR_REVIEW_CONFIRM_TITLEAnnots:SendForReviewConfirm˙˙˙˙Á-šťź˝r~; ¸ äY=]=]\ä:QˆěˆHCollabcreateAnnotStore{cName}cName {cSettings} cSettings˙˙˙˙Áá š.˜scriptparams argumentsÁ˝xż}~ Š˙˙˙˙Q9âä=ä{w~ !; ¸ ä=ä:QĄ=Š˙˙˙˙Q9âäˆ˙˙˙˙ä{w~‡QYA]=]ˆ˙˙˙˙] = ] = ] =]=]\Š˙˙˙˙Q; ¸ äˆ˙˙˙˙ä:QÂėˆŘ•ˆܐĎˆܐ•–ʐΐʐʐʐՐˆۈeval{canDoWorkflow}appalert{cAcroVersion}{script}doc {initiator} initiator initScript{to}invitees{cc}ccbcc{date}sentDateCollabregisterReview˙˙˙˙Áá š.˜scriptparams argumentsŒŔFŸ~ Š˙˙˙˙Q9âä=ä{w~Ą !; ¸ ä=ä:QĄ=Š˙˙˙˙Q9âäˆ˙˙˙˙ä{w~ŠQYA]=]ˆ˙˙˙˙] = ] = ] =]=]\Š˙˙˙˙Q; ¸ äˆ˙˙˙˙ä:QÂėˆŘ•ˆܐĎˆܐ•–ʐΐʐʐʐՐˆۈeval{canDoWorkflowAPR}appalert{cAcroVersion}{script}doc {initiator} initiator initScript{to}invitees{cc}ccbcc{date}sentDateCollabregisterReview˙˙˙˙e %docname% %docname%gŘă‘˙˙˙˙CBRunReturnResponseDialogÉš4¨Gtitletexttip cannedSubj cannedMsgdocNameliveReturnAddrdata buttonsWidthwidth descriptionÓÉxÖţ~YZY;5]\`Y;5]\`Y;5]\`\]\WQXÂWQ9âäYT]T]T] T] T] ‚] ‚] ‚]YT]ZY=]=]9âäT ¸ ä ä:äVä: ¸ äT–ZY=]=]=]ZY=];5]=]\`Y=]=]=]\`\]\`\UZY= ];5!]\`Y= ]=]=]\`\ä: ¸ äZY= ];5"]\`Y=]=]=#]\`Y= ];5$]\`Y=]=]YZYZ\]%\`×`\]&\]'C](=)]\`\ä: ¸ ä9*â*äTäVä:ä: ¸ äZY=]=]=+]ZY=,];5]-\`\]\`\ä:]\`\]\].\ä:WQ;/ ¸0 ä:QT;/ ¸2 äVä:61Q;/ ¸3 ä:QT˙ŕ—ĐČČČČČĘ˜€ʘ€ʘ€(•Č”•ĘĘď€‘ɐ•ĘĘĘ”•ĘĎĎ•ĘĘŕ˜€D”•ĘÔ•ĘĘÜ˜€P”•ĘÔ•ĘĘĎ•ĘÔ•ĘĘď–ܐâ”•ĘĘĘ”•Ę˙œ€{ˆѐˆݐˆѐˆŒ AnnotsString IDS_CANCEL string_widthIDS_HELPIDS_SENDmaxANTrustPropagateAlldata cannedMsg cannedSubjdocNameliveReturnAddr initializecommitadrbnameviewtype align_leftalign_childrenANCreateMLSEElementsFromArraysplitconcat align_row align_fill alignmentbuttonIDS_INVITE_ADDRESS_BOOKitem_id edit_text1adrelements static_textIDS_GEN_ADDRESSEE_HEADINGIDS_GEN_SUBJECT_HEADINGsubjIDS_GEN_MESSAGE_HEADINGedit_text_heightprodheight multilinemesgANCreateTipElements align_right ok_cancelok_name descriptionapp beginPrivresult execDialogendPriv˙˙˙˙Á š'dialogË=Í AT6QT ¸ äY=]\ä:QA55 /A5A5 ¸ ä äA5ä:6QA55 /A5A5 ¸ ä äA5ä:6 QT ¸ äYA55] A55 ] A55 ] \ä:QT ¸ äY;5]\ä:QˆʐˆŕˆĚ•ˆꐈĚ•ˆꐈ˙—ˆĺˆ7dialogloadC_Info_Xl_N.pngtip1datamsg cannedMsgreplacedocNamesubj cannedSubjmesgaddr1adrenableappaddressBookAvailableadrb %docname% %docname%˙˙˙˙ÁOšdialogoRÍäÍT ¸ ä:WQA5V56QA5V56QA5V56QŇˆԐˆԐˆԈstoredatamsgmesgsubjaddr1adr˙˙˙˙Á•š dialogaddrs÷ÍÓÎ ; ¸ ä:Q; ¸ äYT ¸ ä:5]B]B]\ä:WQ; ¸ ä:QVE QV>7%T ¸ äYV>7]\ä:Qˆѐ˙ˆѐÎ•ˆŕˆ!app beginPriv mailGetAddrsstore1adrcTobCcbBccendPrivload \n|\r\n|\r˙˙˙˙CBRunReviewOptionsDialogŕš,Œ:@datashowReaderEnablecanReaderEnablewidth descriptionÖrčY;5]\WQ9âäYˆ˙˙˙˙]T]T]‚]‚]‚] ‚] Y;5 ] V] ZY=]=]ZY=]ZY=];5] \`Y=]=]=]ZY=];5] = ]\`Y=]=]=]\`\]\`\ ¸ äTzZY=]×]\`Y=];5] \`Y= ];5] =!]\`\ Z\ä: ¸ ä9"â"äTE QT;5#;5$äVä:ä: ¸ äZY=%]\`\ä:]\`\]\`\]\]&\ä:WQ;' ¸( ä:Qˆ˙˙˙˙;' ¸* äVä:6)Q;' ¸+ ä:Qˆ˙˙˙˙ŮĐÎČČĘ˜€žĘ˜€ˇĘ˜€Ăʘ€͕ϐȐ”•ĘĘ”•Ę”•ĘÔ•ĘĘĘ”•ĘĎĎ•ĘĘă˜€€uɐ•ĘĚ•ĘÔ•ĘĎŐč•í”•ţ˜€€ˆѐˆ㐈ѐˆʈ AnnotsStringIDS_INVITE_READER_ENABLE zstring_widthANTrustPropagateAlldatashowReaderEnablecanReaderEnable initializevalidatecommitadrbIDS_REVIEW_OPTIONSnamewidthviewtype align_rowalign_children static_textIDS_REVIEW_OPTIONS_RETURN_HEAD align_fill alignmentbuttonIDS_INVITE_ADDRESS_BOOKitem_id edit_textradrelementsconcatgapheightIDS_INVITE_READER_ENABLE_H check_boxrdenANCreateTipElementsIDS_REVIEW_OPTIONS_REN_TIPIDS_REVIEW_OPTIONS_NREN_TIP ok_cancel descriptionapp beginPrivresult execDialogendPriv˙˙˙˙Áš4"dialog readerEnableą×Ú‰AT6QT ¸ äY=]A55]A555] A555 ] \ä:QA5 E.QA55 Ĺ= CA55 WQA5 ¸ äYV]\ä:QA5 ¸ äYA5 ];5]\ä:QA55 !; ¸ ä;5ä:QˆʐˆАʐАՐۘ€”Ěˆ/Ň•–ϐˆᐈ󐐈Ě•ˆ܈4dialogloadC_Info_Xl_N.pngtip1dataraddrradrtoolbars Commentingpctb AdvCommentingpatbcanReaderEnable readerEnable undefinedrdenenableappaddressBookAvailableadrbalert AnnotsStringIDS_REVIEW_OPTIONS_NO_RADDR˙˙˙˙ÁAšdialogo&Ú~ÝžT ¸ ä:WQV5 #; ¸ ä;5ä:QBCŇˆÉ•ˆܐˆš€ľˆŠ storeradrappalert AnnotsStringIDS_REVIEW_OPTIONS_NO_RADDR˙˙˙˙Á¤š dialogo“ÝíޡT ¸ ä:WQA5V56QA5Yˆ˙˙˙˙55]V5]\6QA5EQV5 A55 &A5V5 6 QA5C6 QŇˆԐˆ÷ŕ•ˆԐˆ͈storedataraddrradrtoolbars Commentingpatb AdvCommentingshowReaderEnablerden readerEnable msgChanged˙˙˙˙Á•š dialogaddrsßÜßĂ ; ¸ ä:Q; ¸ äYT ¸ ä:5]B]B]\ä:WQ; ¸ ä:QVE QV>7%T ¸ äYV>7]\ä:Qˆѐ˙ˆѐÎ•ˆŕˆ!app beginPriv mailGetAddrsstoreradrcTobCcbBccendPrivload˙˙˙˙CBRunApproveDialog  âšED y@titletextdesttip cannedSubj cannedMsgdocNameliveReturnAddrdatabShowInitiatorEmailbIsEnd buttonsWidth popupWidthwidth description&é #€YZY;5]\`Y;5]\`Y;5]\`\]\WQYZY;5]\`Y;5]\`X^`\]\WQXÂWQ9âäYT] T] T] T] T] ‚]‚]‚]‚]‚]‚]‚]‚]‚]‚ ]YT]ZY=]=]9âäT ¸ ä ä:äVä: ¸ äY= ]×]!\ä: ¸ äˆ˙˙˙˙hZY="];5#]\`Y=$]=]%=]&V]'B](\`\ Z\ä: ¸ äY="]T]=)]&\ä: ¸ äTŻZY=]=*]=)]&ZY;+5,=- ="];5.]=]%\`Y=/]=0]%=)]&\`\]1\`\UZY="];5.]\`Y="]=0]%=)]&\`\ä: ¸ äZY=]=*]=)]&ZY;+5,=- ="];52]=]%\`Y=/]=3]%=)]&\`\]1\`\ä: ¸ äZY="];54]\`Y=/]=)]&=5]%\`Y="];56]\`Y=/]=)]&C]7YZYZ\]8\`×`\]9\]!=:]%\`\ä: ¸ äˆ˙˙˙˙VZY= ]?]!\`Y=;]=<]%;5=]\`\ Z\ä: ¸ ä9>â>äTäVä:ä: ¸ äZY=]=?]=?]&ZY=]=*]=?]&ZY=-];5]=]%V]'\`Y=-];5]=]%V]'\`\]1\`\]1\`\ä:]1\`\]1\]@\ä:WQ;+ ¸A ä:QT;+ ¸C äVä:6BQ;+ ¸D ä:QT˙ŕ˙ΐ—ĐČČČČČĘ˜€€Nʘ€€Yʐʘ€€pʘ€€{ʘ€€‚Ę˜€€Ę˜€€›Ę˜€€ŸĘ˜€€ˇ•Č”•ĘĘď•ĘÔÉcɐ•ĘÔ•ĘĘĘČŃŃ•ĘČ×€ŞÉ•ĘĘĘ”•Ę ِϐϐ•ĘĘŕ˜€€ę”•ĘÔ•ĘĘÜ˜€€ö”•ĘĘĘ”•Ę ِϐϐ•ĘĘç˜€ ”•ĘÔ•ĘĘĎ•ĘÔ•ĘĘ–ďÜÉQɐ•ĘË•ĘĘÚŃâ˜€;”•ĘĘĘ”•ĘĘĘ”•ĘĎĘÍ•ĘĎĘ˙Ș€^ˆѐˆݐˆѐˆŒ AnnotsString IDS_CANCEL string_widthIDS_HELPIDS_SENDmax%IDS_APPROVAL_FINAL_COMPLETE_AND_EMAIL IDS_APPROVAL_FINAL_COMPLETE_ONLYANTrustPropagateAlldata cannedMsg cannedSubjdocNameliveReturnAddr initializesnd2cncl justOneEmailfindSelectedIndexidlecommittoadccadctypnameviewtype align_leftalign_childrenANCreateMLSEElementsFromArraysplitconcatgapheight static_text$IDS_APPROVAL_COMPLETION_TYPE_HEADINGpopupitem_id alignmentwidth PopupEdit align_fill align_rowappaddressBookAvailablebuttonIDS_GEN_ADDRESSEE_HEADING edit_text1adrelementsIDS_GEN_CC_HEADING2adrIDS_GEN_SUBJECT_HEADINGsubjIDS_GEN_MESSAGE_HEADING multilineedit_text_heightprodmesg check_boxcbx1#IDS_EMAIL_APPROVAL_NOTIFY_INITIATORANCreateTipElements align_right description beginPrivresult execDialogendPriv˙˙˙˙Ášf9dialogctyp˛ë´ď/€ AT6QT ¸ äY=]\ä:QA55 /A5A5 ¸ ä äA5ä:6QA55 /A5A5 ¸ ä äA5ä:6 QA55 Ĺ= A5B6 QA55 Ĺ= A5C6 QT ¸ äYA55]A55 ] A55]A55]\ä:Qˆ˙˙˙˙+T ¸ äYA55 ]\ä:Qˆ˙˙˙˙ŽY\WQV;5A55  ?×˙8QV;5A55  ××ţ8QT ¸ äYV]\ä:QA ¸ äTä:QT ¸ ä=ä:QˆʐˆŕˆĚ•ˆꐈĚ•ˆꐐˆŇ•ˆ͐ˆŇ•ˆ͐ˆ˙אÉ•ˆ搐É•ĘˆŘϐˆ͈7ĚАˆސˆѐˆՈdialogloadC_Info_Xl_N.pngtip1datamsg cannedMsgreplacedocNamesubj cannedSubjinitiatorEmail undefinedfinalApprovalEmailmesgaddr1adrccaddr2adrcbx1 AnnotsString%IDS_APPROVAL_FINAL_COMPLETE_AND_EMAIL IDS_APPROVAL_FINAL_COMPLETE_ONLYctypfocus %docname% %docname%˙˙˙˙Á”š dialogoÇďăđN€T ¸ ä:WQA ¸ äV5ä:DQA ¸ ä=ä:?6A ¸ äA5ä:QA5 ¸ ä=ä:Q!; ¸ ä; 5 ä:QŇď1•ˆԐˆݐˆ܈7store justOneEmail1adrfindSelectedIndexctypcommitdialogendmyokappalert AnnotsStringIDS_EMAIL_ADDRESS_TO_FIELD_MSG˙˙˙˙ÁšdialogöđńY€A5 ¸ ä=ä:Qˆ؈dialogendcncl˙˙˙˙ÁĄš,toStringsplit nNumAddrFoundi addrMatch7ńĚňZ€ T=BT ¸ ä ä:WQ>WQVKRmMWQVV7@VV7 ¸ ä ä:WQVE QV?7V# ?WQQăL˙˙˙°NV? CBÉ•ˆ’Ř•5Uː•ÜÎ•ˆՐ•ˆ—ˆŠ splitmatch\;^\s*(\S(?:.*\S)?)\s*$7U˙˙˙˙ÁPšidoiěňyóp€A5 ¸ ä:T7WQVK%mMWQVV7>VV7?˜N™ăL˙˙˙ÝN×˙Ů5(ːÉ•ˆĘxːˆ‹ dialogstore#(˙˙˙˙ÁVš dialogoŒóô{€ T ¸ ä:WQT ¸ äYV5=DQA ¸ ä=ä:?]\ä:QŇˆːřˆstoreenable1adrfindSelectedIndexctypsnd2˙˙˙˙Á—šdialogo/ôWő‚€T ¸ ä:WQA5V56QA5V56QA5V56QA5V56QA5V5 6 QA5A ¸ ä= ä:>6 QŇˆԐˆԐˆԐˆԐˆԐˆŕˆEstoredatamsgmesgsubjaddr1adrccaddr2adrinitiatorEmailcbx1finalApprovalEmailfindSelectedIndexctyp˙˙˙˙ÁĐš dialogaddrsjőŚö€ ; ¸ ä:Q; ¸ äYT ¸ ä:5]T ¸ ä:5]B]\ä:WQ; ¸ ä:QVYV>7%T ¸ äYV>7]\ä:QV?7%T ¸ äYV?7]\ä:Qˆѐ˙Ґˆѐ • •ˆŕ •ˆŕˆ!app beginPriv mailGetAddrsstore1adrcTo2adrcCCbBccendPrivload˙˙˙˙Ášdialogšöâö›€A ¸ äTä:Qˆшtoad˙˙˙˙ÁîšdialogindexőöžřŸ€A ¸ ä=ä:WQV>iT ¸ äY;5]\ä:QT ¸ äYC]C]C] C] C] C] \ä:QnV?dT ¸ äY;5 ]\ä:QT ¸ äYB]B]B] B] B] B] \ä:QÖd•ˆ合˙ •ˆ合úˆjfindSelectedIndexctypload AnnotsStringIDS_SENDsnd2enabletoad1adrccad2adrsubjmesg IDS_COMPLETE \n|\r\n|\r˙˙˙˙Áwš/ÍyM łd;>7;56Q;>7;56Q;>7;56Q;?7;56Q;?7;56Q;×7;56Q;×7;56Q;×7;56Q;×7;56Q; >7;56Q; >7;5 6Q; ?7;56Q; ?7;5 6Q; ×7;56Q; ×7;5 6Q; 5;56Q;5;56Q;5;56Q;5;56Q;5;56Q;'=‰;;5= XüXü6Q;;5= XPX?6Q;XŹ6Q;× 6Q;× 6Q;×6Q;×6 Q;×6!Q;× 6"Q;× 6#Q;× 6$Q;× 6%Q; ¸& ä:Q;' ¸( ä=)ä;ä:Q;' ¸( ä=*ä;ä:Q;5=+;' ¸( ä=,ä;ä:Q;' ¸( ä=-ä; ä:Q; ¸. ä:QˆאˆאˆאˆאˆאˆؐˆؐˆؐˆؐˆאˆאˆאˆאˆؐˆؐˆڐˆڐˆڐˆڐˆڐˆĚ•ˆŐ֐ˆŐ֘€Žˆΐˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆ͐ˆѐˆӐʐˆӐʐĐ•˜€ŞˆӐʐˆݐˆшIWEmailFormStepstitle AnnotsString!IDS_SHARED_REVIEW_WIZARD_TITLE_FDUploadFileSteps*IDS_SHARED_REVIEW_BROWSE_DOC_STEP_TITLE_UFheading$IDS_SHARED_REVIEW_DOC_CENTER_HEADING,IDS_SHARED_REVIEW_BROWSE_DOC_STEP_HEADING_UFDocCenterLoginSteps"IDS_SHARED_REVIEW_DOC_CENTER_LOGIN+IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_TITLE3IDS_SHARED_REVIEW_DOC_CENTER_CREATEID_CONFIRM_TITLESharedReviewDocCenterInitiatoroTaskSetcTitle"IDS_SHARED_REVIEW_CREATE_WORKSPACESharedReviewWebDAVInitiatorSharedReviewAppleiDiskInitiatorSharedReviewSMBInitiatorSharedReviewSharepointInitiatorCollab undefinedAlertWithHelpWidthappplatformWIN wizardWidth wizardHeightbuttonRowMarginHeightbuttonRowMarginWidthwizardMarginWidth marginWidth marginHeight tipIconWidth tipIconHeight navIconWidth navIconHeight beginPrivRSSaddUI4urn://ns.adobe.com/Collaboration/SharedReview/WebDAV8urn://ns.adobe.com/Collaboration/SharedReview/SharepointMAC1urn://ns.adobe.com/Collaboration/SharedReview/SMB9urn://ns.adobe.com/Collaboration/SharedReview/Acrobat.comendPriv˙˙˙˙e˙˙˙˙ÁTš xmlStringxml”܁ ;äTäRWQYVŁŚ7]A ¸ äZ\äV5 ¸ ä:ä:]\ŇˆȈůˆ>XMLnamemethod xml2jsArray argumentschildrenargs˙˙˙˙Ášvalue I ăA ¸ äA ¸ äTä:ä:ˆވ0 toXMLStringjs2xml˙˙˙˙ÁĘš B€reti arguments˘ 5"é  WQż=°WQVV>7>76QV=6QV>7EQV>7>7Ů?qV ¸ äż=°ä:Q?WQ;mV5 ¸ äA ¸ äV>7V7ä:ä:QV#?WQăVV>7Ů˙˙˙şA ¸ äVä:•ËˆАˆΐŮ•ˆאˆ$;1K–ˆ™€ňˆ똀ńˆ,ʘ€ó˜€ńˆ՘€öˆш <invoke/>@name @returntype javascriptlength appendChild <arguments/> argumentsjs2xml toXMLStringhK˙˙˙˙ÁIš targetArray xmlNodeList.#ş#ţTK6mMn…oQT ¸ äA ¸ ä;ä:ä:QăL˙˙˙ĚNT59Ԉ%됈Œnodepushxml2js 9˙˙˙˙Áŕšn, requestXMLresultxmlPropertiesListpropName$Ÿ'‚ T; =T ¸ ä:= =T ¸ ä: ¸ ä:x=yF=yZ=y_= ys= yz= y= yžzGA ¸ äT ¸ ä>ä:ä:T ¸ ä:9âäT ¸ ä:ä:9âäCä:9âäBä:A ¸ ä;äRäT ¸ ä:ä:Y\WQT ¸ ä:WQVK€mMn…oQ; ¸ ä: ¸ ä:=;ä=äRp;ŁŚ7 ¸ ä:WQVVA ¸ ä;ä:8QăL˙˙˙‚NVÉ#–ԍ.–Ů`€“‘m •m •m •m •m •m •mʘ€‚ ˆސˆϐˆސˆѐˆѐˆ琐ĘŇ5€ƒÔá•ˆѐ֐ˆ㐐ˆ”P•ˆ undefinednodeKindelementnametoStringpropertystringnumbertruefalsearrayobjectxml2jschildNumberBoolean xml2jsArrayArraychildrennodeErrorexpected only property nodesidRƒ˙˙˙˙Áśšn€valueargTypeargiprop argumentsç'Ž+&‚ WQV>7ĹWQVQV=DQV=D QT@(;ä=T=äRWQXV=TT;r=WQ8T;r= WQT; r= WQ;ä=V=äRWQV=DQV=qTKYmMWQż= °WQVV6 QV ¸ äA ¸ äTV7ä:ä:QV ¸ äVä:QăL˙˙˙ŠNTV= 3V ¸ ä;äT ¸ ä:äRä:QV ¸ äTä:QV•ˆʐ”ă#•ˆ㐐É•É•ˆΐÉ•ˆΐÉ•ˆɘ€‚AˆސŘl•5\ːËˆ̐ˆ䐈ᐐÉ.•ˆˆӐˆŒ boolean undefinedXML</>objectArrayarrayStringstringDatedate <property/>@id appendChildjs2xmlgetTimeű\˙˙˙˙Á?šxmloldValresult,Î,[‚;5WQ;B6QT ¸ ä:WQ;V6QVÎˆ̐ҐˆΐˆŒXMLprettyPrinting toXMLString˙˙˙˙InitializeFormsTrackerJS;Ž š;MZ+dˆcTableOddRowColorcTableEvenRowColorcTableHeaderColormyFormsTrackerDebugAlert getStringfwNSinboxNSftNScFormsIveSentURLcFormsIveSentFeedLinkcFormsIveReceivedURLcFormsIveReceivedFeedLinkcFormsSuperGroupURLcFormsSuperGroupLinkfwMethodfwDocID fwRecipientsfwNewResponses fwResponses fwExtraInfo fwDocTitle fwDocLinkfwTofwCcfwBcc fwIsOffline fwIsInitiated fwIsOnline fwLastSyncfwLatestVersion fwRemoteURL fwLocationfwFolder fwServersfwHasConnectedfwConnectionStatus fwWorkspace inboxHiddenFORM_STATE_ACTIVEFORM_STATE_ENDEDFORM_STATE_SUSPENDEDFORM_STATE_CORRUPTEDEVENT_LOGGING_CATEGORY_TRACKEREVENT_LOGGING_SUBCATEGORY_FORMS LogAVUMEventFormsTrackerAddNewFolderFormsTrackerSetFormFolderFormsTrackerRemoveFolder+FormsTrackerRemoveFolderWhileMultipleSelectRemoveMultipleSelectedFormsSetFormFolderForMultipleForms)FormsTrackerRemoveFormWhileMultipleSelectTrackerExpandSelectionTrackerCanExpandSelectionTrackerCollapseSelectionTrackerCanCollapseSelectionoFormsTrackerUIoFormsSuperGroupUI argumentsa2"°w‚B Š<˙˙˙˙Q†=Š˙˙˙˙Q=Š˙˙˙˙Q=Š˙˙˙˙Q‚Š˙˙˙˙Q‚Š˙˙˙˙Q;'=n=Š˙˙˙˙Q=Š˙˙˙˙Q=Š ˙˙˙˙Q=Š ˙˙˙˙Q= ˆ ˙˙˙˙= ˆ ˙˙˙˙Š ˙˙˙˙Q= Š ˙˙˙˙Q= ˆ ˙˙˙˙= ˆ ˙˙˙˙Š ˙˙˙˙Q= Š˙˙˙˙Q= ˆ ˙˙˙˙= ˆ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙= Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙=Š ˙˙˙˙Qˆ˙˙˙˙=Š!˙˙˙˙Qˆ˙˙˙˙=Š"˙˙˙˙Qˆ˙˙˙˙= Š#˙˙˙˙Qˆ˙˙˙˙=!Š$˙˙˙˙Qˆ˙˙˙˙="Š%˙˙˙˙Qˆ˙˙˙˙=#Š&˙˙˙˙Qˆ˙˙˙˙=$Š'˙˙˙˙Q=%Š(˙˙˙˙Q=&Š)˙˙˙˙Q='Š*˙˙˙˙Q=(Š+˙˙˙˙Q=)Š,˙˙˙˙Q=*Š-˙˙˙˙Q;+ ¸, ä‚ä:Š.˙˙˙˙Q;+ ¸, ä‚ä:Š/˙˙˙˙Q;+ ¸, ä‚ä:Š0˙˙˙˙Q;+ ¸, ä‚ä:Š1˙˙˙˙Q;+ ¸, ä‚ä:Š2˙˙˙˙Q;+ ¸, ä‚ä:Š3˙˙˙˙Q;+ ¸, ä‚ä:Š4˙˙˙˙Q;+ ¸, ä‚ ä:Š5˙˙˙˙Q;+ ¸, ä‚ ä:Š6˙˙˙˙Q;+ ¸, ä‚ ä:Š7˙˙˙˙Q;+ ¸, ä‚ ä:Š8˙˙˙˙Q;+ ¸, ä‚ ä:Š9˙˙˙˙QY;+ ¸, ä‚ä:]-‚].‚]/‚]0‚]1‚]2;+ ¸, ä‚ä:]3;+ ¸, ä‚ä:]4‚]5‚]6‚]7‚]8‚]9‚]:‚];‚]<‚]=‚]>‚ ]?‚!]@‚"]A‚#]B‚$]C‚%]D\Š:˙˙˙˙QY‚&]-;+ ¸, ä‚'ä:].‚(]7‚)]9\Š;˙˙˙˙Q;+ ¸E ä:Q; ¸F ä=Gäˆ;˙˙˙˙ä:Q; ¸F ä=Häˆ:˙˙˙˙ä:Q;+ ¸I ä:Q>Ć*vŠ*Q;J ¸K äˆ*5Lä:QÇÂė‘ĎĎĎĎ˜€‚…Ď˜€‚ˆĚ•ĎĎĎĎéĎéĎéŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮŮĎĎĎĎ˜€‚žĎĎŕ˜€‚Đŕ˜€ƒ ŕ˜€ƒŕ˜€ƒ+ŕ˜€ƒ2ŕ˜€ƒUŕ˜€ƒfŕ˜€ƒsŕ˜€ƒzŕ˜€ƒƒŕ˜€ƒŠŕ˜€ƒ—•Ű˜€‰™Ę˜€‰Ëʘ€‰Đʘ€‰Ýʘ€‰čʘ€Šۘ€Š–Ű˜€‹ÇʐĘ˜€‹Ńʘ€‹Öʘ€‹Űʘ€‹ŕʘ€‹ńʘ€‹öʘ€‹űʘ€Œʘ€Œ ʘ€Œ.ʘ€Œ3ʘ€ŒAʘ€ŒEʘ€ŒJ՘€Œo•Ę˜€ŒÉۘ€Œîʐ՘€ŒóˆѐˆᐈᐈŃx•Đˆŕ€{–ˆ#FFFFFF#F8F8F8#E4E4FFRSS undefined&http://ns.adobe.com/Acrobat/RSS/Forms/&http://ns.adobe.com/Acrobat/RSS/Inbox/(urn://ns.adobe.com/Acrobat/FormsTracker/;urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/MyForms.rssacrobat:Inbox?container= &selectFeed=Durn://ns.adobe.com/Acrobat/Tracker/FormsTracker/ParticipantForms.rssCurn://ns.adobe.com/Acrobat/Tracker/FormsTracker/FormsSuperGroup.rss:method:docID :recipients :newResponses :responses :extraInfo :docTitle:docLink:to:cc:bcc :isOffline :isInitiated :isOnline :lastSync:latestVersion :remoteURL :location:folder:serverReviews :hasConnected:connectionStatus :workspace:hiddenActiveEnded Suspended CorruptedTrackerFormsapptrustedFunction createContextgetGroupContextMenu getFeedTip getItemTip getGroupTipgetFeedContextMenugetMultipleSelectContextMenugetItemContextMenusupportsMultipleSelection$isCompatibleForMultipleSelectionWith canDeleteFeed canDeleteFeedWhileMultipleSelect canDeleteItem onDeleteItem canDeleteItemWhileMultipleSelectonDeleteItemWhileMultipleSelectonDeleteAllMultipleSelectedcanDeleteGroup onDeleteGroup!canDeleteGroupWhileMultipleSelect onDeleteGroupWhileMultipleSelectcanChangeGroupscanModifyItemGroupmodifyItemGroup beginPrivaddUI5urn://ns.adobe.com/Acrobat/Tracker/UI/FormsSuperGroup2urn://ns.adobe.com/Acrobat/Tracker/UI/FormsTrackerendPrivconsoleprintln extMessage˙˙˙˙Ášstr-3Ž3‚ˆ˙˙˙˙ÁJširvalś3T4…‚; ¸ äY=]T]\ä:WQV==TVíÉ•ˆʐˆŒ app getStringForms cPlugInName cStringIdempty:˙˙˙˙Áfš category subcategory eventNamelogEventParamsň=*?Á‚Y\WQVT6QVT6QVT6Q; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QĘˆ̐ˆ̐ˆ̐ˆѐˆՐˆшcatsubcatevntapp beginPrivCollabAVUMLogEventWrapperendPriv˙˙˙˙Á_š´AurlresultcurrentfolderbFoundimsgş@ŕGЂ VQ; ¸ ä:Q; ¸ äTä:WQ; ¸ ä:Qm; ¸ ä:Q; ¸ ä;5ä;5ä:WQ; ¸ ä:QV; E QV@ŠVŮ ?DQVŮ ×L; ¸ ä:Q; ¸ ä;5 ä?ä>ä:Q; ¸ ä:Q=BWQV; H>WQ!mVV7VWQV# ?WQQăVVŮ E QV ˙˙˙ĚVo;5 WQV ¸ ä äVä:WQ; ¸ ä:Q; ¸ äVä?ä>ä:Q; ¸ ä:Qu; ¸ ä:Q; ¸ äTäVä:Q‰.˙˙˙˙äˆ,˙˙˙˙äˆ-˙˙˙˙ä=ä:Q; ¸ ä:QVWQ  ăC˙˙ýîV”ˆѐؐˆѐ(€•ˆ™€‚ِˆѐؐҐˆѐÔ€¤•ŰG•ˆ ѐˆ ŕˆ ֐•É•ˆ$!9–ˆ И€‚íˆ8̘€‚‚íˆԈɘ€‚ńj•Îˆ ܐˆ ѐˆ ٘€‚űˆ ֐ˆ ѐˆ ِˆ 鐈 ѐˆ —@ʘ€ƒ@€‚Řˆ Ș€ƒ ˆŒapp beginPriv FormWorkflowgetFormWorkflowFoldersendPrivresponse AnnotsStringIDS_REVIEW_PANEL_ADD_FOLDERIDS_REVIEW_PANEL_NEW_FOLDER undefinedlengthalertIDS_REVIEW_PANEL_FOLDER_LENGTHIDS_REVIEW_PANEL_FOLDER_EXISTSreplaceaddFormWorkflowFolder CreateFolder%sC-9˙˙˙˙Á@š urldocIDfolder'H¸H ƒ; ¸ ä:Q; ¸ äTäTäTä:Q; ¸ ä:Qˆѐˆݐˆшapp beginPriv FormWorkflowsetFormWorkflowFolderendPriv˙˙˙˙Ádš:$urlfoldermsg msgboxtitleresultţHöKƒVQTˆ ˙˙˙˙"‰˙˙˙˙ä=ä:WQ‰˙˙˙˙ä=ä:WQV ¸ ä äTä:WQ; ¸ ä:Q;5=;5;5 WQ; ¸ äYV] V] ×] ×]\ä:WQ; ¸ ä:QV×i; ¸ ä:Q; ¸ äTäTä:Q‰.˙˙˙˙äˆ,˙˙˙˙äˆ-˙˙˙˙ä=ä:Q; ¸ ä:Q”Í•ˆݐˆؐˆܐˆѐĐâůˆѐ•ˆѐˆِˆ鐈ш'IDS_SHAREDWF_ASK_DEL_FOLDER_DISTRIBUTED$IDS_SHAREDWF_ASK_DEL_FOLDER_RECEIVEDreplaceapp beginPriv viewerTypeReader AnnotsStringIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATalertcTitlecMsgnIconnTypeendPriv FormWorkflowremoveFormWorkflowFolder RemoveFolder %foldername%˙˙˙˙Á<š urlfolderOLŐL+ƒ; ¸ ä:Q; ¸ äTäTä:Q; ¸ ä:Qˆѐˆِˆшapp beginPriv FormWorkflowremoveFormWorkflowFolderendPriv˙˙˙˙ÁĹšW. bIsInitiated msgboxtitleresultMĐP2ƒ †T)n‰˙˙˙˙ä=ä:oQ$n‰˙˙˙˙ä=ä:oQ; ¸ ä:Q;5=;5;5 WQ; ¸ äYV] ;] ×] ×]\ä:WQ; ¸ ä:QV×c; ¸ ä:Q; ¸ ä:Q‰.˙˙˙˙äˆ,˙˙˙˙äˆ-˙˙˙˙ä=ä:Q; ¸ ä:QCB~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q‰ä=Vä:Q‰äV5ä:Qǐ‘$•ˆ䐐ˆߐˆѐĐâűˆѐ•ˆѐˆѐˆ鐈ѐˆ’ˆz•Ęˆېˆڐˆِˆ؀{–ˆmsg)IDS_SHAREDWF_ASK_DEL_MULTIPLE_DISTRIBUTED&IDS_SHAREDWF_ASK_DEL_MULTIPLE_RECEIVEDapp beginPriv viewerTypeReader AnnotsStringIDS_PRODUCT_NAME_READERIDS_PRODUCT_NAME_ACROBATalertcTitlecMsgnIconnTypeendPriv FormWorkflow,removeMultipleSelectedFormWorkflowsInTrackerRemoveMultipleconsoleprintln EXCEPTION: stack˙˙˙˙eJ˙˙˙˙Áżš *feedURLformIDs folderNameQˆRUƒ†; ¸ ä:Q; ¸ äTäTäTä:Q; ¸ ä:Q~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q‰ä=Vä:Q‰äV5ä:Qǐ‘ˆѐˆݐˆŃx•Ęˆېˆڐˆِˆ؀{–ˆapp beginPriv FormWorkflowsetFormFolderForMultipleFormsendPrivconsoleprintln EXCEPTION: stack˙˙˙˙eD˙˙˙˙Áfš itemdocIDßRîSfƒT5ˆ˙˙˙˙7WQV'=C; ¸ ä:Q; ¸ äVä:Q; ¸ ä:QCBÖˆ Ę>•ˆѐˆՐˆѐˆ—ˆ Š Extension undefinedapp beginPriv FormWorkflowunregisterFormsWorkflowendPriv˙˙˙˙Á4š 2TšTsƒ; ¸ ä:Q; ¸ ä:Q; ¸ ä:Qˆѐˆѐˆшapp beginPrivCollabexpandTrackerSelectionendPriv˙˙˙˙Á5šurl canExpandáT~Uzƒ; ¸ ä:Q;5WQ; ¸ ä:QVˆѐΐˆѐˆŒapp beginPrivCollabcanExpandTrackerSelectionendPriv˙˙˙˙Á4š ÄU.Vƒƒ; ¸ ä:Q; ¸ ä:Q; ¸ ä:Qˆѐˆѐˆшapp beginPrivCollabcollapseTrackerSelectionendPriv˙˙˙˙Á5šurl canCollapsewVWŠƒ; ¸ ä:Q;5WQ; ¸ ä:QVˆѐΐˆѐˆŒapp beginPrivCollabcanCollapseTrackerSelectionendPriv˙˙˙˙Á š¸" Ȉresult arguments Y°L™ƒ  Š˙˙˙˙QY‰˙˙˙˙ä=ä:];5]‰˙˙˙˙ä=ä:];5]‰˙˙˙˙ä=ä:] = ] ‰˙˙˙˙ä= ä:] ‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:];5];5];5];5];5];5]‰˙˙˙˙ä= ä:]!‰˙˙˙˙ä="ä:]#‰˙˙˙˙ä=$ä:]%‰˙˙˙˙ä=&ä:]';5(])‰˙˙˙˙ä=*ä:]+‰˙˙˙˙ä=,ä:]-‰˙˙˙˙ä=.ä:]/‰˙˙˙˙ä=0ä:]1‰˙˙˙˙ä=2ä:]3‰˙˙˙˙ä=4ä:]5=6‰˙˙˙˙ä=7ä:=8]9‰˙˙˙˙ä=:ä:];‰˙˙˙˙ä=<ä:]=‰˙˙˙˙ä=>ä:]?‰˙˙˙˙ä=@ä:]AY;5B]C‰˙˙˙˙ä=Dä:]E;5F]G;5H]I\]J;5K]L‰˙˙˙˙ä=Mä:]N‰˙˙˙˙ä=Oä:]P‰˙˙˙˙ä=Qä:]R‰˙˙˙˙ä=Sä:]T‰˙˙˙˙ä=Uä:]V;5W]X‰˙˙˙˙ä=Yä:]Z‰˙˙˙˙ä=[ä:]\;5]]^‰˙˙˙˙ä=_ä:]`‰˙˙˙˙ä=aä:]b‰˙˙˙˙ä=cä:]d‰˙˙˙˙ä=eä:]f‰˙˙˙˙ä=gä:]h;5i]j;5k]l‰˙˙˙˙ä=mä:]n‰˙˙˙˙ä=oä:]p;5q]r;5s]t‰˙˙˙˙ä=uä:]v;5w]x‰˙˙˙˙ä=yä:]z;5{]|‰˙˙˙˙ä=}ä:]~;5]€‰˙˙˙˙ä=ä:]‚‰˙˙˙˙ä=ƒä:]„‰˙˙˙˙ä=…ä:]†‰˙˙˙˙ä=‡ä:]ˆ‰˙˙˙˙ä=‰ä:]Š‰˙˙˙˙ä=‹ä:]Œ‰˙˙˙˙ä=ä:]Ž‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=‘ä:]’;5“]”‰˙˙˙˙ä=•ä:]–‰˙˙˙˙ä=—ä:]˜‚]™Y@]š@]›\]œY@]\]ž‚]Ÿ‚] ‚]Ą‚]˘‚]Ł‚]¤‚]Ľ‚]ŚY=§]¨ZY=Š]Ş=Ť]Ź=­]ŽZY=Ż]Ş=°]ą\`\]˛\`\]˛\]ł\Š˙˙˙˙Q;´ ¸ľ ä:Qˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5Ąä:6ĄQˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5¤ä:6¤Qˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5˘ä:6˘Qˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5Łä:6ŁQˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5Ÿä:6ŸQˆ˙˙˙˙;´ ¸ś äˆ˙˙˙˙5 ä:6 Q;´ ¸ˇ ä:Qˆ˙˙˙˙Âė•ŮĎŮĎŮĘŮŮŮŮĎĎĎĎĎĎŮŮŮŮĎŮŮŮŮŮŮĺŮŮŮŮ•ĎŮĎŐ˜€ƒĚϐِِِِِϐِِϐŮŮŮŮŮĎĎŮŮĎĎŮĎŮĎŮĎŮŮŮŮŮŮŮŮŮĎŮŮĘ˜€ƒ˙•–Ě˜€„•ĚĘ˜€†ʘ€‡8ʘ€‡Qʘ€ˆWʘ€‰;ʘ€‰Nʘ€‰fʘ€‰z•Ę”•ĘĘĘ”•Ęń˜€‰ŽˆѐˆѐˆʈIDS_FORMS_TRACKER_MY_FORMScIveSent AnnotsStringIDS_TRACKER_NO_SENT_REVIEWScNoIveSentForms#IDS_FORMS_TRACKER_PARTICIPANT_FORMS cIveReceivedcNoIveReceivedForms)IDS_FORMS_TRACKER_FORMS_SUPER_GROUP_TITLEcFormsSuperGroupNBSP_PLACEHOLDERnbsp_placeholder&IDS_FORMS_TRACKER_VIEW_RESPONSES_LABELcViewResponsesLabel%IDS_FORMS_TRACKER_VIEW_RESPONSES_LINKcViewResponsesLink&IDS_FORMS_TRACKER_DISTRIBUTION_MESSAGEcDistributionMessageIDS_FORMS_TRACKER_VIEW_FORMcViewFormButtonLabelIDS_TRACKER_NOT_APPLICABLEcNotApplicableIDS_TRACKER_CLICKcClickIDS_TRACKER_HEREcHereIDS_TRACKER_TO_RESUME_ACTIVEcToResumeActiveIDS_TRACKER_HOW_DO_I_FIX_THIScHowDoIFixThisIDS_TRACKER_CHANGES_NONEcNone)IDS_FORMS_TRACKER_TO_CHANGE_FILE_LOCATIONcToChangeFileLocation@IDS_FORMS_TRACKER_DEF_LIST_CHANGES_SINCE_LAST_REVIEWED_RESPONSEScChangesSinceLastViewedIDS_FORMS_TRACKER_RESPONSEScResponsesLabel$IDS_FORMS_TRACKER_SUBMISSION_HISTORYcSubmissionHistoryLabel#IDS_SHARED_REVIEW_SENT_USING_SERVER cSentUsing"IDS_FORMS_TRACKER_EMAIL_ATTACHMENTcEmailAttachmentIDS_FORMS_TRACKER_RESPONDED_NO cRespondedNoIDS_FORMS_TRACKER_RESPONDED_YES cRespondedYesIDS_FORMS_TRACKER_RESPONDED_NA cRespondedNA'IDS_FORMS_TRACKER_NO_SUBMISSION_HISTORYcNoSubmissionHistoryIDS_SHAREDWF_ANONYMOUS_USERcAnonymousUser($IDS_FORMS_TRACKER_EDIT_FILE_LOCATION)cEditFileLocation%IDS_FORMS_TRACKER_NUM_NEW_FORMS_RECVD cNewFormsReceivedSinceLastViewed IDS_TRACKER_NO_DISTRIBUTED_FORMScNoDistributedFormsIDS_TRACKER_NO_RECEIVED_FORMScNoReceivedFormsIDS_TRACKER_NO_FORMS_IN_FOLDERcNoFormsInFolderIDS_WORKFLOW_STATE_INPROGRESSActiveIDS_SHAREDWF_WORKFLOW_HAS_ENDEDEndedIDS_WORKFLOW_STATE_SUSPENDED SuspendedIDS_WORKFLOW_STATE_CORRUPTED CorruptedoWorkflowState&IDS_TRACKER_UBER_TABLE_HEADER_FILENAMEcTableHeaderFileName*IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDENTScTableHeaderRespondentsAndNew/IDS_FORMS_TRACKER_TABLE_HEADER_TOTAL_RECIPIENTScTableHeaderTotalRecipients-IDS_FORMS_TRACKER_TABLE_HEADER_DISTRIBUTED_ONcTableHeaderDistributedOn7IDS_FORMS_TRACKER_TABLE_HEADER_LAST_DATE_TIME_SUBMITTEDcTableHeaderLastSubmittedOn5IDS_FORMS_TRACKER_TABLE_HEADER_NUM_RESPONSES_RECEIVED%cTableHeaderNumberOfResponsesReceivedIDS_TABLE_HEADER_EMAILcTableHeaderEmail"IDS_FORMS_TRACKER_TABLE_HEADER_NEWcTableHeaderNew(IDS_FORMS_TRACKER_TABLE_HEADER_RESPONDEDcTableHeaderRespondedIDS_TABLE_HEADER_STATUScTableHeaderStatus-IDS_FORMS_TRACKER_TABLE_HEADER_RECIPIENT_NAMEcTableHeaderRecipientName6IDS_FORMS_TRACKER_TABLE_HEADER_LAST_RESPONSE_DATE_TIME cTableHeaderLastResponseDateTime%IDS_FORMS_TRACKER_TABLE_HEADER_UNREADcTableHeaderUnread,IDS_FORMS_TRACKER_TABLE_HEADER_NUM_RESPONSEScTableHeaderNumberOfResponses2IDS_FORMS_TRACKER_TABLE_HEADER_SUBMITTED_DATE_TIMEcTableHeaderSubmittedDateTimeIDS_TABLE_HEADER_TITLEcTableHeaderTitleIDS_TABLE_HEADER_REVIEWER_TYPEcTableHeaderReviewerType(IDS_FORMS_TRACKER_DEF_LIST_FORM_LOCATIONcDefListFormLocationProp-IDS_FORMS_TRACKER_DEF_LIST_RESPONSES_LOCATIONcDefListResponsesLocationPropIDS_DEFINITION_LIST_STATUScDefListStatusPropIDS_DEFINITION_LIST_ERRORcDefListErrorProp$IDS_FORMS_TRACKER_DEF_LIST_FORM_HOSTcDefListFormHostProp IDS_DEFINITION_LIST_ACCESS_LEVELcDefListAccessLevelProp)IDS_FORMS_TRACKER_DEF_LIST_DISTRIBUTED_ONcDefListDistributedOnPropIDS_DEFINITION_LIST_RECEIVED_ONcDefListReceivedOnProp&IDS_FORMS_TRACKER_DEF_LIST_LAST_OPENEDcDefListLastOpenedOnPropIDS_DEFINITION_LIST_DEADLINEcDefListDeadlineProp1IDS_FORMS_TRACKER_DEF_LIST_TOTAL_NUM_OF_RESPONSES"cDefListTotalNumberOfResponsesProp2IDS_FORMS_TRACKER_DEF_LIST_TOTAL_NUM_OF_RECIPIENTScDefListTotalRecipientsProp*IDS_FORMS_TRACKER_DEF_RECIPIENTS_RESPONDEDcDefListRecipientsRespondedProp.IDS_FORMS_TRACKER_DEF_RECIPIENTS_NOT_RESPONDED"cDefListRecipientsNotRespondedProp%IDS_FORMS_TRACKER_END_DATA_COLLECTIONcEndDataCollection$IDS_FORMS_TRACKER_OPEN_ORIGINAL_FORMcOpenOriginalForm"IDS_FORMS_TRACKER_REMOVE_RESPONSEScRemoveResponsesFromTracker*IDS_FORMS_TRACKER_REMOVE_FORM_FROM_TRACKERcRemoveFormFromTrackerIDS_FORMS_TRACKER_INVITEcAddRecipients"IDS_TRACKER_ACTION_EMAIL_INITIATORcEmailInitiatorIDS_FORMS_TRACKER_EMAIL_ALLcEmailAllRecipients'IDS_FORMS_TRACKER_EMAIL_NON_RESPONDENTScEmailNonRespondentsinitcFormWorkflowIDoFormWorkflowInfocurrentFormWorkflowaFormWorkflowInfocurrentFormWorkflowsInFeedshowMyFormsItemViewshowSubmittedFormsItemView showItemViewshowMyFormsFeedViewshowSubmittedFormsFeedView showFeedViewonSelectionChanged handleLinkPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements descriptionapp beginPrivtrustedFunctionendPriv˙˙˙˙Ášdialog’q°qúƒˆ ˙˙˙˙Áa" šaŰŁ ŕČdialogfeedLLINK selection extensionoptions bShownFromFIWoptArrindex singleOpt singleOptArrcFormWorkflowIDformsWorkflowInfocFormWorkflowMethod bIsSharedFormcVisibleSharedForm aRecipients oRecipients nRespondednTotalResponsesicFormWorkflowResponsesNamecViewResponsesLinkcFormWorkflowOpenLinkcFormWorkflowFilePathcResponsesFilePathcChangeResponsesLocationPathcFormWorkflowHostcDistributedOncSentRecvdUsingServercFormWorkflowStatebIsFormSuspendedbIsFormCorruptedcClickHerePostStringcClickHereLinkcHowDoIFixThisLinkcVisibleClickHerePartcVisibleHowDoIFixThiscFormWorkflowsFileStatecVisibleStatuscFormWorkflowError cVisibleErrornTotalRecipientscTotalRecipientscTotalResponses cNewResponses cNewFormsReceivedSinceLastViewed'cVisibleNewFormsReceivedSinceLastViewedcVisibleNoneSinceLastViewed nNewResponses nNotRespondedcRecipientsRespondedcRecipientsNotResponded oAccessLevel cAccessLevelcVisibleAccessLevel*cVisibleDataCollectionEndedSinceLastViewed#cDataCollectionEndedSinceLastViewednNumNewFormsReceivedbDataCollectionEndedcEmailAllRecipientsLinkcEmailNonRespondentsLinkcAddRecipientsLinkcRemoveResponsesFromTrackerLinkcEndDataCollectionLinkcVisibleEndDataCollectionLinkcPDFIconForFormcDistributionMethodcVisibleAddRecipients#cVisibleEmailRecipientsNotRespondedcVisibleRecipientsNotRespondedgroupcTopArrowXHTML cSentRecvdcSentRecvdLink cFormName cGroupLink viewXHTMLviewResponsesXHTML topContentxhtmlbrXHTMLbody tableXHTMLisRecipientLessercurrentcurValtrav evenOddRowrecipientIndex curRecipient cRowColor cResponded cRedOrBlackrecipientXHTMLstmreplacedString arguments¨rVĚ „o Šd˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Q; ¸ ä:Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Q; ¸ ä:Q>Š ˙˙˙˙Qˆ˙˙˙˙;çˆ˙˙˙˙ ¸ ä=ä:Š ˙˙˙˙Q>Š ˙˙˙˙Q”mˆ ˙˙˙˙ˆ ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙ ¸ ä= ä:Š ˙˙˙˙Qˆ ˙˙˙˙>7x= y zˆ ˙˙˙˙?7Š ˙˙˙˙Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙˙Wˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QA5 5 ˆ˙˙˙˙bA5 ˆ˙˙˙˙6 Q; ¸ ä:QA5 ; ¸ äˆ˙˙˙˙ä:6Q; ¸ ä:QA5 5Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙=Š˙˙˙˙Qˆ˙˙˙˙= =Š˙˙˙˙QZ\Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Q>Š˙˙˙˙Q>Š˙˙˙˙Qˆ˙˙˙˙K§mMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙Ů Yˆ˙˙˙˙ˆ˙˙˙˙75]ˆ˙˙˙˙ˆ˙˙˙˙75]=ˆ˙˙˙˙=9âäˆ˙˙˙˙ˆ˙˙˙˙75ä:]ˆ˙˙˙˙ˆ˙˙˙˙75]ˆ˙˙˙˙ˆ˙˙˙˙75] ˆ˙˙˙˙(=ˆ˙˙˙˙ˆ˙˙˙˙75! =]"=ˆ˙˙˙˙ˆ˙˙˙˙75#]$\8Qˆ˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙75#Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙75#>ˆ˙˙˙˙# ?Š˙˙˙˙QQăL˙˙ţ[Nˆ˙˙˙˙5%Š˙˙˙˙Q‰˙˙˙˙ä=&ä='ˆ˙˙˙˙ä:Š˙˙˙˙Q‰˙˙˙˙ä=&ä=(ˆ˙˙˙˙ä:Š˙˙˙˙Qˆ˙˙˙˙5)Š˙˙˙˙Qˆ˙˙˙˙5*Š˙˙˙˙Q‰˙˙˙˙ä=&ä=+ˆ˙˙˙˙ä:Š˙˙˙˙Qˆ˙˙˙˙5,Š˙˙˙˙Qˆ˙˙˙˙5-Š˙˙˙˙QA5.Š ˙˙˙˙Qˆ ˙˙˙˙ ¸/ ä=0äˆ˙˙˙˙ä:Š ˙˙˙˙Qˆ˙˙˙˙8ˆ ˙˙˙˙ ¸/ ä=1äˆ˙˙˙˙ä:Š ˙˙˙˙Q0ˆ ˙˙˙˙ ¸/ ä=1äA52ä:Š ˙˙˙˙Qˆ˙˙˙˙53Š!˙˙˙˙QBŠ"˙˙˙˙Qˆ˙˙˙˙"ˆ!˙˙˙˙ˆ*˙˙˙˙Š"˙˙˙˙QBŠ#˙˙˙˙Qˆ˙˙˙˙"ˆ!˙˙˙˙ˆ+˙˙˙˙Š#˙˙˙˙Q=Š$˙˙˙˙Q=Š%˙˙˙˙Q=Š&˙˙˙˙Q=Š'˙˙˙˙Q=Š(˙˙˙˙Qˆ"˙˙˙˙B=4ˆ˙˙˙˙Š%˙˙˙˙QA55Š$˙˙˙˙Q=Š'˙˙˙˙Q1ˆ#˙˙˙˙#=6Š&˙˙˙˙Q=Š(˙˙˙˙Qˆ˙˙˙˙57Š)˙˙˙˙Qˆ˙˙˙˙= =Š*˙˙˙˙Q=Š+˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙58Š+˙˙˙˙Qˆ˙˙˙˙ DQˆ+˙˙˙˙== =Š,˙˙˙˙Qˆ+˙˙˙˙=A59Š+˙˙˙˙Qˆ˙˙˙˙5:Š-˙˙˙˙Q=ˆ-˙˙˙˙Š.˙˙˙˙Q=ˆ˙˙˙˙5#Š/˙˙˙˙Q=Š0˙˙˙˙Q=Š1˙˙˙˙Q=Š2˙˙˙˙Q=Š3˙˙˙˙Qˆ˙˙˙˙™=ˆ˙˙˙˙5!Š0˙˙˙˙Qˆ˙˙˙˙5!>f=Š3˙˙˙˙Q=Š2˙˙˙˙QA5;Š1˙˙˙˙Qˆ1˙˙˙˙ ¸/ ä=<äˆ˙˙˙˙5!ä:Š1˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙5!>Š4˙˙˙˙Qˆ-˙˙˙˙ˆ˙˙˙˙Š5˙˙˙˙Qˆ6˙˙˙˙Qˆ˙˙˙˙5=#=ˆ˙˙˙˙Š6˙˙˙˙Q=ˆ˙˙˙˙Š6˙˙˙˙Qˆ˙˙˙˙.ˆ6˙˙˙˙=>ˆ4˙˙˙˙=?Š6˙˙˙˙Q=ˆ5˙˙˙˙Š7˙˙˙˙QY;@5A]B;@5C]D\Š8˙˙˙˙Q=Š9˙˙˙˙Q=Š:˙˙˙˙Qˆ˙˙˙˙rˆ˙˙˙˙5EŠ9˙˙˙˙Qˆ9˙˙˙˙=BDQˆ9˙˙˙˙=D1ˆ8˙˙˙˙ˆ9˙˙˙˙7Š9˙˙˙˙Q=Š:˙˙˙˙Q=Š;˙˙˙˙Q=Š<˙˙˙˙Q>Š=˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙5!Š=˙˙˙˙Qˆ)˙˙˙˙ˆ)˙˙˙˙DQˆ!˙˙˙˙ˆ)˙˙˙˙ CBŠ>˙˙˙˙Q‰˙˙˙˙ä=&ä=Fˆ˙˙˙˙ä:Š?˙˙˙˙Q‰˙˙˙˙ä=&ä=Gˆ˙˙˙˙ä:Š@˙˙˙˙Q‰˙˙˙˙ä=&ä=Hˆ˙˙˙˙ä:ŠA˙˙˙˙Q‰˙˙˙˙ä=&ä=Iˆ˙˙˙˙ä:ŠB˙˙˙˙Q‰˙˙˙˙ä=&ä=Jˆ˙˙˙˙ä:ŠC˙˙˙˙Q=KŠD˙˙˙˙Qˆ˙˙˙˙#ˆ>˙˙˙˙ =ŠD˙˙˙˙Qˆ˙˙˙˙EQˆ>˙˙˙˙=L =MŠE˙˙˙˙Qˆ˙˙˙˙5NŠF˙˙˙˙Q=ŠG˙˙˙˙QˆF˙˙˙˙=OE Qˆ˙˙˙˙ DQˆ>˙˙˙˙ =ŠG˙˙˙˙Q=ŠH˙˙˙˙Qˆ˙˙˙˙5==ŠH˙˙˙˙Q=ŠI˙˙˙˙Qˆ˙˙˙˙5==ŠI˙˙˙˙Q;P ¸Q äYB]R\ä:Qˆ˙˙˙˙ˆ"˙˙˙˙7ŠJ˙˙˙˙Q@ŠK˙˙˙˙Qˆ˙˙˙˙5Sˆ ˙˙˙˙A5T A5UŠL˙˙˙˙Qˆ˙˙˙˙5Sˆ ˙˙˙˙ˆ ˙˙˙˙ˆ ˙˙˙˙ŠM˙˙˙˙Qˆ˙˙˙˙5%ŠN˙˙˙˙QˆJ˙˙˙˙;žż=Vż=W=X=Y¨=ZŠ=[¨Ŕˆ˙˙˙˙˛§Š=\ŔA5]ł=^=_ż=W=X=Y¨=ZŠ=[¨ŔˆM˙˙˙˙˛§Š=\ŔˆL˙˙˙˙ł=^=_ŔˆN˙˙˙˙ł=`°ŠK˙˙˙˙Q=aŠO˙˙˙˙Qż=Vż=W=X=Y¨=ZŠ=[¨Ŕˆ˙˙˙˙˛§Š=\ŔA5]ł=^=_ż=W=X=Y¨=ZŠ=[¨ŔˆM˙˙˙˙˛§Š=\ŔˆL˙˙˙˙ł=^=_ż=W=X=Y¨=ZŠ=[¨ŔˆO˙˙˙˙˛§Š=b¨=\ŔˆJ˙˙˙˙ł=^=_ŔˆN˙˙˙˙ł=`°ŠK˙˙˙˙Qż=cż=dż=eż=fż=gż=hż=iż=jŔA5kł=l=m=nż=oŔˆ˙˙˙˙ł=pŔA59łż=W=X=[¨Ŕˆ˙˙˙˙˛§Š=\ż=qŔA5rł=l=^=s=t=uż=W=v=w¨Ŕˆ*˙˙˙˙˛§Š=\=nż=iż=jŔA5xł=l=m=nż=oż=jŔA5yˆ!˙˙˙˙7ł=pż=W=z=w¨Ŕˆ(˙˙˙˙˛§Š=\ż=W=X=w¨={Š=[¨Ŕˆ&˙˙˙˙˛§Š=\=|ŔA5}ł=~=l=pż=W=z=w¨Ŕˆ'˙˙˙˙˛§Š=\=|ŔA5ł=pż=W=X=w¨={Š=[¨Ŕˆ%˙˙˙˙˛§Š=\ŔA5€ł=^=pŔˆ$˙˙˙˙ł==l=s=t=uż=W=v=w¨Ŕˆ,˙˙˙˙˛§Š=\=nż=iŔA59ł=m=nż=‚ż=ƒŔˆ+˙˙˙˙ł=l=s=t=uż=hż=iż=jŔA5„ł=l=m=nż=oż=jŔˆ ˙˙˙˙ł=l=s=t=uż=W=v=w¨Ŕˆ:˙˙˙˙˛§Š=\=nż=iż=jŔA5…ł=l=m=nż=oż=jŔˆ9˙˙˙˙ł=l=s=t=†=‡=ˆż=‰ż=W=X=w¨ŔˆD˙˙˙˙˛§Š=[¨ŔˆC˙˙˙˙˛§Š=Š¨=\ż=qŔA5‹ł=l=^=Œż=W=X=[¨Ŕˆ˙˙˙˙˛§Š=¨=\ż=qŔA5Žł=l=^=‡=ż=ŔA59ł=‘=’ż=‰ż=“ŔA5”ł=l=‡=•ż=fż=gż=hż=iż=jŔA5–ł=l=m=nż=oż=jŔˆ6˙˙˙˙ł=l=s=t=uż=W=v=w¨ŔˆI˙˙˙˙˛§Š=\=nż=iż=jŔA5—ł=l=m=nż=oż=jŔˆ7˙˙˙˙ł=l=s=t=uż=hż=iż=jŔA5˜ł=l=m=nż=oż=jŔˆ.˙˙˙˙ł=l=s=t=†=‡=ˆż=‰ż=W=X=[¨Ŕˆ?˙˙˙˙˛§Š=™¨=\ż=qŔA5šł=l=^=Œż=W=X=w¨ŔˆG˙˙˙˙˛§Š=[¨ŔˆA˙˙˙˙˛§Š=›¨=\ż=qŔA5œł=l=^=Œż=W=X=w¨ŔˆH˙˙˙˙˛§Š=[¨Ŕˆ@˙˙˙˙˛§Š=¨=\ż=qŔA5žł=l=^=‡=Ÿ= ż=Ąż=˘ż=W=v=Ł¨Ŕˆ˙˙˙˙˛§Š=\=¤ż=iŔA5Ľł=m=¤ż=iŔA5Śł=m=¤ż=iż=§ŔA5¨ł=Š=m=¤ż=iż=§ŔA5Şł=Š=m=Ť=Ź=­=Ž=Ż°ŠP˙˙˙˙QˆQ˙˙˙˙Qˆ ˙˙˙˙˛ż=°ż=ąż=W=X=Y¨ŔˆE˙˙˙˙˛§Š=˛¨Ŕˆ˙˙˙˙˛§Š=[¨Ŕˆ˙˙˙˙˛§Š=\ż=łŔA5´ł=l=^=ľż=śŔA5ˇł=l=­=¸°ŠQ˙˙˙˙Q„ż=šż=W=X=Y¨ŔˆE˙˙˙˙˛§Š=˛¨Ŕˆ˙˙˙˙˛§Š=[¨Ŕˆ˙˙˙˙˛§Š=\ż=şŔA5´ł=l=^=`°ŠQ˙˙˙˙Q@ŠR˙˙˙˙Q;ťä=źäRŠS˙˙˙˙QˆP˙˙˙˙ˆS˙˙˙˙¤˝­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁžŚ7=żˆ˙˙˙˙ŠR˙˙˙˙Q ăL˙˙˙žNˆR˙˙˙˙ ¸Ŕ äˆQ˙˙˙˙ä:Qż=Á°ŠT˙˙˙˙QˆR˙˙˙˙ ¸Ŕ äˆT˙˙˙˙ä:Q@ŠU˙˙˙˙Q;ťä=źäRŠS˙˙˙˙QˆP˙˙˙˙ˆS˙˙˙˙¤Â­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁžŚ7=ˆ˙˙˙˙ŠU˙˙˙˙Q ăL˙˙˙žNˆU˙˙˙˙ ¸Ŕ äˆK˙˙˙˙ä:Q@ŠV˙˙˙˙Q;ťä=źäRŠS˙˙˙˙QˆP˙˙˙˙ˆS˙˙˙˙¤Ă­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁžŚ7=Ĉ˙˙˙˙ŠV˙˙˙˙Q ăL˙˙˙žN‚ŠW˙˙˙˙Q?ŠX˙˙˙˙Qmˆ˙˙˙˙ˆX˙˙˙˙7ŠY˙˙˙˙QˆX˙˙˙˙?ŠZ˙˙˙˙Q‚m‰W˙˙˙˙äˆ˙˙˙˙ˆZ˙˙˙˙7äˆY˙˙˙˙ä:3ˆ˙˙˙˙ˆZ˙˙˙˙?ˆ˙˙˙˙ˆZ˙˙˙˙78Q /ˆZ˙˙˙˙# ?ŠZ˙˙˙˙QQăˆZ˙˙˙˙>˙˙˙vˆZ˙˙˙˙?ˆX˙˙˙˙$ˆ˙˙˙˙ˆZ˙˙˙˙?ˆY˙˙˙˙8QˆX˙˙˙˙# ?ŠX˙˙˙˙QQăˆX˙˙˙˙ˆ˙˙˙˙Ů ˙˙ţÍBŠ[˙˙˙˙Q>Š\˙˙˙˙Q˘mˆ˙˙˙˙ˆ\˙˙˙˙7Š]˙˙˙˙Qˆ[˙˙˙˙ Š[˙˙˙˙Qˆ[˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙Š^˙˙˙˙QA5Ŋ_˙˙˙˙Q=Ɗ`˙˙˙˙Qˆ˙˙˙˙5=EQˆ]˙˙˙˙5A5Ç)=Š`˙˙˙˙QA5Ȋ_˙˙˙˙QTˆ]˙˙˙˙5$>?=Š`˙˙˙˙QA5É=>ˆ]˙˙˙˙5$=?Š_˙˙˙˙Qż=W=v=Ł¨Ŕˆ^˙˙˙˙˛§Š=\=Ęż=ËŔˆ]˙˙˙˙5ł=s=Ęż=oż=W=X=[¨Ŕˆ]˙˙˙˙5˛§Š=\ż=qŔˆ]˙˙˙˙5ł=l=^=s=Ęż=oż=§ż=W=z=Y¨Ŕˆ`˙˙˙˙˛§Š=\Ŕˆ_˙˙˙˙ł=l=Š=s=Ęż=oż=§Ŕˆ]˙˙˙˙5ł=Š=s=Ě°Ša˙˙˙˙QˆV˙˙˙˙ ¸Í äˆa˙˙˙˙ä:Qˆ\˙˙˙˙# ?Š\˙˙˙˙QQăˆ\˙˙˙˙ˆ˙˙˙˙Ů ˙˙ýI;Î ¸Ď äˆP˙˙˙˙ ¸Đ ä: ¸/ ä ä=Ńä:ä=Ňä:Šb˙˙˙˙QˆP˙˙˙˙ ¸Đ ä: ¸/ ä ä=Ńä:Šc˙˙˙˙Q; ¸ ä:Q;Ó ¸Ô äˆc˙˙˙˙ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸Ő äYˆb˙˙˙˙]Ö\ä:QœĆvŠQ;× ¸Ř ä=وä:Q;× ¸Ř äˆ5Úä:Q‰ä=وä:Q‰äˆ5Úä:QÇÂė‘ĎĎŢŘˆ ѐސˆ ѐËĎ•äˆĘ €”|€Ž–ˆ ™€„ÝäË`*‘mʐˆՐP€„ˆ5ؘ€„(˜€„ˆߘ€„,ݐŐ•ˆ Րˆ ѐˆ 搈 ѐŐÝŮÉ ސĎŘËËË0€ŞŃˆ א•ÝÝ˙“ݐݐÉ#ňć˜€„Tˆ ápːÚ•ˆ ᐐŘîîŘŘîŘŘĐˆîÉ3•ˆ󐐈됐ؐËÉ•ˆ ݐËÉ•ˆ ݐĎĎĎĎĎÉ=•ˆ ِˆ Аˆ ԐÉ•ˆϐˆϐŘÉ ސĎÉ•ˆ ؐˆß ސĎ•ˆ АŘŮŢĎĎĎĎÉ•ˆ ސĐ•ˆ ϐˆ ϐˆ Аˆ 󘀄ŞÉăÝĘÎ•ˆސˆِÉ•ˆ Ţpːِ•ĎÚĎĎÉ•ˆ ؐä•ˆ ݐˆ Ϙ€„ËϐϐËÉ•ˆ ؐě֐îîîîîĎÉ•ˆĘ•ˆ ϐŘ ސŘĎŐˆ0ЈĘ•ˆϐĎÎ•ˆϐĎÎ•ˆϐˆ ސÝËŘ ŕŘ搐ؐĎ€š•ˆ –˙˙ߐ֘€…Ďˆ –˙˙˙đŃ™€…•–‘•–––é˙ëÍëé˙˙˙˙˙•ÍëÜćÍ–éćÍëéć——͐–˙â˙ɐ—–Ö––֐͐–––éćÍëéćÍ–éć——͐–˙ϐ˙â˙ܐ—Í––ëÜÜéă————ѐĘÉ€­•ˆ ‘•–˙鐐–֐Ÿ€…~֐ˆ –˙éŃ˜€…‰ËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€…–ˆ ߐŃˆ ߐËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€…ވ ߐËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€…ťĎ˜€…ŃˆĘ €€€8–ˆ ™€…ҐÝŐ €‚j€–ˆ ™€…ِě.•ˆ @€…Řˆؘ€…Ţ˜€…ŘˆҘ€…áŐ•ˆ ߘ€…Ńˆ=ؘ€…☀…Ńˆߘ€…ćːˆĘ €˘€Š€ź–ˆ ™€…ęÝˆ ˆ ԐÉ搐Аϐé$•ˆϐˆՐĐ•ˆ ϐˆ 됐ëä˙ă˙ِëŃˆ ߘ€…éˆKؘ€†˜€…éˆ&ߘ€† ˙͐őˆѐˆېˆѐˆ ęx•Đˆ ᐈ ŕˆ ߐˆ ހ{–ˆ getSelection Extensionapp beginPriv getOptionsendPriv undefinedsplit,: landedFromFIWlengthcurrentFormWorkflowcFormWorkflowIDoFormWorkflowInfo FormWorkflowgetFormWorkflowInfo SharedFormdisplay: none; oRecipientscNamecRecipientNamecEmailcRecipientEmail)acrobat:Forms?action=selectData&workflow= &recipient=encodeURIComponentcRecipientResponseFileLinkcLastResponseDateTimecRecipientLastResponseDateTimenLastResponseDateTimenRecipientLastResponseDateTime nNewResponsescRecipientUnreadResponses nResponsescRecipientTotalResponsesTitleacrobat$Forms?action=openResponses&workflow=Forms?action=openForm&workflow= cFormLocationcResponsesLocation.Forms?action=changeResponsesLocation&workflow= cFormHostcDistributedOn cSentUsingreplace%dateTimeSentRecvd% %serverName%cEmailAttachmentcState&acrobat:Forms?action=restart&workflow=cToResumeActive+acrobat:Review?showHelpForCorruptedWorkflowcStateAsPerWorkflowsFilecErrornbsp_placeholder nRecipients cNewFormsReceivedSinceLastViewed%num%bAllowAnonymous () AnnotsString+IDS_SHARED_REVIEW_DOC_CENTER_OPEN_ACCESS_FD NonRestricted,IDS_SHARED_REVIEW_DOC_CENTER_LIMIT_ACCESS_FD Restricted cAccessLevelForms?action=emailAll&workflow=*Forms?action=emailNonRespondents&workflow=Forms?action=invite&workflow=Forms?action=delete&workflow=Forms?action=end&workflow= display:none ended-iconic pdf-iconiccDistributionMethodManualXML setSettingsignoreCommentsURLcIveSent cIveReceived'<div class="bread_crumb"> <aclassblueLinkhref>cFormsSuperGroup</a> >  </div>acrobat:Inbox?gotoLevel=1style="unicode-bidi: embed;"<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> a<div id="pg_distributed_details" style="margin-left: 35px;"> <br/> -<div style="margin-left: -6px;"> 6<table class="definitionListTableLarge"> <tr> <th><span class="dontWrap">cDefListResponsesLocationProp</span></th> <td> <span class="blueLink">cEditFileLocation</td> </tr> trstylecDefListStatusPropoWorkflowStatespan color:blue;(cHowDoIFixThis)</a>cClickcHere)</span>[<td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif"/><span style="color:red;">cDefListDistributedOnPropcDefListAccessLevelProp </table> </div> %<div class="buttons"> #class="stop-data-collection-iconic"cEndDataCollection !class="open-original-form-iconic"cOpenOriginalForm@ <br/> <div class="dottedLine"></div>3 <br/> G<span class="responses-iconic" style="font-weight:bold; font-size:12;">cResponsesLabel cDefListRecipientsRespondedProp"cDefListRecipientsNotRespondedPropcDefListTotalRecipientsPropclass="email-all-iconic"cEmailAllRecipientsclass="add-reviewer-iconic"cAddRecipients+class="email-recipients-not-respond-iconic"cEmailNonRespondents4 <br/> </div> 2<div class="borderedDivDetailPage"> a<table id="recipientList" class="borderedTable" cellpadding="15" cellspacing="0"> bgcolor cTableHeaderEmailcTableHeaderRecipientName<center>cTableHeaderResponded </center> cTableHeaderLastResponseDateTime </tr> </table> </div> </body> </html>Đ<div class="roundcont"> <div class="roundtop"> <img src="AdobeTracker/tl.gif" alt="" width="15" height="15" class="corner" style="display: none"/> </div> /<div style="margin-left: 15px;"> titleA<span class="blueLink" style="font-weight: bold; font-size: 12;">cViewResponsesLabel7 <br/> <br/> A<span style="margin-left: 30px; font-weight:bold; color: black;">cDistributionMessageŔ <div class="roundbottom"> <img src="AdobeTracker/bl.gif" alt="" width="15" height="5" class="corner" style="display: none"/> </div> </div>#<div class="buttons"> Y<span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;"> Namespacehttp://www.w3.org/1999/xhtmldividpg_distributed_details prependChild<br/>bodytable recipientList cRespondedNoredcAnonymousUser cRespondedNA cRespondedYes <td style="padding-left: 10px;"> </tr> appendChildutilstreamFromString toXMLString&nbsp;utf-8CollabsaveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙Ášs÷rs „‰˙˙˙˙äTä:ˆ ӈ˙˙˙˙Ášschemes2sgs„T=Tˆ Έ:˙˙˙˙Áqš" recipient1 recipient2emailID1emailID21žĹŔť…T5T5 ?XT5T5@T5 ¸ ä:WQT5 ¸ ä:WQVV>Ń•ˆ —Ń;•××ˆ ͐ˆ Š nRecipientLastResponseDateTimecRecipientEmail toLowerCase˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDER\!´źa8šúGOGtGéŞčŽ˙˙˙˙Á4Î š4™ž%ČdialogfeedLLINK selection extensioncFormWorkflowIDformsWorkflowInfocFormWorkflowMethod bIsSharedFormcVisibleSharedForm aSubmissions oSubmissions oSubmitStatusicFormWorkflowFileName cViewFormLinkcFormWorkflowFilePathbFormWorkflowIsSuspendedcFormWorkflowStatecVisibleResumecFormWorkflowResumeLinkcFormWorkflowsFileStatebDataCollectionEndedcPDFIconForFormcFormWorkflowError cVisibleErrorcFormWorkflowHost cReceivedOncSentRecvdUsingServer cLastOpenedOncEmailInitiatorLinkgroupcTopArrowXHTML cSentRecvdcSentRecvdLink cFormName cGroupLinkcVisibleSubmissionHistoryTablecVisibleNoSubmissionHistory viewXHTMLbodyxhtml tableXHTMLcurrentcurValtrav evenOddRowindex curSubmit cRowColorrecipientXHTMLstm arguments‰Ě9ú†@ Š7˙˙˙˙Q†‚Š˙˙˙˙Q‚Š˙˙˙˙Qˆ˙˙˙˙ ¸ ä:Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙QA55ˆ˙˙˙˙bA5ˆ˙˙˙˙6Q; ¸ ä:QA5; ¸ äˆ˙˙˙˙ä:6Q; ¸ ä:QA55Š ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙= Š ˙˙˙˙Qˆ ˙˙˙˙=  = Š ˙˙˙˙QZ\Š ˙˙˙˙Qˆ ˙˙˙˙5 Š˙˙˙˙QY‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:]\Š˙˙˙˙Q>Š˙˙˙˙Qžmˆ ˙˙˙˙ˆ ˙˙˙˙ŮYˆ˙˙˙˙ˆ˙˙˙˙75]ˆ˙˙˙˙ˆ˙˙˙˙75]ˆ˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙757]\8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ˙˙˙˙Ů˙˙˙Mˆ˙˙˙˙5Š˙˙˙˙Q‰˙˙˙˙ä=ä=ˆ˙˙˙˙ä:Š˙˙˙˙Qˆ ˙˙˙˙5Š˙˙˙˙QBŠ˙˙˙˙QA5ˆ ˙˙˙˙57Š˙˙˙˙Qˆ ˙˙˙˙@ˆ ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙A55Š˙˙˙˙Qˆ˙˙˙˙B=  = Š˙˙˙˙Q‰˙˙˙˙ä=ä= ˆ˙˙˙˙ä:Š˙˙˙˙Qˆ ˙˙˙˙5!Š˙˙˙˙Qˆ˙˙˙˙ˆ)˙˙˙˙DQˆ˙˙˙˙ˆ)˙˙˙˙ CBŠ˙˙˙˙Qˆ ˙˙˙˙EQˆ˙˙˙˙=" =#Š˙˙˙˙Q= Š˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙5$Š˙˙˙˙Qˆ ˙˙˙˙ DQˆ˙˙˙˙= =  = Š˙˙˙˙Qˆ˙˙˙˙= A5%Š˙˙˙˙Qˆ ˙˙˙˙5&Š˙˙˙˙Qˆ ˙˙˙˙5'Š˙˙˙˙QA5(Š˙˙˙˙Qˆ˙˙˙˙ ¸) ä=*äˆ˙˙˙˙ä:Š˙˙˙˙Qˆ ˙˙˙˙8ˆ˙˙˙˙ ¸) ä=+äˆ˙˙˙˙ä:Š˙˙˙˙Q0ˆ˙˙˙˙ ¸) ä=+äA5,ä:Š˙˙˙˙Qˆ ˙˙˙˙5-Š ˙˙˙˙Q‰˙˙˙˙ä=ä=.ˆ˙˙˙˙ä:Š!˙˙˙˙Q;/ ¸0 äYB]1\ä:Qˆ˙˙˙˙ˆ"˙˙˙˙7Š"˙˙˙˙Qˆ#˙˙˙˙Qˆ˙˙˙˙52ˆ ˙˙˙˙A53 A54Š$˙˙˙˙Qˆ˙˙˙˙52ˆ ˙˙˙˙ˆ ˙˙˙˙ˆ ˙˙˙˙Š%˙˙˙˙Qˆ˙˙˙˙5Š&˙˙˙˙Qˆ"˙˙˙˙;5žż=6ż=7=8=9¨=:Š=;¨Ŕˆ˙˙˙˙˛§Š=<ŔA5=ł=>=?ż=7=8=9¨=:Š=;¨Ŕˆ%˙˙˙˙˛§Š=<Ŕˆ$˙˙˙˙ł=>=?Ŕˆ&˙˙˙˙ł=@°Š#˙˙˙˙Q=AŠ'˙˙˙˙Qż=6ż=7=8=9¨=:Š=;¨Ŕˆ˙˙˙˙˛§Š=<ŔA5=ł=>=?ż=7=8=9¨=:Š=;¨Ŕˆ%˙˙˙˙˛§Š=<Ŕˆ$˙˙˙˙ł=>=?ż=7=8=9¨=:Š=;¨Ŕˆ'˙˙˙˙˛§Š=B¨=<Ŕˆ"˙˙˙˙ł=>=?Ŕˆ&˙˙˙˙ł=@°Š#˙˙˙˙Qˆ ˙˙˙˙Ů>=  = Š(˙˙˙˙Qˆ ˙˙˙˙Ů>=C =DŠ)˙˙˙˙Qż=Eż=Fż=Gż=Hż=7=8=I¨Ŕˆ˙˙˙˙˛§Š=;¨Ŕˆ˙˙˙˙˛§Š=9¨Ŕˆ˙˙˙˙˛§Š=<ż=JŔA5Kł=L=>=M=Nż=Oż=Pż=Qż=Rż=SŔA5Tł=L=U=Vż=Wż=7=8=X¨=YŠ=;¨Ŕˆ˙˙˙˙˛§Š=<Ŕˆ˙˙˙˙ł=>=Z=[=\ż=7=]=X¨Ŕˆ˙˙˙˙˛§Š=<=Vż=RŔA5%ł=U=Vż=^ż=_Ŕˆ˙˙˙˙ł=L=Z=[=\ż=Qż=Rż=SŔA5`ł=L=U=Vż=Wż=SŔˆ˙˙˙˙ł=L=Z=[=\ż=Qż=Rż=SŔA5ał=L=U=Vż=Wż=SŔˆ ˙˙˙˙ł=L=Z=[=b=M=cż=dŔA5%ł=e=fż=Hż=gŔA5hł=L=M=iż=Hż=7=8=X¨=YŠ=;¨Ŕˆ!˙˙˙˙˛§Š=j¨=<ż=kŔA5lł=L=>=M=m=nż=oż=7=p=X¨Ŕˆ(˙˙˙˙˛§Š=q¨=<=rż=7=]=s¨Ŕˆ˙˙˙˙˛§Š=<=tż=RŔA5uł=U=tż=7=v=X¨Ŕˆ ˙˙˙˙˛§Š=<ŔA5wł=U=x=y=zż=7={=X¨Ŕˆ)˙˙˙˙˛§Š=<=rŔA5|ł=}=~==€°Š*˙˙˙˙Q@Š+˙˙˙˙Q;ä=‚äRŠ,˙˙˙˙Qˆ*˙˙˙˙ˆ,˙˙˙˙¤ƒ­KDmMŠ˙˙˙˙Qˆ˙˙˙˙Ł„Ś7=ƒˆ˙˙˙˙Š+˙˙˙˙Q ăL˙˙˙žNˆ+˙˙˙˙ ¸… äˆ#˙˙˙˙ä:Q@Š-˙˙˙˙Q;ä=‚äRŠ,˙˙˙˙Qˆ*˙˙˙˙ˆ,˙˙˙˙¤p­KDmMŠ˙˙˙˙Qˆ˙˙˙˙Ł„Ś7=†ˆ˙˙˙˙Š-˙˙˙˙Q ăL˙˙˙žN?Š.˙˙˙˙Qmˆ ˙˙˙˙ˆ.˙˙˙˙7Š/˙˙˙˙Qˆ.˙˙˙˙?Š0˙˙˙˙Q}mˆ ˙˙˙˙ˆ0˙˙˙˙75ˆ/˙˙˙˙53ˆ ˙˙˙˙ˆ0˙˙˙˙?ˆ ˙˙˙˙ˆ0˙˙˙˙78Q /ˆ0˙˙˙˙# ?Š0˙˙˙˙QQăˆ0˙˙˙˙>˙˙˙{ˆ0˙˙˙˙?ˆ.˙˙˙˙$ˆ ˙˙˙˙ˆ0˙˙˙˙?ˆ/˙˙˙˙8Qˆ.˙˙˙˙# ?Š.˙˙˙˙QQăˆ.˙˙˙˙ˆ ˙˙˙˙Ů˙˙ţŇBŠ1˙˙˙˙Q>Š2˙˙˙˙Q:mˆ ˙˙˙˙ˆ2˙˙˙˙7Š3˙˙˙˙Qˆ1˙˙˙˙ Š1˙˙˙˙Qˆ1˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙Š4˙˙˙˙Qż=7=]=s¨Ŕˆ4˙˙˙˙˛§Š=<=‡ż=ˆŔˆ3˙˙˙˙5ł=Z=‡ż=7=‰=X¨Ŕˆ ˙˙˙˙˛§Š=<Ŕˆ3˙˙˙˙5ł=Z=Š°Š5˙˙˙˙Qˆ-˙˙˙˙ ¸‹ äˆ5˙˙˙˙ä:Qˆ2˙˙˙˙# ?Š2˙˙˙˙QQăˆ2˙˙˙˙ˆ ˙˙˙˙Ů˙˙ţą;Œ ¸ äˆ*˙˙˙˙ ¸Ž ä: ¸) ä ä=ä:ä=ä:Š6˙˙˙˙Q; ¸ ä:Q;‘ ¸’ äˆ*˙˙˙˙ ¸Ž ä: ¸) ä ä=ä:ä:Q; ¸ ä:Qˆ˙˙˙˙ ¸“ äYˆ6˙˙˙˙]”\ä:QœĆvŠQ;• ¸– ä=—ˆä:Q;• ¸– äˆ5˜ä:Q‰ä=—ˆä:Q‰äˆ5˜ä:QÇÂė‘ĎĎŢŘÝŐ•ˆ Րˆ ѐˆ 搈 ѐŐÝŮÉ ސĎŘ•ŮŮäˆĘ €ž€†€¸ž€†Fˆ ™€†Cˆ א•ÝÝę˜€†Bˆ2ؘ€†K˜€†Bˆߘ€†NؐؐËßÉ•ˆ ؐÉ•ˆ ՐË ސؐě֐Ř ސĎÉ•ˆ ؐˆß ސĎ•ˆ АŘŘĐˆîÉ3•ˆ󐐈됐ؐîˆ ސÝĘŘ ŕŘ搐ؐĎ€š•ˆ –˙˙ߐ֘€†Ďˆ –˙˙˙đŃĐ ސĐ ސ™€†Ÿ•–‘•–˙鐗––––é˙Ґ͐ëÜćÍ–éćÍ–éć——͐Ö––֐—––˙Ր—Í–ńëÜő—͐ěČ———ѐËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€†ďˆ ߐËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€‡ˆĘ €€€3–ˆ ™€‡ÝŐ }e€Š–ˆ ™€‡ ç.•ˆ @€‡ˆؘ€‡˜€‡ˆҘ€‡Ő•ˆ ߘ€‡ˆ>ؘ€‡˜€‡ˆߘ€‡ːˆĘ €:€"€T–ˆ ™€‡Ýˆ ˆ ԐÉ搐ëäýŃˆ ߘ€‡ˆ:ؘ€‡&˜€‡ˆߘ€‡)˙͐ˆѐˆýˆѐˆ ęx•Đˆ ᐈ ŕˆ ߐˆ ހ{–ˆ getSelection ExtensioncurrentFormWorkflowcFormWorkflowIDapp beginPrivoFormWorkflowInfo FormWorkflowgetFormWorkflowInfoendPriv SharedFormdisplay: none; oSubmissions#IDS_FORMS_TRACKER_STATUS_SUCCESSFUL Successful IDS_FORMS_TRACKER_STATUS_PENDINGPendingIDS_FORMS_TRACKER_STATUS_FAILEDFailedlengthcSubmitDateTimenSubmitDateTimecStatusTitleacrobatForms?action=openForm&workflow= cFormLocationoWorkflowStatecState bIsSuspended SuspendedForms?action=restart&workflow=cStateAsPerWorkflowsFile ended-iconic pdf-iconiccErrornbsp_placeholder cFormHost cReceivedOn cSentUsingreplace%dateTimeSentRecvd% %serverName%cEmailAttachment cLastOpenedOn%Forms?action=emailInitiator&workflow=XML setSettingsignoreCommentsURLcIveSent cIveReceived undefined'<div class="bread_crumb"> <aclassblueLinkhref>cFormsSuperGroup</a> >  </div>acrobat:Inbox?gotoLevel=1style="unicode-bidi: embed;"margin-left: 5px; display: none; margin-left: 5px;<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> X<div id="pg_sent_details" style="margin-left: 35px;"> <br/> %<div class="buttons"> titleY<span style="color: blue; text-decoration: underline; font-weight: bold; font-size: 12;">cViewFormButtonLabel</span> </div>3 <br/> -<div style="margin-left: -6px;"> 6<table class="definitionListTableSmall"> <tr> <th><span class="dontWrap">cDefListFormLocationProp</th> <td>stylecolor:#0000FF;</td> </tr> tr[<td><img style="vertical-align:middle; margin-right: 6px;" src="AdobeTracker/warning.gif"/><span style="color:red;">cDefListReceivedOnPropcDefListLastOpenedOnProp </table> <div class="dottedLine"></div>' <br/> P<span class="submission-history-iconic" style="font-weight:bold; font-size:12;">cSubmissionHistoryLabel& <br/> class="email-initiator-iconic"<span class="blueLink">cEmailInitiator7 <br/> </div> 2<div class="borderedDivDetailPage"> tableIid="submitHistory" class="borderedTable" cellpadding="15" cellspacing="0" bgcolor cTableHeaderSubmittedDateTimethcTableHeaderStatus </tr> </table> divcNoSubmissionHistory<br/> </div> </div> </body> </html> Namespacehttp://www.w3.org/1999/xhtmlbodyid prependChild submitHistory <td style="padding-left: 10px;">td </tr> appendChildutilstreamFromString toXMLString&nbsp;utf-8CollabsaveTrackerHTMLloadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙ÁšsŘĚô̆‰˙˙˙˙äTä:ˆ ӈ˙˙˙˙ÁšschemesÍH͆T=Tˆ Έ:˙˙˙˙eNBSP_PLACEHOLDERNBSP_PLACEHOLDER*ýTŻ3čŠWGŹ Gí¸˙˙˙˙Ářš 5dialogfeed selection extension isInitiated\úý8‡ †T ¸ ä:WQT ¸ ä:WQV5WQVˆ˙˙˙˙7WQVA ¸ äTäVä:QA ¸ äTäVä:Q~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q‰ä=Vä:Q‰äV5ä:Qǐ‘ŇŇĚŃ•ˆ ڐˆ Őx•Ęˆ ېˆ ڐˆ ِˆ ؀{–ˆ getFeed getSelection ExtensionshowMyFormsItemViewshowSubmittedFormsItemViewconsoleprintln EXCEPTION: stack˙˙˙˙e}˙˙˙˙Á"­ š"n† ČdialogfeedLINK extensionitemsgroupiaFormsWorkflowListitemdocIDformsWorkflowInfo bIsSharedForm nResponded oRecipientsnTotalResponses nNewResponsescRecipientsResponded cSentRecvdcSentRecvdLinkcNoFormsInFeed viewXHTMLcTopArrowXHTMLbodyxhtml borderedDiv tableXHTMLcurrentcurValtrav evenOddRow formIndexcurForm cRowColor formXHTMLstm arguments?ýî!Q‡. Š%˙˙˙˙Q†‚Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙Q; ¸ äYB]\ä:Qˆ˙˙˙˙ ¸ ä:)ˆ˙˙˙˙ ¸ ä=ä:Š˙˙˙˙QA55 f>Š˙˙˙˙Q5mA55 ˆ˙˙˙˙@8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A55 Ů ˙˙˙´A5; äR6 QZ\Š ˙˙˙˙Qˆ˙˙˙˙K¸mMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ'˙˙˙˙7 Kˆ˙˙˙˙; E(Qˆ ˙˙˙˙5ˆ"˙˙˙˙7ˆ˙˙˙˙  @Š ˙˙˙˙Q; ¸ ä:Q; ¸ äˆ ˙˙˙˙ä:Š ˙˙˙˙Q; ¸ ä:Qˆ ˙˙˙˙@ ¤A55 ¸ äˆ ˙˙˙˙ä:Qˆ ˙˙˙˙5ˆ˙˙˙˙7=Š ˙˙˙˙Q>Š˙˙˙˙Qˆ ˙˙˙˙5Š˙˙˙˙Q>Š˙˙˙˙Qˆ˙˙˙˙KtmMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙75>Iˆ˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙75Š˙˙˙˙Qˆ˙˙˙˙# ?Š˙˙˙˙QQăL˙˙˙ŽNˆ ˙˙˙˙ˆ ˙˙˙˙5>Š˙˙˙˙Qˆ˙˙˙˙Qˆ ˙˙˙˙5#=ˆ˙˙˙˙Š˙˙˙˙Q=ˆ˙˙˙˙Š˙˙˙˙Qˆ ˙˙˙˙.ˆ˙˙˙˙=ˆ˙˙˙˙=Š˙˙˙˙Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů Yˆ ˙˙˙˙5]‰˙˙˙˙ä=ä=ˆ ˙˙˙˙=ˆ˙˙˙˙5 =!ˆ ˙˙˙˙5"ä:]#ˆ ˙˙˙˙5ˆ˙˙˙˙7]$ˆ ˙˙˙˙5%]%ˆ ˙˙˙˙5&]&ˆ˙˙˙˙]'ˆ ˙˙˙˙5(](\8QăL˙˙üJNˆ˙˙˙˙5 ˆ ˙˙˙˙A5) A5*Š˙˙˙˙Qˆ˙˙˙˙5 ˆ ˙˙˙˙ˆ ˙˙˙˙ˆ ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙A5+Š˙˙˙˙Q=ˆ˙˙˙˙5 ˆ ˙˙˙˙A5, A5-Š˙˙˙˙Qˆ˙˙˙˙Qˆ ˙˙˙˙Ů >€ż=.ż=/ż=0ż=1ż=2Ŕˆ˙˙˙˙ł=3=3=4ż=5Ŕˆ˙˙˙˙ł=6=7=8=9°Š˙˙˙˙Qiż=.ż=/ż=:ż=;ż=1ż=2Ŕˆ˙˙˙˙ł=3=3=<===8=9°Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙; uż=>ż=?=@=A¨Ŕˆ˙˙˙˙˛§Š=Bż=CŔA5Dł=3=E=FŔˆ˙˙˙˙ł=G°Š˙˙˙˙Qťż=>ż=?=@=A¨Ŕˆ˙˙˙˙˛§Š=Bż=CŔA5Dł=3=E=Fż=?=@=A¨Ŕˆ˙˙˙˙˛§Š=Bż=CŔˆ˙˙˙˙ł=3=E=FŔˆ˙˙˙˙ł=G°Š˙˙˙˙Q@Š˙˙˙˙Q;Hä=IäRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤J­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁKŚ7=Jˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNˆ˙˙˙˙ ¸L äˆ˙˙˙˙ä:Qˆ ˙˙˙˙Ů >°@Š˙˙˙˙Q;Hä=IäRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤M­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁKŚ7=Nˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNż=Oż=?=P=Q¨Ŕˆ˙˙˙˙˛§Š=B=Rż=SŔA5Tł=U=Rż=VŔA5Wł=U=Rż=Vż=XŔA5Ył=Z=U=Rż=Vż=XŔA5[ł=Z=U=\=]°Š˙˙˙˙Qˆ˙˙˙˙ ¸^ äˆ˙˙˙˙ä:Q?Š˙˙˙˙Qmˆ ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙?Š˙˙˙˙Q}mˆ ˙˙˙˙ˆ˙˙˙˙75&ˆ˙˙˙˙5&3ˆ ˙˙˙˙ˆ˙˙˙˙?ˆ ˙˙˙˙ˆ˙˙˙˙78Q /ˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙>˙˙˙{ˆ˙˙˙˙?ˆ˙˙˙˙$ˆ ˙˙˙˙ˆ˙˙˙˙?ˆ˙˙˙˙8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţŇBŠ˙˙˙˙Q>Š ˙˙˙˙Qťmˆ ˙˙˙˙ˆ ˙˙˙˙7Š!˙˙˙˙Qˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙Š"˙˙˙˙Qż=?=P=Q¨Ŕˆ"˙˙˙˙˛§Š=B=Rż=_ż=?=@=A¨Ŕˆ!˙˙˙˙5#˛§Š=Bż=CŔˆ!˙˙˙˙5ł=3=E=`=Rż=aŔˆ!˙˙˙˙5%ł=`=Rż=aż=XŔˆ!˙˙˙˙5'ł=Z=`=Rż=aż=XŔˆ!˙˙˙˙5(ł=Z=`=\°Š#˙˙˙˙Qˆ˙˙˙˙ ¸^ äˆ#˙˙˙˙ä:Qˆ ˙˙˙˙# ?Š ˙˙˙˙QQăˆ ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţ0;b ¸c äˆ˙˙˙˙ ¸d ä: ¸e ä ä=fä:ä=gä:Š$˙˙˙˙Qˆ˙˙˙˙ ¸h äYˆ$˙˙˙˙]i\ä:QœĆvŠQ;j ¸k ä=lˆä:Q;j ¸k äˆ5mä:Q‰ä=lˆä:Q‰äˆ5mä:QÇÂė‘ĎŘŘĘˆ ސÔ•ˆ 䐐Ë•ˆ Ę 5Q–ˆ ؘ€‡cˆUؘ€‡d˜€‡cˆᘀ‡gˆ֐ĎË0€ťŃÝâŘ=•÷=•Ëˆ ѐˆ 䐈 ѐË•8•ˆ ᐐ萐ːŘËË0wѐÚ•ˆ ápːˆ ᘀ‡É㐐ʐΕˆސˆِÉ•ˆ Ţpːˆ א•Ó˙ԐݐӐӐÎß˜€‡¤Ř ŕŘ搐ʐÉ•ˆՐˆŘ ŕĘĐ{•ˆ ™€‡ś•––搐–—ː———֐ˆ ™€‡Ě•–––ć˜€‡Ö———ѐĘĎp•ˆ –˙Ր֘€‡čˆ –˙˙áŃ˜€‡đːÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€‡ţˆ ߐĐ•ËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€ˆ–ëÜÜéă—ѐˆ ߐˆĘ €€€3–ˆ ™€ˆ!ÝŐ }e€Š–ˆ ™€ˆ(ç.•ˆ@€ˆ'ˆؘ€ˆ-˜€ˆ'ˆҘ€ˆ0Ő•ˆ ߘ€ˆ ˆEؘ€ˆ1˜€ˆ ˆ ߘ€ˆ5ːˆĘ €ť€Ł€Ֆˆ ™€ˆ9Ýˆ ˆ ԐÉ搐ë˙ăäńëŃˆ ߘ€ˆ8ˆIؘ€ˆG˜€ˆ8ˆ"ߘ€ˆK˙͐ˆ ęx•Đˆ ᐈ ŕˆ ߐˆ ހ{–ˆ ExtensionItemsXML setSettingsignoreCommentsisGroupSelection getSelectionGroupcurrentFormWorkflowsInFeedaFormWorkflowInfolengthArray undefinedapp beginPriv FormWorkflowgetFormWorkflowInfoendPrivpush SharedForm oRecipients nResponses nNewResponsesbAllowAnonymous ()Title cFileNameacrobatInbox?container= &selectFeed=URL#Guid cFileLinkcFormWorkflowTypecDistributedOnnDistributedOncRecipientsResponded nRecipientscIveSent cIveReceivedcNoFormsInFoldercNoDistributedFormscNoReceivedForms<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> *<div class="summary_page"> '<span class="forms-distributed-iconic"> <span style="font-weight:bold;"></span>: <br/> <br/> <span> &#8226;  </span>* <br/> </div> </body> </html><div> 8<div id="mainDiv" class="summary_page"> ž <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div> </div>'<div class="bread_crumb"> <ahref><span class="blueLink">cFormsSuperGroup</a> >  </div> Namespacehttp://www.w3.org/1999/xhtmlbodyid prependChilddiv borderedDivIDL<table class="borderedTable" cellpadding="15" cellspacing="0"> trbgcolor <th style="padding-left: 10px;">cTableHeaderFileName</th><th>cTableHeaderDistributedOn<center>cTableHeaderRespondentsAndNew </center>cTableHeaderTotalRecipients </tr> </table> appendChild <td style="padding-left: 10px;"></td><td>utilstreamFromString toXMLStringreplace&nbsp;utf-8loadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙Ášschemes‘ýšýU‡T=Tˆ+Έ:˙˙˙˙eNBSP_PLACEHOLDER ş Ől 3Ľ Š( GhGKťćwĹQ˙˙˙˙ÁC š`:ŕČdialogfeedLINK extensionitemsgroupiaFormsWorkflowListitemdocIDformsWorkflowInfo cSentRecvdcSentRecvdLinkcNoFormsInFeed viewXHTMLcTopArrowXHTMLbodyxhtml borderedDiv tableXHTMLcurrentcurValtrav evenOddRow formIndexcurForm cRowColor formXHTMLstm arguments"ÖAWˆ( Š˙˙˙˙Q†‚Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙5Š˙˙˙˙Qˆ˙˙˙˙Q; ¸ äYB]\ä:Qˆ˙˙˙˙ ¸ ä:)ˆ˙˙˙˙ ¸ ä=ä:Š˙˙˙˙QA55 f>Š˙˙˙˙Q5mA55 ˆ˙˙˙˙@8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙A55 Ů ˙˙˙´A5; äR6 QZ\Š ˙˙˙˙Qˆ˙˙˙˙KmMŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ˙˙˙˙7Š ˙˙˙˙Qˆ ˙˙˙˙5ˆ'˙˙˙˙7 •ˆ˙˙˙˙; E(Qˆ ˙˙˙˙5ˆ"˙˙˙˙7ˆ˙˙˙˙ T@Š ˙˙˙˙Q; ¸ ä:Q; ¸ äˆ ˙˙˙˙ä:Š ˙˙˙˙Q; ¸ ä:Qˆ ˙˙˙˙@ îA55 ¸ äˆ ˙˙˙˙ä:Qˆ ˙˙˙˙ˆ ˙˙˙˙Ů Yˆ ˙˙˙˙5]‰˙˙˙˙ä=ä=ˆ ˙˙˙˙=ˆ˙˙˙˙5=ˆ ˙˙˙˙5ä:]ˆ ˙˙˙˙5ˆ˙˙˙˙7]ˆ ˙˙˙˙5]ˆ ˙˙˙˙5]\8QăL˙˙ţNˆ˙˙˙˙5ˆ ˙˙˙˙A5 A5 Š ˙˙˙˙Qˆ˙˙˙˙5ˆ ˙˙˙˙ˆ ˙˙˙˙ˆ ˙˙˙˙Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙A5!Š˙˙˙˙Q=ˆ˙˙˙˙5ˆ ˙˙˙˙A5" A5#Š˙˙˙˙Qˆ˙˙˙˙Qˆ ˙˙˙˙Ů >ż=$ż=%ż=&ż='ż=(ż=)Ŕˆ ˙˙˙˙ł=*=*=+ż=,Ŕˆ˙˙˙˙ł=-=.=/=0=1°Š˙˙˙˙Q\ż=$ż=%ż=2ż=(ż=)Ŕˆ ˙˙˙˙ł=*=*=3=0=1°Š˙˙˙˙Qˆ˙˙˙˙Qˆ˙˙˙˙; uż=4ż=5=6=7¨Ŕˆ˙˙˙˙˛§Š=8ż=9ŔA5:ł=*=;=<Ŕˆ ˙˙˙˙ł==°Š˙˙˙˙Qťż=4ż=5=6=7¨Ŕˆ˙˙˙˙˛§Š=8ż=9ŔA5:ł=*=;=<ż=5=6=7¨Ŕˆ˙˙˙˙˛§Š=8ż=9Ŕˆ ˙˙˙˙ł=*=;=<Ŕˆ˙˙˙˙ł==°Š˙˙˙˙Q@Š˙˙˙˙Q;>ä=?äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤@­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁAŚ7=@ˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNˆ˙˙˙˙ ¸B äˆ˙˙˙˙ä:Qˆ ˙˙˙˙Ů >ü@Š˙˙˙˙Q;>ä=?äRŠ˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙¤C­KDmMŠ˙˙˙˙Qˆ˙˙˙˙ŁAŚ7=Dˆ˙˙˙˙Š˙˙˙˙Q ăL˙˙˙žNż=Eż=5=F=G¨Ŕˆ˙˙˙˙˛§Š=8=Hż=IŔA5Jł=K=Hż=LŔA5Mł=K=N=O°Š˙˙˙˙Qˆ˙˙˙˙ ¸P äˆ˙˙˙˙ä:Q?Š˙˙˙˙Qmˆ ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙?Š˙˙˙˙Q}mˆ ˙˙˙˙ˆ˙˙˙˙75ˆ˙˙˙˙53ˆ ˙˙˙˙ˆ˙˙˙˙?ˆ ˙˙˙˙ˆ˙˙˙˙78Q /ˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙>˙˙˙{ˆ˙˙˙˙?ˆ˙˙˙˙$ˆ ˙˙˙˙ˆ˙˙˙˙?ˆ˙˙˙˙8Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţŇBŠ˙˙˙˙Q>Š˙˙˙˙QYmˆ ˙˙˙˙ˆ˙˙˙˙7Š˙˙˙˙Qˆ˙˙˙˙ Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙ˆ˙˙˙˙Š˙˙˙˙Qż=5=F=G¨Ŕˆ˙˙˙˙˛§Š=8=Hż=Qż=5=6=7¨Ŕˆ˙˙˙˙5˛§Š=8ż=9Ŕˆ˙˙˙˙5ł=*=;=R=Hż=SŔˆ˙˙˙˙5ł=R=N°Š˙˙˙˙Qˆ˙˙˙˙ ¸P äˆ˙˙˙˙ä:Qˆ˙˙˙˙# ?Š˙˙˙˙QQăˆ˙˙˙˙ˆ ˙˙˙˙Ů ˙˙ţ’;T ¸U äˆ˙˙˙˙ ¸V ä: ¸W ä ä=Xä:ä=Yä:Š˙˙˙˙Qˆ˙˙˙˙ ¸Z äYˆ˙˙˙˙][\ä:QœĆvŠQ;\ ¸] ä=^ˆä:Q;\ ¸] äˆ5_ä:Q‰ä=^ˆä:Q‰äˆ5_ä:QÇÂė‘ĎŘŘĘˆ ސÔ•ˆ 䐐Ë•ˆ Ę 5Q–ˆ ؘ€ˆiˆUؘ€ˆj˜€ˆiˆᘀˆmˆ֐ĎË0€ѐÝâŘ=•÷=•Ëˆ ѐˆ 䐈 ѐË•8•ˆ ᐐˆ א•Ó˙ԐݐӐߐŘ ŕŘ搐ʐÉ•ˆՐˆŘ ŕĘĐ€ˆ•ˆ ™€ˆŸ•–––搐–—ː————֐ˆ ™€ˆˇ•––ć˜€ˆŔ——ѐĘĎp•ˆ –˙Ր֘€ˆŃˆ –˙˙áŃ˜€ˆŮːÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€ˆćˆ ߐĐ•ËÚÚ0GѐÉˆÍ•ˆ Ӑ@Θ€ˆú–ëÜÖ—ѐˆ ߐˆĘ €€€3–ˆ ™€‰ÝŐ }e€Š–ˆ ™€‰ç.•ˆ@€‰ ˆؘ€‰˜€‰ ˆҘ€‰Ő•ˆ ߘ€‰ˆEؘ€‰˜€‰ˆ ߘ€‰ːˆĘ €Y€A€s–ˆ ™€‰Ýˆ ˆ ԐÉ搐ë˙ăŢŃˆ ߘ€‰ˆIؘ€‰+˜€‰ˆ"ߘ€‰/˙͐ˆ ęx•Đˆ ᐈ ŕˆ ߐˆ ހ{–ˆ ExtensionItemsXML setSettingsignoreCommentsisGroupSelection getSelectionGroupcurrentFormWorkflowsInFeedaFormWorkflowInfolengthArray undefinedapp beginPriv FormWorkflowgetFormWorkflowInfoendPrivpushTitle cFileNameacrobatInbox?container= &selectFeed=URL#Guid cFileLinkcFormWorkflowTypecLastSubmittedOn nReceivedOncIveSent cIveReceivedcNoFormsInFoldercNoDistributedFormscNoReceivedForms<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body id="body"> <div> +<div class="summary_page"> $<span class="forms-received-iconic"> <span style="font-weight:bold;"></span>= <br/> <br/> <span> &#8226;  </span>, <br/> </div> </div> </body> </html>7<div id="mainDiv" class="summary_page"> ™ <br/> <br/> <div class="borderedDivSummaryPage" id="borderedDivID"> </div> </div>'<div class="bread_crumb"> <ahref><span class="blueLink">cFormsSuperGroup</a> >  </div> Namespacehttp://www.w3.org/1999/xhtmlbodyid prependChilddiv borderedDivIDL<table class="borderedTable" cellpadding="15" cellspacing="0"> trbgcolor <th style="padding-left: 10px;">cTableHeaderFileName</th><th>cTableHeaderLastSubmittedOn </tr> </table> appendChild <td style="padding-left: 10px;"></td><td>utilstreamFromString toXMLStringreplace&nbsp;utf-8loadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙Ášschemesq"™"[ˆT=Tˆ+Έ:˙˙˙˙eNBSP_PLACEHOLDERŸ ˛ sd3ŠrG˛GKĹQ˙˙˙˙ÁĆš+dialogfeedůAÓC;‰†T5ˆ ˙˙˙˙A ¸ äTäTä:QA ¸ äTäTä:Q~ĆvWQ; ¸ ä=Vä:Q; ¸ äV5ä:Q‰ä=Vä:Q‰äV5ä:Qǐ‘Ň•ˆ ڐˆ Őx•Ęˆ ېˆ ڐˆ ِˆ ؀{–ˆ URLshowMyFormsFeedViewshowSubmittedFormsFeedViewconsoleprintln EXCEPTION: stack˙˙˙˙eK˙˙˙˙Áš 4dialog myFormsURNfeed D˜FN‰ =WQ†T ¸ ä:A ¸ äTä:QST ¸ ä:DQT ¸ ä:,T ¸ ä:WQA ¸ äTäVä:Q~ĆvWQ; ¸ ä= Vä:Q; ¸ äV5 ä:Q‰ä= Vä:Q‰äV5 ä:QǐÉ‘Î•ˆ ֐═Ґˆ Őx•Ęˆ ېˆ ڐˆ ِˆ ؀{–ˆ ;urn://ns.adobe.com/Acrobat/Tracker/FormsTracker/MyForms.rssisItemSelection showItemViewisFeedSelectionisGroupSelectiongetFeed showFeedViewconsoleprintln EXCEPTION: stack˙˙˙˙e |˙˙˙˙ÁÍš "dialogurlparamsiaÇFsHf‰ T ¸ ä=ä:>śT ¸ ä=ä:?7 ¸ ä=ä:WQVKxmMWQVV7 ¸ ä=ä:WQV>7x=y zA; ¸ äYC] 9 â äV?7ä:] \ä:QăL˙˙˙ŠNÖ•ë5{ːÜeL‘mʐˆ ÷Pΐˆ indexOfacrobat:internal?split?&=mailtoappmailMsgbUIunescapecToP{˙˙˙˙ÁďšG selectionresultŮLśQ™‰;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVVŮYC] \8QVVŮY= ];5 ]‚]T5]\8QVÎˆː•ĘĎĘ˜€‰ŚÍ˜€‰Źˆː•ĘĎĘ˜€‰ľÍ˜€‰ťˆِˆː•ĘĎĘ˜€‰ĹАˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE bSeparatorRemoveIDS_REVIEW_PANEL_REMOVE_FOLDERgroup˙˙˙˙Áš selectiondocŽMřMĄ‰‰6˙˙˙˙ä:Qˆ ψ˙˙˙˙Áš selectiondoc N†NŚ‰‰7˙˙˙˙äT55ä:ˆ ݈5feedURL˙˙˙˙Áš selectiondoc/O{O°‰‰8˙˙˙˙ä:Qˆ ψ˙˙˙˙Áš selectiondocŁO Pľ‰‰9˙˙˙˙äT55ä:ˆ ݈7feedURL˙˙˙˙Á%š selectiondoc÷PaQÁ‰‰1˙˙˙˙äT55äA5ä:Qˆ äˆ9feedURLgroup˙˙˙˙Áš selectionŐQRˉT55ˆΈ"feed Description˙˙˙˙Á†š selection bIsInitiatedformWorkflowTypeitemtitlešu3 selectionresult sendToMenufoldersiorigFolderNameoZgŠ;äRWQVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY= ];5 ]ZY= ];5 ]‚]\`YC]\`\] \8QVVŮ?75 WQ; ¸ ä:Q; ¸ äT>755ä:WQ; ¸ ä:QVKţmMWQVV7WQ;5=DQ;5=0VVVV7 ¸ ä=ä=ä:8Qf;5=QVVVV7 ¸ ä=ä=ä:8QVVVV7 ¸ ä=ä=ä:8QVVŮYV]VV7]‚]\8QăL˙˙˙NVÎˆː•ĘĎÍ˜€ŠAˆِˆː•ĘĎ”•ĘĎĎ˜€Š`•Ô˜€Šfאˆѐ䐈ѐ5€ːËć+•ˆ됐Đ•ˆ搈搐ˆː•ČĚÖ˜€Š“ˆŒArraylengthRemovecName AnnotsString)IDS_REVIEW_PANEL_REMOVE_MULTIPLE_SELECTED cDisplayName onExecute bSeparator MoveToFolderIDS_REVIEW_PANEL_MOVE_TO_FOLDERNoneIDS_REVIEW_PANEL_FOLDER_NONEoSubMenuapp beginPriv FormWorkflowgetFormWorkflowFoldersfeedURLendPrivplatformWINMACreplace&&&UNIX___˙˙˙˙ÁášS selectiondoc bIsInitiatedbHasEBFitypeitem extensionformTypeV[7^"Š T>755ˆ ˙˙˙˙ CBWQBWQV’>WQumTV75WQV=JTV75WQV5WQVˆ˙˙˙˙7WQV=CWQ$V# ?WQQăVTŮ˙˙˙‚‰3˙˙˙˙äVE QV ä:QŮА• •ˆ $ui€ƒ–ˆ™€Š,ĐÉ•ĐĚŃÉ•ˆ •@€Š+ˆ,̘€Š7˜€Š+ˆӘ€Š=ˆԈ,Ɉ feedURLtypeitem Extension SharedFormlength@ƒ˙˙˙˙Á˝š@ selectiondocformIDsitypeitem extensionformID”_ŠaLŠ ;äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰4˙˙˙˙äT>755äVä=ä:QÎˆ $ma{–ˆ ™€ŠQĐÉ•ĐĚŃˆ И€ŠPˆ-̘€ŠY˜€ŠPˆӘ€Š]ˆéˆBArraytypeitem ExtensionlengthfeedURL{˙˙˙˙Ážš@ selectiondocformIDsitypeitem extensionformID˙díf}Š;äRWQ>WQmmTV75WQV=BTV75WQV5WQVˆ˙˙˙˙7WQVVŮV8QV# ?WQQăVTŮ˙˙˙Š‰4˙˙˙˙äT>755äVäA5ä:QÎˆ $ma{–ˆ™€Š‚ĐÉ•ĐĚŃˆ И€Šˆ,̘€ŠŠ˜€ŠˆӘ€ŠŽˆęˆJArraytypeitem ExtensionlengthfeedURLcName{7˙˙˙˙ÁIš4aŽ selectionresult sendToMenufoldersiorigFolderName[g™Ž–Š;äRWQVVŮY=];5]‚]\8QVVŮYC]\8Q; 5 ¸ ä ä: ŠVVŮY= ]‰˙˙˙˙ä= ä:]‚]‚]\8Q; ¸ ä:QVVŮ?7; ¸ äVVŮ?75ä:6Q; ¸ ä:QVVŮY=]‰˙˙˙˙ä=ä:]‚]‚]\8QVVŮY=]‰˙˙˙˙ä=ä:]‚]‚]\8QVVŮYC]\8QVVŮY=]‰˙˙˙˙ä=ä:]‚]‚]\8QVVŮY=]‰˙˙˙˙ä=ä:]‚ ]‚ ]\8QVVŮY=]‰˙˙˙˙ä=ä:]‚ ]‚ ]\8Q; ¸ ä:QVVŮ?7; ¸ äVVŮ?75ä:6Q; ¸ ä:QVVŮY=]‰˙˙˙˙ä=ä:]‚ ]‚]\8Q; ¸ ä:QVVŮ?7; ¸ äVVŮ?75ä:6Q; ¸ ä:QVVŮYC]\8Q; 5 ¸ ä ä: TVVŮY=];5]‚]\8QVVŮYC]\8QVVŮY= ];5!]‚]\8QVVŮY="];5#]ZY=$];5%]‚]\`YC]\`\]&\8QVVŮ?75&WQ; ¸ ä:Q;' ¸( äT5)5*ä:WQ; ¸ ä:QVKţmMWQVV7WQ; 5+=,DQ; 5+=-0VVVV7 ¸. ä=/ä=0ä:8Qf; 5+=1QVVVV7 ¸. ä=/ä=2ä:8QVVVV7 ¸. ä=2ä=3ä:8QVVŮYV]VV7]‚]\8QăL˙˙˙NVÎˆː•ĘĎÍ˜€ŠŚˆِˆ Ü•ˆː•ĘŮĘ˜€ŠľÍ˜€ŠĐˆѐˆřˆј€ŠÖˆː•ĘŮĘ˜€Šŕ͘€Šéˆː•ĘŮĘ˜€Šó͘€Šüˆِˆː•ĘŮĘ˜€‹ ͘€‹ˆː•ĘŮĘ˜€‹͘€‹#ˆː•ĘŮĘ˜€‹-͘€‹Jˆѐˆřˆѐˆː•ĘŮĘ˜€‹Y͘€‹hˆѐˆřˆѐˆِˆÜ•ˆː•ĘĎÍ˜€‹}ˆِˆː•ĘĎÍ˜€‹‹ˆː•ĘĎ”•ĘĎĎ˜€‹œ•Ô˜€‹˘×ˆѐ␈ѐ5€ːËć+•ˆ됐Đ•ˆ搈搐ˆː•ČĚÖ˜€‹ÄˆŒArraylengthOpenFormcName AnnotsStringIDS_ATTACHLAUNCH_OPEN cDisplayName onExecute bSeparatorapp viewerTypematchEndDataCollection*IDS_FORMS_TRACKER_END_DATA_COLLECTION_MENU onEnabled beginPrivtrustedFunctionendPrivRemoveResponses'IDS_FORMS_TRACKER_REMOVE_RESPONSES_MENU RemoveForm"IDS_FORMS_TRACKER_REMOVE_FORM_MENUEmailInitiator&IDS_FORMS_TRACKER_EMAIL_INITIATOR_MENUEmailReviewers IDS_FORMS_TRACKER_EMAIL_ALL_MENUInviteIDS_FORMS_TRACKER_INVITE_MENUEmailNonRespondents,IDS_FORMS_TRACKER_EMAIL_NON_RESPONDENTS_MENU ConvertToPDF0IDS_REVIEW_PANEL_CREATE_PDF_FROM_TRACKER_DETAILSCreateNewFolder"IDS_REVIEW_PANEL_CREATE_NEW_FOLDER MoveToFolderIDS_REVIEW_PANEL_MOVE_TO_FOLDERNoneIDS_REVIEW_PANEL_FOLDER_NONEoSubMenu FormWorkflowgetFormWorkflowFoldersfeedURLplatformWINMACreplace&&&UNIX___˙˙˙˙Á š selection?hŽhŸŠ; ¸ äT55ä:Qˆ ߈#app launchURLitemLink˙˙˙˙ÁFš selectiondocdocID755 ¸ ä ä:WQV>7ˆ ˙˙˙˙ CBWQBWQV’>WQumTV75WQV=JTV75WQV5WQVˆ˙˙˙˙7WQV=CWQ$V# ?WQQăVTŮ˙˙˙‚‰3˙˙˙˙äVE QV ä:äĎА• •ˆ $ui€ƒ–ˆ™€ŒĐÉ•ĐĚŃÉ•ˆ•@€Œˆ*̘€Œ˜€ŒˆӘ€ŒˆԈ3Ɉ feedURLsplittypeitem Extension SharedFormlength#Zƒ˙˙˙˙Áš selectionV—ˆ—ŒCˆŠ ˙˙˙˙ÁMš selectionurlgroupŞ—š˜ ŒT55WQT5WQV'=#‰1˙˙˙˙äVäVä:QCBŃĚˆ Ę•ˆאˆ—ˆŠ feedURLgroup undefined˙˙˙˙Áš selectioně˜™.ŒCˆŠ ˙˙˙˙ÁMš selectionurlgroupH™Jš3ŒT55WQT5WQV'=#‰2˙˙˙˙äVäVä:QCBŃĚˆĘ•ˆאˆ—ˆŠ feedURLgroup undefined˙˙˙˙Ášnš—šAŒCˆŠ ˙˙˙˙Áš selectionsrcdstźšřšEŒCˆŠ ˙˙˙˙ÁDš C selectionsrcdstitemfeedextfoldersi newFolderj›>žJŒT5WQT5WQV5WQ; ¸ ä:Q; ¸ äV5ä:WQ; ¸ ä:QTŮ >EQTŮ >5; ¸ äV5äVˆ˙˙˙˙7ä= ä:QTKƒmMWQ@WQVK*mMWQTV7VV7VV7WQăL˙˙˙ŘNV@6; ¸ äV5äVˆ˙˙˙˙7äVä:Q ăL˙˙˙NĚĚĚˆѐݐˆѐÚ•ˆ’5€†Ë•5-ːĎ•ˆ Ԑ •ˆ ě@Έitemfeed Extensionapp beginPriv FormWorkflowgetFormWorkflowFoldersURLendPrivlengthsetFormWorkflowFolderź†Ń-˙˙˙˙ÁÝš1 resultŞŸLŞqŒY‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:]‰˙˙˙˙ä=ä:]‚]‚]Y=] ZY= ] = ] =]ZY=] =]\`\]\`\]\]\WQV•ŮŮŮĘ˜€Œʘ€Œ˛•Ę”•ĘĘĘ”•Ęë˜€ŒĆˆŒIDS_FORMS_TRACKER_MY_FORMScIveSent#IDS_FORMS_TRACKER_PARTICIPANT_FORMS cIveReceived IDS_FULL_NAMEcFormsSuperGrouponSelectionChanged showEmptyViewPanelnameviewtype align_centeralignfillalign_children html_viewhtmlitem_idelements description˙˙˙˙ÁšdialogÓ ĄzŒA ¸ äTä:Qˆ ш showEmptyView˙˙˙˙Á]š0U dialogLINKisReadercVisibleMyForms viewXHTMLstmCĄD¨Œ†‚WQ; ¸ äYB]\ä:Q;5=WQV= =WQż=ż= ż= ŔA5 ł= = ż=ż=ż=ŔA5 ł===ż=ż===¨ŔV˛§Š==ż===¨Ŕˆ ˙˙˙˙˛§Š=ż=ŔA5ł====ż= ż===¨Ŕˆ ˙˙˙˙˛§Š=ż=ŔA5!ł===="=#=$=%°WQ;& ¸' äV ¸( ä:ä=)ä:WQT ¸* äYV]+\ä:Q~ĆvWQ;, ¸- ä=.Vä:Q;, ¸- äV5/ä:Q‰ä=.Vä:Q‰äV5/ä:Qǐ‘Éˆ ސÔ ؐ™€Œ‘•–—Ȑ͐–㐐––˙ő˙А———ːéˆ Ţx•Ęˆ ېˆ ڐˆ ِˆ ؀{–ˆ XML setSettingsignoreCommentsapp viewerTypeReader display:none<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="AdobeTracker/main.css" rel="stylesheet" type="text/css"/> </head> <body> (<div class="bread_crumb"> cFormsSuperGroup &gt; </div> -<div class="super_group_page"> !<span class="forms-super-iconic"> <span style="font-weight:bold;"></span>7 <br/> <br/> -<p style="line-height:25px;"> <spanstyle>&#8226; ahref<span class="blueLink">cIveSent</a> <br/></span> <span>&#8226; cIveReceived </p> </div> </body> </html>utilstreamFromString toXMLStringutf-8loadhtmlconsoleprintln EXCEPTION: stack˙˙˙˙ÁšschemesĄˇĄƒŒT=Tˆ+Έ:˙˙˙˙eâ˙˙˙˙Á“š 0 selectionresultˆŞî­Ɍ;äRWQVVŮY=];5]‚]‚]\8QVVŮY= ];5 ]‚]‚]\8QVÎˆː•ĘĎĘ˜€ŒÖ͘€ŒÜˆː•ĘĎĘ˜€Œĺ͘€ŒëˆŒArraylengthExpandcName AnnotsStringIDS_PANEL_EXPAND cDisplayName onExecute onEnabledCollapseIDS_PANEL_COLLAPSE˙˙˙˙Áš selectiondoc]Ť§Ťь‰6˙˙˙˙ä:Qˆ ψ˙˙˙˙Áš selectiondocĎŤ5Ź֌‰7˙˙˙˙äT55ä:ˆ ݈5feedURL˙˙˙˙Áš selectiondocŢŹ*­ŕŒ‰8˙˙˙˙ä:Qˆ ψ˙˙˙˙Áš selectiondocR­ş­ĺŒ‰9˙˙˙˙äT55ä:ˆ ݈7feedURL˙˙˙˙Áš selectionŽ.ŽîŒBˆ+Š ˙˙˙˙Áš selectionNŽkŽďŒBˆ+Š ˙˙˙˙eH˙˙˙˙InitializeMultimediaJSĚ š¨3TҟľłÓ†;5×6Q;5B6Q;5Y?]×]×]×]×] ×] \6Q;5Y?] ×] ×]\6 Q;5Y?]×]×]×]×]×]×]\6Q;5Y?]×]×]×]×]×]×]×]× ] \6Q;5Y?]"×]#×]$\6!Q;5Y?]&×]'×](×])\6%Q;5Y?]+×],×]-\6*Q;5C6.Q;5Y>]0?]×]1\6/Q;5Y?]3×]4×]5×]6×]7×]8\62Q;5Y?]:×];×]<×]=×]>×]?×]@×]A× ]B× ]C× ]D\69Q;5Y>]F?]G×]H×]I×]J×]K×]L×]M×]N\6EQ;5Y× ]P\6OQ;5Y×]R×]S\6QQ;5YC]UC]VC]WC]X\6TQ;5‚6YQ;5‚6ZQ;5‚6[Q;5‚6\Q;55\Y‚]^‚]_‚]`‚]a‚]b‚ ]c‚ ]d‚ ]e‚ ]f‚ ]g\6]Q;55h‚6iQ;55h‚6jQ;5‚6kQ;55kY‚]l‚]m\6]Q;‚6nQ;5nY‚]3‚]o‚]p‚]q‚]‚]r‚](‚]‚]‚]s‚]t‚]‚ ]‚!]u‚"]‚#]\6]Q;5‚$6vQ;55vY‚%]3‚&]o‚']p\6]Q;5‚(6wQ;55wY‚)]x‚*]y\6]Q;5‚+6zQ;5‚,6{Q;5‚-6|Q;5‚.6}Q;5‚/6~Q;5‚06Q;55h‚16€Q;5‚26Q;5‚36‚Q;5‚46ƒQ;5‚56„Q;5‚66…Q;5‚76†Q;5‚86‡Q;55h‚96YQ;55h‚:6ˆQ;5‚;6‰Q;5‚<6ŠQ;55ŠY‚=]‹\6]Q;55hY‚>]\6ŒQ;55h‚?6ŽQ;55h‚@6Q;55h‚A6Q;55h‚B6‘Q;55h‚C6Q;55h‚D6’Q;55h‚E6“Q;55h‚F6”Q;55h‚G6•Q;55hZ <`>`<`?`>`<`?`>`<`?` \6–Q;55hZ <`>`>`>`<`<`<`?`?`?` \6—Q;55h‚H6˜Q;55h‚I6™Q;55h‚J6šQ;55h‚K6›Q;55h‚L6œQ;55h‚M6Q;55h‚N6žQ;55h‚O6ŸQ;55h‚P6 Q;55h‚Q6ĄQ;55h‚R6˘Q;55h=¤6ŁQ2ĆSvWQ;Ľ ¸Ś äV5§ä:Qǐ‘˜€!ˆҘ€'ˆј€8ˆʐ•–————Θ€Fˆʐ•–—Θ€Qˆʐ•–—————Θ€`ˆʐ•–———————Θ€qˆʐ•–—Θ€|ˆʐ•–——Θ€ˆˆʐ•–—Θ€“ˆј€˜ˆʐ•––Θ€Łˆʐ•–————Θ€ąˆʐ•–—————————Θ€Äˆʐ•––——————Θ€Őˆʐ•Î˜€Ýˆʐ•—Θ€ćˆʐ•–––͘€Ž ˆ՘€Žˆ՘€ŽDˆ՘€Žy՘€Ž‚ˆϐ€ŽŽĘ˜€ŽšĘ˜€ŽŁĘ˜€ŽĘʘ€Žäʘ€Ž˙ʘ€ʘ€Hʘ€eʘ€rј€ˆژ€§ˆژ€Ěˆ՘€Ňˆϐ€ŕʘ€ј€)ˆИ€/ˆʐ€5ʘ€?ʘ€Kʘ€fʘ€†Ę˜€”Ę˜€°Ę˜€Îʘ€Řʘ€ĺʘ€ôʘ€‘ʘ€‘ ʘ€‘ʘ€‘!ʘ€‘,ј€‘:ˆ՘€‘@ˆϐ€‘Fʘ€‘Pʘ€‘aј€‘…ˆ՘€‘Šˆϐ€‘Ę˜€‘ľŃ˜€‘͈՘€‘ćˆ՘€’ˆ՘€’'ˆ՘€’:ˆ՘€’fˆ՘€’zˆژ€’ˆˆ՘€’Šˆ՘€’Úˆ՘€“iˆ՘€“—ˆ՘€“Ďˆ՘€“éˆ՘€”ˆژ€”hˆژ€”ˆˆ՘€”ąˆ՘€”śˆϐ•Ń˜€•ˆϐ•Ń˜€•ˆژ€•!ˆژ€•'ˆژ€•-ˆژ€•Dˆژ€•Mˆژ€•^ˆژ€•oˆژ€•‚ˆژ€•—ˆ˙ݐˆ˙ݘ€•žˆژ€•Źˆژ€•şˆژ€•Ćˆژ€•Őˆژ€•ńˆژ€•ůˆژ€–ˆژ€– ˆژ€–ˆژ€–#ˆژ€–+ˆÚx€–4ʐˆڀ{–ˆappmediaversiontracelayoutmeetslicefillscrollhiddenstandard windowTypedockedfloating fullScreen monitorTypedocument nonDocumentprimary bestColorlargesttallestwidestaligntopLeft topCentertopRight centerLeftcenter centerRight bottomLeft bottomCenter bottomRight canResizeno keepRatioyesover pageWindow appWindowdesktopmonitor ifOffScreenallow forceOnScreencanceldefaultVisible renditionTypeunknownselectorstatusclearmessage contacting bufferinginitseeking closeReasongeneralerrordonestopplay uiGeneraluiScreenuiEditdocClosedocSave docChangeopenCodesuccess failGeneralfailSecurityWindowfailPlayerMixedfailPlayerSecurityPromptfailPlayerNotFoundfailPlayerMimeTypefailPlayerSecurityfailPlayerData raiseSystem fileError raiseCode fileNotFoundfileOpenFailedpageEventNamesOpenCloseInViewOutView createPlayer openPlayer startPlayerEvents prototypeaddremove privAddRemoveprivAdd privRemoveprivSetDispatch privDispatch privCleanupprivDispatchNowprivCallMethodspriv postEventdispatchPostedEventsMarkersgetprivFindMonitorspushselectfilterbestFit leastOverlap mostOverlap secondaryPlayers MediaPlayeropen privOnClosecanPlayOrAlertgetRenditionSettingsgetFirstRenditiongetURLSettingsgetAltTextSettingsaddStockEventsAddStockEventsHelperremoveStockEventscomputeFloatWinRectgetPlayerStockEventsgetPlayerTraceEventsgetAnnotStockEventsgetAnnotTraceEventsargsDWIMcomputeDefaultWindowTypealertAlerterdispatch docMediaProtogetOpenPlayers dumpObject dumpNames dumpValues dumpArraystopAnnotPlayerpauseAnnotPlayerresumeAnnotPlayer copyProps xPosTable yPosTable rectAlign rectAnchorPtrectArearectGrow rectIntersectrectIntersectArea rectIsEmptyrectCopy rectUnion getStringvalueOraltTextPlayerIDvnd.adobe.swname:ADBE_AltTextconsoleprintln extMessage˙˙˙˙Á„šargs€ĐiŃ Ž†;55 ¸ ä;5 ¸ äTä:ä:MĆvWQ;5 ¸ ä=äTäYV]\ä:Q@˜Ç™Ç‘ˆőx•Ęˆz„{–ˆappmediapriv createPlayerargsDWIMalert Exceptionerror˙˙˙˙e:˙˙˙˙Á'š>argsplayerresultßŇœŐŽ @WQ†;5 ¸ äTä:UQ;5 ¸ äTä:WQV“V ¸ ä:WQV5;555C@WQ;5 ¸ ä= äTäYV5]\ä:Q!V5 V ¸ ä:QLĆvWQ@WQ;5 ¸ ä= äTäYV] \ä:QÇV•‘ˆݐˆݐ •ŇÝ>•ˆ•ˆůČ•ˆĎx•Ęˆ•ˆď€{–ˆŒappmediaargsDWIM createPlayeropencodeopenCodesuccessalertOpenvisiblesetFocus Exceptionerror˙˙˙˙eŐ˙˙˙˙ÁÖš .argsplayer“×YŮDŽ†;5 ¸ äTä:UQT5EQT55WQVEQV5V ¸ ä:Q";5 ¸ äTä:WQVMĆvWQ;5 ¸ ä= äTäYV] \ä:Q@˜Ç™Ç‘ˆݐßŃ•ˆԐˆݐˆ|•Ęˆz„{–ˆappmediaargsDWIMannotplayerisOpenplay openPlayeralert Exceptionerror˙˙˙˙eŒ˙˙˙˙Á@š€ arguments—áŘâyŽ WQAY\6QA>6QAY\6QA ¸ äVäA5ä:Q•ˆ͐ˆȐˆ͐ˆ؈. listeners dispatchingremoved privAddRemoveprivAdd˙˙˙˙Áš€ argumentsĺ[厎 WQA ¸ äVäA5ä:Q•ˆ؈. privAddRemoveprivAdd˙˙˙˙Áš€ arguments“ćŰ暎 WQA ¸ äVäA5ä:Q•ˆ؈1 privAddRemove privRemove˙˙˙˙Á3šzargs doAddRemoveieventsnamearrayjŸçŸëŁŽ >WQ mTV7WQV5V5KbmMWQV5V7WQ>WQ/mT ¸ äAäVV7äVälQV# ?WQQăVVŮ˙˙˙ČăL˙˙˙ NnVK[mMWQV ¸ ä ä:>DQV ¸ ä ä:>T ¸ äAäVäVälQăL˙˙˙§NV# ?WQQăVTŮ˙˙ţęA ¸ ä:Qˆ $€ €€–ˆ™€ŽŚËČz•Ę0eːĐˆ $/#=–ˆ ™€ŽŻˆ ݘ€ŽŽˆ,̘€Ž°˜€ŽŽˆᘀŽľ5^ːň•ˆ ☀ŽĽˆ(̘€Žź˜€ŽĽˆӘ€ŽÂˆ͈ listenerscalllengthsearchprivSetDispatch^on[A-Z] ^after[A-Z] §^2eR=˙˙˙˙Á šMlistenernamearrayi`ě"ďʎT'=DQTT7Ĺ=A5T7WQV !A5TZT`\8QL>WQ$mVV7THV# ?WQQăVVŮ˙˙˙ÓVVT8Qˆ Ј"Εˆ’Îˆ •ˆܐˆ $$2–ˆ™€Ž×Ë•ˆš€ŽÖˆ*̘€ŽŮ˜€ŽÖˆӘ€ŽÜˆˈobjectfunction listenerslengthb2˙˙˙˙ÁľšT listenernamearrayiˇďâňäŽA5T7WQV >WQƒmVV7THfA5%VV@8QA5TAC68Q9VŮ?V ¸ äVä?ä:QA5T&QV# ?WQQăVVŮ˙˙˙tÎˆ •ˆ’ˆ $€ƒw€‘–ˆ™€ŽëË• •ˆŕĘ•ˆڐˆːˆš€Žęˆ)̘€Žö˜€ŽęˆӘ€Žöˆ listeners dispatchingremoved needCleanuplengthsplice#‘˙˙˙˙Á5šname˝óÔô˙ŽA5KmMWQAA56Q˜N™ăL˙˙˙ćNA%QČ0ːˆ͐ˆzːˆ listenersdispatch privDispatch ˙˙˙˙Á“ša'event řţT5 TY\6QT5T5 ¸ ä ä=ä:6QT5;T5T556QT5T556QA 5#?6Q†A ¸ ä= äTä:QT% QT5 TA5 5D QA5 =T557$;55 ¸ äTä:QBĆvWQ;55 ¸ ä=V5ä:QÇA 5#?6QA5E QA5 A ¸ ä:Qˆ É•ˆϐˆ퐐Č•ˆېˆېˆА‘ˆאˆɘ€1ˆ ɕ땈ßx•Ęˆę€{–ˆИ€>̈•ˆ͈mediaidnamereplacetargetdocevents dispatchingprivDispatchNowon stopDispatchstopAllDispatch listenersafterEveryEventafterapppriv postEventtrace di throw: message needCleanup privCleanup˙˙˙˙e ž‚˙˙˙˙ÁşšQ namearrayiL˙uH A5K‡mMWQA5V7WQ>WQA5V&QăL˙˙˙{NAY\6QA ¸ ä:QA%QČ0€ŠËÎˆ $<0J–ˆ™€Nˆ Č•ˆݘ€Mˆ*̘€P˜€MˆӘ€SĘ•ˆԐˆ͐ˆ͐ˆremoved listenerssplicelengthprivSetDispatch needCleanup Š+J˙˙˙˙Á?š prefixeventÜąeA ¸ äTäT=ä:QA ¸ äTäTT55ä:Qˆېˆăˆ7privCallMethods EveryEventmediaid˙˙˙˙Á†š=eventnamearrayilistener+űrA5T7WQVt>WQWmT5DQT5 IVV7WQVV TÁ äTä:QV# ?WQQăVVŮ˙˙˙ ÂÎ •ˆ $WKe–ˆ™€yÖ•@•Ë •ˆҘ€xˆ*̘€˜€xˆӘ€ˆ listeners stopDispatchstopAllDispatchlength e˙˙˙˙ÁËš 1eventdocpqyL  T55WQV55WQV5WQV VY\6WQV5 VZ\6QV5 ¸ äTä:QV5 DV; ¸ ä= ä?äBä:6QV5YV]\6QŃŃĚˆ •ˆҐˆ É•ˆΐˆؐˆ É•ˆ㐈܈mediadocprivqueuelistpushtimerapp setTimeOut*app.media.priv.dispatchPostedEvents(this);˙˙˙˙Ášcdocqlistieë § †T5T555WQV5WQV%QV%QVEQVŮ~>WQamT5VV7WQV55(V55 ¸ ä= äVä:QV# ?WQQăVVŮ˙˙˙–BĆvWQ; 55 ¸ ä= V5 ä:Qǐ‘Č•ˆ’ÖĚˆɐˆɐŃ%$aUož€ťˆ™€ˇ˜€ťČ•ˆ’ËÍ•ˆ㘀śˆC̘€Ŕ˜€śˆ1Óx€Ăʐˆę€{–ˆclosedmediaprivqueuelisttimerlengtheventsprivDispatchNowafterapptrace dpe throw: message˙˙˙˙e×do˙˙˙˙Á šplayer_“̏AT6Qˆʈplayer˙˙˙˙Á@š Zm retMarkerСŕA5 A5 ¸ ä:Q@WQA5Ů>řT'x=y=yzÚA5T7WQÇT5;IA5T57—T5 ;IA5T5 7pT5 ;I%A ¸ ä= äT5 ä:=T5 ;I%A ¸ ä= äT5 ä: ;WQV;H @WQVˆ •ˆҐ•Í•ˆd€ď‘m €ďmʘ€ëˆΐP•ˆÎِÎِÎ ĺÎ ĺÉP€úÉ•ˆ•ˆŒ privByIndexplayerprivLoadMarkerslengthstringobject privByNamename undefinedindextimeprivFindframe˙˙˙˙Á¸šSpropvaluearraylengthnearIdxnearDistivdist": T>A5WQVŮWQVQ;WQ>WQ_mVV7T7WQV;I5TVWQV>E QVVVWQVWQV# ?WQQăVV˙˙˙V;I VV7 •ˆ’ĘĚ”ɐˆ $_Sh–ˆ™€ĎÉ•ËŇ•ˆ—ˆŸ€ˆ#̘€˜€ˆΘ€É•ˆȈ privByIndexlengthInfinity undefined9h˙˙˙˙Á šŔç)A>6QˆȈlength˙˙˙˙Á(šD˜5mAA Ů#?6&QăAŮ>˙˙˙㐐("•ˆӘ€7ˆ ϐˆ#length"˙˙˙˙ÁšvalueL?AA Ů# ?… 6QT8Qˆڈlength˙˙˙˙Á^š J6 monitorTypedocŃOKTx;555y ;555yŁ;555yŚ;555yš;555y™;555y˜;555 y—zA ¸ äTä: ¸ ä:A ¸ äTä: ¸ ä:A ¸ ä:A ¸ ä: ¸ ä:A ¸ ä: ¸ ä:A ¸ ä: ¸ ä:A ¸ ä: ¸ ä:c€Z‘Ôh•Ôh•Ôh•Ôh•Ôh•Ôh•Ôhʘ€Oˆ+ܐˆ.ܐˆ+͐ˆ,ؐˆ+ؐˆ+ؐˆ*ؐˆappmedia monitorTypedocument nonDocumentprimary bestColorlargesttallestwidest˙˙˙˙ÁşšP rankerminRankrrankimmRankZ! $f ;5äRWQT; T ;"WQ>WQlmAV7WQŐäVä:WQVV:VVV ¸ ä:QV ¸ äVä:QVWQV# ?WQQăVAŮ˙˙˙VÓÉ͈3ʐˆ $l`x–ˆ™€lÉĐ˜€s••ˆϐˆӐˆŸ€kˆ(̘€y˜€kˆј€}ˆŒ appMonitors undefinedInfinityclearpushlength=x˙˙˙˙Áš minColor8%Ž%†A ¸ ä‚äTä:ˆɐ–Čˆfilter˙˙˙˙Á šmu%“%‰T5ˆɈ colorDepth˙˙˙˙Ábš@widthheightbRequiretinyareaa'X)”ŘÄe6Š˙˙˙˙Qˆ˙˙˙˙ˆ˙˙˙˙Š˙˙˙˙QA ¸ ä‚äTˆ˙˙˙˙?ˆ˙˙˙˙ä:ĎÝˆɐž€¤ăˆ'filter˙˙˙˙Ázš mmWidthmHeightň'')šT5×7T5>7WQT5×7T5?7WQˆ˙˙˙˙VDQˆ˙˙˙˙Vˆ˙˙˙˙ˆ˙˙˙˙VVÚÚˆŕӐ҈&rect˙˙˙˙ÁXšS!rimresult +'-° AŮ  Z\YZ>`>`>`>`\]Z>`>`>`>`\];5]\WQ>WQ°mAV7WQV;55 ¸ äV5äV5ä:6QV;55 ¸ äV5äV5ä:6QV; ¸ äV5äV5ä:6QV# ?WQQăVAŮ˙˙˙I;5 äRWQV ¸ äVä:QVˆ •ˆ–˙֐ˆ $€°€¤€ź–ˆ™€¸Éˆőˆőˆ똀ˇˆ(̘€˝˜€ˇˆј€ŔӐˆӐˆŒlengthrectworkRectNumber MAX_VALUE colorDepthappmediapriv rectUnionMathminMonitorspushqź˙˙˙˙Á+š docbRequireĘ. ;ä:ˆŐՈM leastOverlapouterDocWindowRect undefined˙˙˙˙Áš ‹7ď7 ‘A ¸ ä‚ä?ä:ˆɐ–Ž filter˙˙˙˙Á šmž7Ű7‘T5ˆɈ isPrimary˙˙˙˙Áš ~8ä8‘A ¸ ä‚ä?ä:ˆɐ–Ž filter˙˙˙˙Á šmą8Đ8‘T5 ˆˆʈ isPrimary˙˙˙˙Áš  minHeight}9ţ9!‘A ¸ ä‚äTä:ˆɐ–Čˆfilter˙˙˙˙Ášmť9â9$‘T5×7T5?7ˆ׈rect˙˙˙˙Áš minWidth“:;,‘A ¸ ä‚äTä:ˆɐ–Čˆfilter˙˙˙˙ÁšmĐ:÷:/‘T5×7T5>7ˆ׈rect˙˙˙˙Á š;Ä;:‘A>6QˆȈlength˙˙˙˙Á(š%<y<F‘mAA Ů#?6&QăAŮ>˙˙˙㐐("•ˆӘ€‘Hˆ ϐˆ#length"˙˙˙˙Ášvalueď<+=P‘AA Ů# ?… 6QT8Qˆڈlength˙˙˙˙Áěš^argsriinfookprop5@BCa‘ ;55äRWQ>WQšmAV7WQCWQTKpmMWQVVq  Z\˜N™TV75&TV7 ¸ äVV7ä:@TV7VV7BWQ ăL˙˙˙’NVV ¸ äVä:QV# ?WQQăVAŮ˙˙˙@VŘˆ $€š€­€Ĺ–ˆ™€‘fÉ•5sːˆ Č•ˆ~’Ě!ő•ˆ•@Θ€‘w •ˆӘ€‘eˆ(̘€‘x˜€‘eˆј€‘{ˆŒ appmediaPlayersexecpushlength"Ĺ;s˙˙˙˙ÁšÚCęC…‘ˆ˙˙˙˙ÁGšK(€retpriv argumentsQDKG‘  WQVQA555WQV5 VZ\6QV5 ¸ äAä:Q†A5V;55 ¸ äA5ä;5 ¸ äA5 5 ä:ä:QA5A6 QA5 ¸ äAäVäOWQV5;555;5 ¸ äAä:QAĆvWQ;5 ¸ äAä:QA ¸ ä:QVpÇV•”Ôˆ É•ˆΐˆ֐‘•ˆא퐈͐ˆېÝ•ˆŘx•Ęˆؐˆ͐ˆ„{–ˆŒ docmediaprivplayerspushannotappAddStockEventsHelpergetAnnotStockEventssettings windowTypeplayerprivOpenapplycodeopenCodesuccessremoveStockEvents privOnClose˙˙˙˙eKś˙˙˙˙Á‚š8 playersG¤Hľ‘A5555WQn>oQGmV;7AV ¸ ä;ä?ä:Qn;# ?… oQQă;VŮ˙˙˙ŽÂŮˆ Ë G/W–ˆ™€‘şË•ˆאˆš€‘šˆ'ؘ€‘ž˜€‘šˆ՘€‘žˆdocmediaprivplayersisplicelength*W˙˙˙˙ÁWš argscanPlayäIĹJ͑T555WQV5C;5 ¸ ä=äTäYV]\ä:QBÖČ•ˆ’ˆˆŠ docmediacanPlayyesappalert CannotPlay˙˙˙˙ÁŤšU.argssettings selectionŸMRć‘ VQT5 ¸ äCä:WQV58†V5 ¸ äCä:WQVV56Q;55 ¸ äT5äVä:QV×ĆvWQV5 =  VpV5 ;55 5  VpV5 ;55 5E#QV5 ;55 5 Vp;5 ¸ ä=äTäYV55]\ä:QÇ4;5 ¸ ä=äTäYV]\ä:Q;5 ¸ äTäVä:”ŮČ€3•‘ˆِˆѐˆ萐ˆ|•ĘÎ•ˆ”Ý•ˆ”ăÝ•ˆ”ˆů€{˘€’ˆ’ ˆވ7 renditionselectgetPlaySettingsplayersappmediapriv copyPropssettingsname RaiseError raiseSystem fileError raiseCode fileNotFoundfileOpenFailedalert FileNotFoundfileName SelectFailed selectiongetAltTextSettings˙˙˙˙e+[˙˙˙˙Áeš2 listiSîS’>WQJmTV755;555TV75V# ?WQQăVTŮ˙˙˙­@ˆ $J>X–ˆ™€’ć•ˆ͘€’ˆ(̘€’˜€’ˆӘ€’ˆŠ renditiontypeappmedia renditionTypelength X˙˙˙˙Ácš  argssettings„U¤V'’ Y;5 ¸ äT5äT5ä:]\WQ;55 ¸ äT5äVä:QV•ńˆ萐ˆŒappmedia getURLDataURLmimeTypedatapriv copyPropssettings˙˙˙˙Á—šT3args selection renditiontextXw\:’T5 @T5D$Q;5 ¸ äT5ä:WQV @nV ¸ äBä:oQ;55 ¸ äT5ä;ä:Q;5 4;;55 ¸ äTä;ä:6 Q;5 ;55 5 @V5 WQVŮ>9T5 @;55 ¸ ä=ä:WQ;;5 ¸ äVä:6Q;Z;555`\6Q;ˆ É•ˆ’đˆ •ˆ’ˆېˆꐐˆ Ë•ˆďß•ˆ’ĚĘ•ˆ É•ˆ’ˆ䐐ˆ䐐ˆ萐ˆŽ showAltText renditionappmediagetFirstRenditionrejectssettingsgetPlaySettingspriv copyProps windowTypecomputeDefaultWindowTypedockedaltTextlengthshowEmptyAltText getStringIDS_ERROR_NO_ALT_TEXT_SPECIFIEDdatagetAltTextDataplayersaltTextPlayerID˙˙˙˙Ábš playerannot­^`f’ T5;55 ¸ äTä;5 ¸ äT5ä:ä:QTTT6QČ•ˆ’ˆې㐐 •ˆ̈ stockEventsappmediaprivAddStockEventsHelpergetPlayerStockEventssettingsannot˙˙˙˙ÁPšobjectevents\abz’TT6QT5 "T;55äR6QT5 ¸ äTä:Qˆ̐ˆ É•ˆݐˆ؈ stockEventseventsappmediaEventsadd˙˙˙˙Áyš6player removePropsóbÚdˆ’‚WQT DQT5 ÔäTä:QT5@T55ÔäT5ä:QT5%QT%Q˜€’É˜€’‰ˆ ʈÉ•ˆ’˜€’–ˆ͐Č•Í•ˆҐˆΐˆɈ stockEventsannotplayer˙˙˙˙ removeProps4šobject_cýc’T5+T5 ¸ äT5ä:QT%QČ•ˆݐˆɈeventsremove stockEvents˙˙˙˙ÁŁšk6docfloating whichMonitoruiSizeoverRectborder>f,kŠ’ VQT5x;555yU;555yM;555yE;555yQzT5WQhT5WQW;5 ¸ ä:>75 WQ2;5 ¸ äTäTä:>75 WQ;5 ¸ äTä:WQn ;55 ¸ äVäT5äT5V>7V×7äT5V?7V×7ä:o QT4n ;55 ¸ ä; äTä:o Q; ”Č`€Ţ‘Ôh€’´Ôh€’šÔh€’˝Ôhʘ€’Żˆ̐P•ˆ̐P•ˆŕP•ˆčP€’Ăݘ€’Ljܐ͐֐ߐ •ˆˆŽ overappmedia pageWindow appWindowdesktopmonitorpageWindowRectinnerAppWindowRectmonitorsrectselectworkRectgetWindowBorderSizepriv rectAlignalignwidthheightrectGrow˙˙˙˙ÁĘš0settingsevents mŘ}ڒ;55äRWQ;55*V ¸ ä;5 ¸ ä:ä:QV ¸ äY‚]‚]‚]‚] \ä:QT5 x;55 5 y#;55 5 yCzűV ¸ äY‚] ‚]‚]\ä:QÂT5 5 E(QT5 5 DQT5 5  ;55 ¸ ä:QT5;HT;556QT5/TB6QV ¸ äY‚]\ä:QVŘĎ•ˆ吐ˆː•Ę˜€’úʘ€’˙ʘ€“И€“ Č`€.‘Ôh€“.Ôhʘ€“ˆː•Ę˜€“ʘ€“%И€“,P•ˆ ԈԈΕˆېÎ•ˆؐČ•ˆʐˆː•Đ˜€“`P•ˆŒappmediaEventstraceaddgetPlayerTraceEventsonClose afterDone afterError afterEscape windowTypedockedfloating onGetRectonBluronFocusrectwidthheightpriv throwBadArgsvisible undefineddefaultVisible afterReady˙˙˙˙Áľš$eannotćm°pă’T55WQ;5 ¸ äT5ä:QVV@6QT55EOQT555;555 E"QT55 55 5 V ¸ äCä:QŃˆߐ •ˆʘ€’ďӐíÜ•ˆ шtargetannotappmediaremoveStockEvents extFocusRecthadFocussettings windowTypedockeddoccanPlayyessetFocus˙˙˙˙Á*šeÎp=qú’T5 ¸ ä;555ä:Qˆéˆ-targetcloseappmedia closeReasondone˙˙˙˙Ámš e\q"r˙’ ;5 ¸ ä=äT55äYT55]\ä:QT5 ¸ ä;55 5 ä:Qˆ˙”ˆéˆ.appmediaalert PlayerErrortargetargstext errorTextclose closeReasonerror˙˙˙˙Á*šeBrľr“T5 ¸ ä;555ä:Qˆéˆ1targetcloseappmedia closeReasonuiScreen˙˙˙˙Ánš e˜suu“ T55`T55T5;55 ¸ äT555äT55 ä:66QÍ•˜€“ˆ Րאďˆ>targetannot extFocusRectmediarectappprivrectGrowinnerDeviceRectuiSize˙˙˙˙Á'š e’u˙u“T55T55B6QÍ•ˆ Ԉ'targetannotalwaysShowFocus˙˙˙˙Á'š ev‰v%“T55T55C6QÍ•ˆ Ԉ&targetannotalwaysShowFocus˙˙˙˙ÁHš;*efloatingrect+y„}?“ T555WQV5WQV V;5 ¸ äT55äVäT555äT55 ä:WQ5;55 ¸ äVäT55 ä:WQV5 ;55 5 J;5 ¸ äVä;55 ¸ äVäV5ä:ä:WQT5V6QT5C6QT5 ¸ ä:QÖĚˆQ•ˆ äíˆ 𘀓OÝ•ˆ ֐“Wˆ ѐˆ ϐˆ ԈtargetsettingsfloatingrectappmediacomputeFloatWinRectdoc monitorTypeuiSizeprivrectGrow ifOffScreen forceOnScreenconstrainRectToScreen rectAnchorPtalign outerRectvisiblesetFocus˙˙˙˙ÁYš (\~Lƒi“;55äY‚]‚]‚]‚]‚]‚]\äRˆѐ•Ę˜€“sʘ€“xʘ€“}ʘ€“‚Ę˜€“‰Đ˜€“ˆappmediaEvents onEveryEventafterEveryEventonScript afterScriptonStatus afterStatus˙˙˙˙ÁHš eŽ~dm“T55=4;55 ¸ ä=T55ä:QÓ•ˆďˆ8mediaidGetRectappprivtraceplayer event: on˙˙˙˙Á0šeˆăs“;55 ¸ ä=T55ä:Qˆďˆ;appmediaprivtraceplayer event: afterid˙˙˙˙ÁJš e€}€x“;55 ¸ ä=T55=T55=ä:Qˆ˙ʈ]appmediaprivtraceplayer onScript('command','param')˙˙˙˙ÁJš e€}“;55 ¸ ä=T55=T55=ä:Qˆ˙ʈ`appmediaprivtraceplayer afterScript('command','param')˙˙˙˙Á–še:)‚‚“;55 ¸ ä=T55>1T55=T55= = = T55 = T55 =ä:QˆܐĎ,÷óˆHappmediaprivtraceplayer onStatus: progress/total,  status code: code: 'text'˙˙˙˙Á–šeI‚;ƒ‰“;55 ¸ ä=T55>1T55=T55= = = T55 = T55 =ä:QˆܐĎ,÷óˆHappmediaprivtraceplayer afterStatus: progress/total,  status code: code: 'text'˙˙˙˙Á˝š / windowTypeevents_„[Š—“;55äRWQ;55*V ¸ ä;5 ¸ ä:ä:QV ¸ äY‚]\ä:QT;555/V ¸ äY‚] ‚] \ä:QVŘĎ•ˆ吐ˆː•Đ˜€“ŤŘ•ˆː•Ę˜€“żĐ˜€“ɈŒappmediaEventstraceaddgetAnnotTraceEvents onDestroy windowTypedockedonFocusonBlur˙˙˙˙ÁAš e(…† “T553T55 ¸ ä;555ä:QÍ•ˆîˆ9targetplayercloseappmedia closeReason docChange˙˙˙˙Á;še„†ëˆŻ“T555T55 ¸ ä:QTC6QŇ•ˆ ٘€“źˆʈtargetplayerisOpensetFocus stopDispatch˙˙˙˙Á š e‰*Šż“TC6Q˜€“Ĉʈ stopDispatch˙˙˙˙Á1šފŒϓ;55äY‚]‚]\äRˆѐ•Ę˜€“ŘИ€“܈appmediaEvents onEveryEventafterEveryEvent˙˙˙˙Á0še0‹‡‹ӓ;55 ¸ ä=T55ä:Qˆďˆ7appmediaprivtraceannot event: onid˙˙˙˙Á0šeŤ‹Œؓ;55 ¸ ä=T55ä:Qˆďˆ:appmediaprivtraceannot event: afterid˙˙˙˙Áöšv3argsގ֓é“TEQT5 T;55 ¸ äTä:UQTC6Q;EQ;5QT5 T;556QT5 T;556QT5 ŚT5EQT5@T55 T55  ;55 ¸ ä:QT5 TT55 6 Q(T5TT55 6 QT5 ; HFT;E1Q;5 E!Q;55;5 7 6 QT5; HTC6QT5; HTT5 6QTŃ•ˆ”ˆ␈ʐŐ•ˆ É•ˆؐˆ É•ˆؘ€“üˆ É•Ö•Ű•ˆ ېČ•ˆېČ•ˆ֘€” Εˆ‹ˆۈ㐐ΕˆʐÎ•ˆ‹ϐˆŒ privDWIMappmediapriv copyPropseventactionannot renditiondoc throwBadArgsfromUser undefinednamepageEventNames showAltTextshowEmptyAltText˙˙˙˙ÁSš#¸margsplayerD”ѝ” ;55 ¸ ä=ä:QT5  ;55 ¸ ä:Q;5 ¸ äTä: @T5EQT55 3T55 ¸ ä;55 5 ä:QT55 ¸ äYT]\ä:WQVT5#;5 ¸ äTä:JT5#;5 ¸ äTä:;55 ¸ ä:6QV5 @V55 :V5;55 ¸ äTäV5ä:6QV55  ;55 ¸ ä:QV55x;555y#;555ykzĽV55;HIT5  ;55 ¸ ä:QV5T556QDV5;5 ¸ äV55äT5ä:6QT5 (;5 ¸ äVäT5ä:QT5 MV5 "V;55!äR6 QV5 ¸" äT5 ä:QVˆᐐˆ É•ˆېˆ Ú•ˆ’Ű•ˆ”)똀”-ˆ“ČăČăŕˆ É•ˆ’ˆ Εˆőˆ ΕˆېÍ`€Ř‘Ôh€”KÔhʘ€”?Ó•ˆ É•ˆ ېˆېP•ˆúP€”Tˆ É•ˆ㐐Č•ˆ É•ˆݐˆݐˆŒappmediaprivtraceapp.media.priv.createPlayerdoc throwBadArgscanPlayOrAlertannotplayerclose closeReasonplay newPlayerargssettingsURLgetURLSettings renditiongetRenditionSettings windowTypecomputeDefaultWindowTypedocked fullScreenpage undefinedmonitormonitorsselect monitorType noStockEventsaddStockEventseventsEventsadd˙˙˙˙ÁXš argssettingsretWTОŤŸh”VQT5";555WQ*T5;555WQV”Č•ˆݐČ•ˆؐˆŒ annotappmedia windowTypedockedfloating˙˙˙˙Á:š N!€typeaidispatch argumentsϤGŠˆ”  WQ‚WQY\Š˙˙˙˙Q?WQ?m;55 ¸ äVV7äˆ˙˙˙˙ä:QV# ?WQQăVVŮ˙˙˙¸ˆ˙˙˙˙T6Q=ˆ˙˙˙˙55q 2ˆ˙˙˙˙55;55äR6QÔäˆ˙˙˙˙5 ä:DNQÔäˆ˙˙˙˙555 ä:D'QÔäˆ˙˙˙˙555ä:Q•˜€”šÉ˜€”‰Đˆ $?3M–ˆ”Œˆ-̘€”˜€”ŒˆӐˆҐˆ Ú•ˆ퐐ˆݐçâ˜€”Śˆappmediapriv copyPropslengthtype stockAlerterdocAlerteralerter˙˙˙˙dispatch\šalerterľ§@Šš”T;HBT@DEQT'=D5QT5Ĺ=D QT ¸ äˆ˙˙˙˙ä:BIÉ•ˆ’ˆËˆАˆՐۈ) undefinedobjectdispatchfunction#M˙˙˙˙Á šPŤąŤą”AB6QˆȈskip˙˙˙˙Á-šŚ4@askipprivOKPŹ!ľš” ‚WQˆ˙˙˙˙5 E QA5VQˆ˙˙˙˙5x=y<=yˇ=y×=y=y=y0z‹ˆ˙˙˙˙5 5 mˆ˙˙˙˙5 5 5 Ôä= ä:WQ9ˆ˙˙˙˙5 5 5Ôä=ä:WQ; ¸ äˆ˙˙˙˙55ä:QÜ;5 ¸ äˆ˙˙˙˙5äˆ˙˙˙˙5äˆ˙˙˙˙5 ä:WQ‹Ôä=äˆ˙˙˙˙5ä:WQe;5 ¸ äˆ˙˙˙˙5äˆ˙˙˙˙55äˆ˙˙˙˙5 äˆ˙˙˙˙5ä:WQˆ˙˙˙˙5 E QV AC6QC˜€”îɘ€”şˆ Ű•ˆ’”Î`€Č‘m €”Ďm €”Ôm €”Řm €”Ým €”ámʘ€”ÐÓ•Ř•ˆ אŘ•ˆ אP•ˆĺP•ˆđˆ7אP•P•ˆáP•ˆҐăˆ%ćP•ˆ Ř•ˆȐˆš€””űˆfromUserskiptype CannotPlay Exception FileNotFoundOpen PlayerError SelectFailedcanPlay canShowUIno authoring'IDS_PLAYBACK_DISALLOWED_WHILE_AUTHORINGsecurity%IDS_PLAYBACK_DISALLOWED_CONFIGURATIONappalerterrormessagemediaalertFileNotFounddocfileNameIDS_JS_PLAYBACK_ERROR errorTextalertSelectFailed selectionrejects˙˙˙˙privOKÚš!idMsg strAppendołľî”Y;55 ¸ äTä:TD Q=]>]>]ˆ˙˙˙˙5] \WQˆ˙˙˙˙5 ?VY;55 ¸ ä= ä:]B] \6 Q; ¸ äVä:QV5 V5 5÷äˆ Ď•ˆíÍˆՐČ•ˆΈappmediapriv getStringcMsgnIconnTypedocoDocfromUser oCheckboxIDS_DONOT_SHOW_AGAIN_DOC bInitialValuealert bAfterValue˙˙˙˙Á=š playersśyś•A5555WQVV ¸ ä>ä: Z\Ůˆŕˆ'adbeDocmediaprivplayersslice˙˙˙˙Áśš /objstrbValuespropńś¸•T =UQT=UQT=T=T'=UQTKBmMWQT=VT=TV7 ==UQăL˙˙˙ŔN;5 5 ¸ äTä:Qˆ •ˆΐˆČp•ˆ҈Ëp•5EːˆĎăpΐˆ߈ () []  :  appmediaprivtracePE˙˙˙˙Á&šobjstrG¸•¸!•;55 ¸ äTäTäBä:Qˆĺˆ-appmediapriv dumpObject˙˙˙˙Á&šobjstrøš'•;55 ¸ äTäTäCä:Qˆĺˆ,appmediapriv dumpObject˙˙˙˙Áš Farraystri=šéş-•T =UQT=UQT=T=T'=UQ>WQDmTTV7VTŮ?= =UQV# ?WQQăVTŮ˙˙˙ł;5 5 ¸ äTä:Qˆ •ˆΐˆČp•ˆ҈Ëp€•=ˆ $D8R–ˆŮ Őp€•=ˆ)̘€•>˜€•=ˆӐˆ߈ () [] { length,  }appmediaprivtracePR˙˙˙˙Á*š strťbťD•;55; ¸ äTä:QĎ•ˆՈappmediatraceconsoleprintln˙˙˙˙Áˆš áťćźM•†n;55oQ;50;5 ¸ ä;555ä:Q2ĆvWQ; ¸ äV5 ä:Qǐ‘ˆڐĘ•ˆëx•Ęˆڀ{–ˆannoteventactionplayercloseappmedia closeReasonstopalertmessage˙˙˙˙eY˙˙˙˙Ásš }˝Bž^•†n;55oQ;5;5 ¸ ä:Q2ĆvWQ; ¸ äV5ä:Qǐ‘ˆڐĘ•ˆÖx•Ęˆڀ{–ˆannoteventactionplayerpauseappalertmessage˙˙˙˙eD˙˙˙˙Ásš Öžšżo•†n;55oQ;5;5 ¸ ä:Q2ĆvWQ; ¸ äV5ä:Qǐ‘ˆڐĘ•ˆÖx•Ęˆڀ{–ˆannoteventactionplayerplayappalertmessage˙˙˙˙eD˙˙˙˙ÁHšfromtonameĐŔÁ‚•T Y\UQT-TKmMWQTVTV78QăL˙˙˙čNTˆ •ˆʐ •5ːˆؐˆŒ %˙˙˙˙Á˛šrectalignwidthheightxyîĂ;Ĺž•T ;555UQT>7T×7T>7T;555T7WQT?7T×7T?7T;555T7WQZV`V`VT`VT`\ˆ •ˆؐóóˆęˆ'appmediaaligncenterpriv xPosTable yPosTable˙˙˙˙Á”šrectalignxyˇĹÔĆŹ•T ;555UQT>7T×7T>7;555T7WQT?7T×7T?7;555T7WQZV`V`\ˆ •ˆؐďďˆԈappmediaaligncenterpriv xPosTable yPosTable˙˙˙˙ÁEš rectMÇ)Čş•;55 ¸ äTä: >T×7T>7T×7T?7Ţ•ˆ—ˆڈ5appmediapriv rectIsEmpty˙˙˙˙ÁGš rectsizeűČ–ÉƕZT>7T>7`T?7T?7`T×7T×7`T×7T×7`\ˆ”ϐϐѐӐˆ˙˙˙˙Á?š,&rectArectBnewRectĘĄĚՕVQ;55 ¸ äTä:D$Q;55 ¸ äTä:'Z>`>`>`>`\WQŇZ; ¸ äT>7äT>7ä:`; ¸ äT?7äT?7ä:`; ¸ äT×7äT×7ä:`; ¸ äT×7äT×7ä:`\WQ;55 ¸ äVä:"Z>`>`>`>`\WQV”˙"•ˆ␐ˆ”ŕŕâçŢ•ˆݐˆŒappmediapriv rectIsEmptyMathmaxmin˙˙˙˙Á?š rectArectBÍ‘Íń•;55 ¸ ä;55 ¸ äTäTä:ä:ˆţˆOappmediaprivrectArea rectIntersect˙˙˙˙Á*š rectŕÍ<Îů•T D$QT>7T×7DQT?7T×7ˆˆéˆ7˙˙˙˙Á-šrectÂÎ Ď–ZT>7`T?7`T×7`T×7`\ˆěˆ.˙˙˙˙Áš)rectArectBŽĎ0Ń –;55 ¸ äTä:(;55 ¸ äTä:Ô;55 ¸ äTä:(;55 ¸ äTä:ŽZ; ¸ äT>7äT>7ä:`; ¸ äT?7äT?7ä:`; ¸ äT×7äT×7ä:`; ¸ äT×7äT×7ä:`\ˆŢ#čŢ#萔ŕŕâäˆappmediapriv rectIsEmptyrectCopyMathminmax˙˙˙˙ÁšidString}ŃÍŃ–; ¸ ä=äTä:ˆۈ/app getString Multimedia˙˙˙˙Áš valuedef8Ň„Ň#–T;I TTˆÉш) undefined˙˙˙˙e ŕ?ŕ?ŕ?ŕ?ŕ?ŕ?ŕ?ŕ?˙˙˙˙Á šBpnsresultikeyoffset$ăŹäý– T'=űTŮ;šY\WQTKqmMWQVWQV ¸ äTä:WQV> V ¸ äTŮä:WQVV; ¸ äTV7äTä:8QăL˙˙˙‘NVUQS>WQ6mTV; ¸ äTV7äTä:8QV# ?WQQăVTŮ˙˙˙ÁTˆĘ•Î€••Ę5tː—֐ ېˆ퐐ˆ̐ˆ $6*DŽĺˆ˙˙ű̈˙˙ňӐˆŒ objectlength undefinedindexOfsliceSOAPstripNSÁD6t˙˙˙˙ÁÖ šz*Čdocusersettingsescript arguments€ĺľę—  Š˙˙˙˙QAˆ˙˙˙˙6QAˆ˙˙˙˙6QAˆ˙˙˙˙6QA@6Qˆ˙˙˙˙Q†; ¸ ä:Q; ¸ äA5äCäBä=ä:Q; ¸ äA5äBä:Q; ¸ äA5ä:Š˙˙˙˙Q; ¸ ä:Qˆ˙˙˙˙'= O‚äˆ˙˙˙˙ä:QA5 ¸ äˆ˙˙˙˙äˆ˙˙˙˙äˆ˙˙˙˙ä:Q&; ¸ ä=ˆ˙˙˙˙ä:QXĆvŠQ; ¸ ä:QA@6Q; ¸ ä=ˆä:QÇA‚6QA‚6QA‚6QA‚6 QÂėˆАˆАˆАˆȐʐ‘ˆѐˆ␐ˆڐáˆѐˆĐJ•ˆՐˆőˆ áx•ĐˆѐˆȐˆá€{–ˆ̘€—Cˆ̘€—Jˆ̘€—Qˆ̘€—Vˆdocusersettingsdriverapp beginPrivRSSaddFeedJSupdate getContentsendPriv undefinedinitconsoleprintlnDidn't Load driver EXCEPTION: enumeratecomplete getDocInfo˙˙˙˙Á( šŘs argumentsHç]ç0— Š˙˙˙˙Q9âäˆ˙˙˙˙ä{w—0Âď܈eval˙˙˙˙e˙˙˙˙0šsortedVčĎč<—A5Ĺ= A5 ¸ äTä:@ˆÍ•ˆېˆŠ driver undefined enumerate˙˙˙˙0š toCompleteěčméC—A5Ĺ= A5 ¸ äTä:BˆÍ•ˆېˆŠ driver undefinedcomplete˙˙˙˙,šŒéúéJ—A5Ĺ=A5 ¸ ä:@ˆÍ•ˆאˆŠ driver undefined getDocInfo˙˙˙˙8štoDeletetoAddtoUpdateę˛ęQ—A5Ĺ=(A5 ¸ äTäTäTä:BˆÍ#•ˆ㐈Š driver undefinedupdateC˙˙˙˙Á5š docusersettings¸ě)í|—TEQT= ;äTäTäTäR@ˆ+ŇâˆXDynamicAnnotStore˙˙˙˙e\[\d+\]Ĺ15—˘*3ďĐ?ŕ?č?