1// **************************** Form Validator ********************************* 2// summery: validate input values accoriding to parameters in: 3// arrInputs() - Containing all fieldValidate objects. 4// fieldValidate.inputName - the name of the inputs to be checked. 5// fieldValidate.type - the type of the input to be checked. 6// fieldValidate.userName - the user name of the input to be checked. 7// fieldValidate.isMust - a flag inticating whether the field is a must field. 8// created by: boaz bibas - Daronet 9// created/: 05/01/2001 10// last updated: 11/02/2013 - Ellina Davidov 11// ******************************************************************************* 12 13function fieldValidate(strInputName, intType, strUserName, bolIsMust) { 14 this.inputName = strInputName; 15 this.type = intType; 16 this.userName = strUserName; 17 this.isMust = bolIsMust; 18} 19 20function cleanString(str) { 21 for (; str.charAt(str.length-1) == " ";) { 22 str = str.slice(0,(str.length-2)); 23 } 24 for (; str.charAt(0) == " ";) { 25 str = str.slice(1,(str.length-1)); 26 } 27 return str; 28} 29 30function cleanSpace(str) { 31 var arrTemp = str.split(" "); 32 str = arrTemp.join(""); 33 arrTemp = str.split("-"); 34 str = arrTemp.join(""); 35 return str; 36} 37 38function isValidCharacter(str, strType) { 39 var isMail = false; 40 var isURL = false; 41 var isFile = false; 42 if (strType == "eMail") 43 isMail = true; 44 else if (strType == "URL") 45 isURL = true; 46 else if (strType == "file") 47 isFile = true; 48 for (i=0; i<str.length; i++) { 49 if (!isMail && str.charCodeAt(i) == 64) 50 return false; 51 if (!isURL && !isFile && (str.charCodeAt(i) == 58 || str.charCodeAt(i) == 41 || str.charCodeAt(i) == 40)) 52 return false; 53 if (!isURL && str.charCodeAt(i) == 47) 54 return false; 55 if (!isFile && str.charCodeAt(i) == 92) 56 return false; 57 if (str.charCodeAt(i)<45 || str.charCodeAt(i)>122 || str.charCodeAt(i)==96 || (str.charCodeAt(i)>58 && str.charCodeAt(i)<63) || (str.charCodeAt(i)>90 && str.charCodeAt(i)<92) || (str.charCodeAt(i)>92 && str.charCodeAt(i)<95)) { 58 return false; 59 } 60 } 61 return true; 62} 63 64function isValidDate(DateStr) { 65 var DateStrArr = DateStr.split("/"); 66 for (i=0; i<DateStrArr.length-1; i++) { 67 if (DateStrArr[i].charAt(0) == " " || DateStrArr[i].charAt(0) == "0") { 68 DateStrArr[i] = DateStrArr[i].substring(1,DateStrArr[i].length) 69 } 70 } 71 var tempDateStr = DateStrArr[1]+"/"+DateStrArr[0]+"/"+DateStrArr[2]; 72 var dateToCheckObj = new Date(tempDateStr); 73 return ((dateToCheckObj.getMonth()+1)+"/"+dateToCheckObj.getDate()+"/"+dateToCheckObj.getFullYear() == tempDateStr); 74} 75 76function IsValidData(objForm) { 77 var arInputs; 78 if (arguments.length > 1) { 79 arInputs = arguments[1]; 80 } 81 else { 82 arInputs = arrInputs; 83 } 84 var strCheck = ""; 85 var isValid = true; 86 for (count=0; count<arInputs.length; count++) { 87 if (objForm[arInputs[count].inputName]) { 88 strCheck = cleanString(""+objForm[arInputs[count].inputName].value).toLowerCase(); 89 switch (arInputs[count].type) { 90 case 0: { // Text 91 //alert(count); 92 //alert(strCheck); 93 if (arInputs[count].isMust && strCheck == "") { 94 alert("×× × ××× "+arInputs[count].userName); 95 objForm[arInputs[count].inputName].focus(); 96 objForm[arInputs[count].inputName].select(); 97 isValid = false; 98 return isValid; 99 } 100 break; 101 } 102 case 1: { // Number 103 var arrTempValue = strCheck.split("."); 104 if (arInputs[count].isMust && strCheck == "") { 105 alert("×× × ××× "+arInputs[count].userName); 106 objForm[arInputs[count].inputName].focus(); 107 objForm[arInputs[count].inputName].select(); 108 isValid = false; 109 return isValid; 110 } 111 if (arrTempValue.length > 2) { 112 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 113 objForm[arInputs[count].inputName].focus(); 114 objForm[arInputs[count].inputName].select(); 115 isValid = false; 116 return isValid; 117 } 118 else { 119 for (iCounter=0; iCounter < arrTempValue.length; iCounter++) { 120 if (isNaN(arrTempValue[iCounter])) { 121 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 122 objForm[arInputs[count].inputName].focus(); 123 objForm[arInputs[count].inputName].select(); 124 isValid = false; 125 return isValid; 126 } 127 } 128 } 129 break; 130 } 131 case 2: { // TextArea
132 if (arInputs[count].isMust && strCheck == "") { 133 alert("×× × ××× "+arInputs[count].userName); 134 objForm[arInputs[count].inputName].focus(); 135 objForm[arInputs[count].inputName].select(); 136 isValid = false; 137 return isValid; 138 } 139 break; 140 } 141 case 3: { // Radio Button 142 if (arInputs[count].isMust) { 143 var bSelected = false; 144 var oControl = objForm[arInputs[count].inputName]; 145 if (oControl.length) { 146 for (nIndex = 0; nIndex < oControl.length; nIndex++) { 147 if (oControl[nIndex].checked) { 148 bSelected = true; 149 break; 150 } 151 } 152 } 153 else { 154 bSelected = oControl.checked; 155 } 156 157 if (!bSelected) { 158 alert("×× × ××ר "+arInputs[count].userName); 159 return bSelected; 160 } 161 } 162 break; 163 } 164 case 4: { // Checkbox 165 if (arInputs[count].isMust) { 166 var bSelected = false; 167 var oControl = objForm[arInputs[count].inputName]; 168 if (oControl.length) { 169 for (nIndex = 0; nIndex < oControl.length; nIndex++) { 170 if (oControl[nIndex].checked) { 171 bSelected = true; 172 break; 173 } 174 } 175 } 176 else { 177 bSelected = oControl.checked; 178 } 179 180 if (!bSelected) { 181 alert("×× × ××ר "+arInputs[count].userName); 182 return bSelected; 183 } 184 } 185 break; 186 } 187 case 5: { // Select 188 if (arInputs[count].isMust && (objForm[arInputs[count].inputName].selectedIndex == -1 || objForm[arInputs[count].inputName].value == "")) { 189 alert("! ×× × ××ר " + arInputs[count].userName); 190 objForm[arInputs[count].inputName].focus(); 191 isValid = false; 192 return isValid; 193 } 194 break; 195 } 196 case 6: { // Hidden 197 if (arInputs[count].isMust && strCheck == "") { 198 alert("×× × ××× "+arInputs[count].userName); 199 isValid = false; 200 return isValid; 201 } 202 break; 203 } 204 case 7: { // File
205 if (arInputs[count].isMust && (strCheck == "" && !(objForm["Exist_"+arInputs[count].inputName]))){ 206 alert("! ×× × ××ר ×§×××¥ ×ש×× " + arInputs[count].userName); 207 objForm[arInputs[count].inputName].focus(); 208 objForm[arInputs[count].inputName].select(); 209 isValid = false; 210 return isValid; 211 } 212 var arrFilePath = strCheck.split("\\"); 213 var strFileName = arrFilePath[arrFilePath.length-1]; 214 if (!isValidCharacter(strFileName, "file")) { 215// alert("×©× ××§×××¥ ×©× ××ר ××× × ×××§×!"); 216 alert(".× ××ª× ×××¢××ת ×§×צ×× ×©×©×× ××× ×××ת ××××, ××× ×ª×××× ×××× ×¨×××××"); 217 objForm[arInputs[count].inputName].focus(); 218 objForm[arInputs[count].inputName].select(); 219 isValid = false; 220 return isValid; 221 } 222 break; 223 } 224 case 8: { // Date 225 if (arInputs[count].isMust && strCheck == "") { 226 alert("×× × ××× "+arInputs[count].userName); 227 objForm[arInputs[count].inputName].focus(); 228 objForm[arInputs[count].inputName].select(); 229 isValid = false; 230 return isValid; 231 } 232 if (!isValidDate(strCheck) && strCheck != "") { 233 alert("! ×ת×ר×× ×©×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 234 objForm[arInputs[count].inputName].focus(); 235 objForm[arInputs[count].inputName].select(); 236 isValid = false; 237 return isValid; 238 } 239 break; 240 } 241 case 9: { // eMail 242 if (arInputs[count].isMust && strCheck == "") { 243 alert("×× × ××× "+arInputs[count].userName); 244 objForm[arInputs[count].inputName].focus(); 245 objForm[arInputs[count].inputName].select(); 246 isValid = false; 247 return isValid; 248 } 249 if (strCheck != "" && (((strCheck.lastIndexOf('@')<1)||(strCheck.lastIndexOf('.')<1)||(strCheck.lastIndexOf('.')<2+strCheck.lastIndexOf('@'))||(strCheck.lastIndexOf('.')>strCheck.length-3)||(strCheck.lastIndexOf('.')<strCheck.length-5)||(strCheck.lastIndexOf(' ')!=-1)||(strCheck.lastIndexOf('.@')!=-1)||(strCheck.lastIndexOf('@.')!=-1)))) { 250 alert("! ××ת××ת ש×××× × ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×¤×"); 251 objForm[arInputs[count].inputName].focus(); 252 objForm[arInputs[count].inputName].select(); 253 isValid = false; 254 return isValid; 255 } 256 break; 257 } 258 case 10: { // Currency 259 var arrTempValue = strCheck.split("."); 260 if (arInputs[count].isMust && strCheck == "") { 261 alert("×× × ××× "+arInputs[count].userName); 262 objForm[arInputs[count].inputName].focus(); 263 objForm[arInputs[count].inputName].select(); 264 isValid = false; 265 return isValid; 266 } 267 if (arrTempValue.length > 2) { 268 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 269 objForm[arInputs[count].inputName].focus(); 270 objForm[arInputs[count].inputName].select(); 271 isValid = false; 272 return isValid; 273 } 274 else { 275 if (arrTempValue.length > 1) { 276 if (isNaN(arrTempValue[arrTempValue.length-1]) || arrTempValue[arrTempValue.length-1].length > 2) { 277 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 278 objForm[arInputs[count].inputName].focus(); 279 objForm[arInputs[count].inputName].select(); 280 isValid = false; 281 return isValid; 282 } 283 } 284 var arrTempValue = arrTempValue[0].split(","); 285 if (isNaN(arrTempValue[0])) { 286 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 287 objForm[arInputs[count].inputName].focus(); 288 objForm[arInputs[count].inputName].select(); 289 isValid = false; 290 return isValid; 291 } 292 for (iCounter=1; iCounter < arrTempValue.length; iCounter++) { 293 if (isNaN(arrTempValue[iCounter]) || arrTempValue[iCounter].length != 3) { 294 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 295 objForm[arInputs[count].inputName].focus(); 296 objForm[arInputs[count].inputName].select(); 297 isValid = false; 298 return isValid; 299 } 300 } 301 } 302 break; 303 } 304 case 11: { // URL
305 if (arInputs[count].isMust && strCheck == "") { 306 alert("×× × ××× "+arInputs[count].userName); 307 objForm[arInputs[count].inputName].focus(); 308 objForm[arInputs[count].inputName].select(); 309 isValid = false; 310 return isValid; 311 } 312 if ((arInputs[count].isMust || strCheck != "") && (strCheck.indexOf("http://") != 0 || !isValidCharacter(strCheck, "URL") || strCheck=="http://") || strCheck=="http://www.") { 313 //if ((arInputs[count].isMust || strCheck != "") && ((strCheck.indexOf("www.") != 0 && strCheck.indexOf("http://www.") != 0) || strCheck.lastIndexOf(".")<strCheck.indexOf("www.")+6 || !isValidCharacter(strCheck, "URL"))) { 314 alert("! ×-URL ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 315 objForm[arInputs[count].inputName].focus(); 316 objForm[arInputs[count].inputName].select(); 317 isValid = false; 318 return isValid; 319 } 320 break; 321 } 322 case 12: { // Select Multiple 323 if (arInputs[count].isMust && strCheck == "") { 324 alert("×× × ××× "+arInputs[count].userName); 325 isValid = false; 326 return isValid; 327 } 328 break; 329 } 330 case 13: { // Counter 331 break; 332 } 333 case 14: { // DHTML control 334 objForm[arInputs[count].inputName].value = document.all[arInputs[count].inputName+"Control"].Dom.body.innerHTML; 335 strCheck = objForm[arInputs[count].inputName].value 336 if (arInputs[count].isMust && strCheck == "") { 337 alert("! ×× ×××× ×ª××× ×" + arInputs[count].userName); 338 document.all[arInputs[count].inputName+"Control"].focus(); 339 isValid = false; 340 return isValid; 341 } 342 break; 343 } 344 case 15: { // Phone - Pax 345 if (arInputs[count].isMust && strCheck == "") { 346 alert("×× × ××× "+arInputs[count].userName); 347 objForm[arInputs[count].inputName].focus(); 348 objForm[arInputs[count].inputName].select(); 349 isValid = false; 350 return isValid; 351 } 352 if (isNaN(cleanSpace(strCheck)) || (strCheck.length < 7 && strCheck.length > 0)) { 353 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 354 objForm[arInputs[count].inputName].focus(); 355 objForm[arInputs[count].inputName].select(); 356 isValid = false; 357 return isValid; 358 } 359 break; 360 } 361 case 16: { // Password
362 if (strCheck == "") { 363 alert("×× × ××× "+arInputs[count].userName); 364 objForm[arInputs[count].inputName].focus(); 365 objForm[arInputs[count].inputName].select(); 366 isValid = false; 367 return isValid; 368 } 369 if (strCheck.length < 2 || strCheck.length > 10 || strCheck.indexOf(" ") != -1) { 370 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 371 objForm[arInputs[count].inputName].focus(); 372 objForm[arInputs[count].inputName].select(); 373 isValid = false; 374 return isValid; 375 } 376 break; 377 } 378 case 17: { // Credit Card 379 var arrTempValue = strCheck.split("."); 380 if (arInputs[count].isMust && strCheck == "") { 381 alert("×× × ××× "+arInputs[count].userName); 382 objForm[arInputs[count].inputName].focus(); 383 objForm[arInputs[count].inputName].select(); 384 isValid = false; 385 return isValid; 386 } 387 if (arrTempValue.length > 2) { 388 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 389 objForm[arInputs[count].inputName].focus(); 390 objForm[arInputs[count].inputName].select(); 391 isValid = false; 392 return isValid; 393 } 394 else { 395 for (iCounter=0; iCounter < arrTempValue.length; iCounter++) { 396 if (isNaN(arrTempValue[iCounter])) { 397 alert("! ×××××¢ ש×××× ×ש×× " + arInputs[count].userName + " ××× × ×ª×§×£"); 398 objForm[arInputs[count].inputName].focus(); 399 objForm[arInputs[count].inputName].select(); 400 isValid = false; 401 return isValid; 402 } 403 } 404 } 405 break; 406 } 407 case 18: { // File 408 if (arInputs[count].isMust && strCheck == "") { 409 alert("×× × ××× "+arInputs[count].userName); 410 isValid = false; 411 return isValid; 412 } 413 break; 414 } 415 default: { // Custom 416 if (!customCheck(objForm, arInputs[count], strCheck)) 417 return false; 418 else 419 continue; 420 } 421 } 422 } 423 } 424 return isValid; 425} 426 427function dbsHTTPGetRequest(sURL) { 428 try { 429 var xmlHTTP; 430 // code for IE 431 if (window.ActiveXObject) { 432 xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 433 xmlHTTP.open("GET",sURL, false); 434 xmlHTTP.send(); 435 return xmlHTTP; 436 } 437 // code for Mozilla, etc. 438 439 else if (window.XMLHttpRequest) { 440 xmlHTTP = new XMLHttpRequest(); 441 xmlHTTP.open("GET",sURL, false); 442 xmlHTTP.send(null); 443 return xmlHTTP; 444 } 445 } 446 catch (e) { 447 return null; 448 } 449} 450 451function dbsPlaceMailData(url) { 452 try { 453 var xmlHTTP = dbsHTTPGetRequest(url); 454 if (xmlHTTP != null) { 455 var xmlDoc = xmlHTTP.responseXML.documentElement; 456 for (var i=0; i < xmlDoc.childNodes.length; i++) { 457 if (window.ActiveXObject) 458 document.write("<option value=\""+xmlDoc.childNodes[i].childNodes[1].text+"\">"+xmlDoc.childNodes[i].childNodes[0].text+"</option>"); 459 else 460 document.write("<option value=\""+xmlDoc.childNodes[i].childNodes[1].textContent+"\">"+xmlDoc.childNodes[i].childNodes[0].textContent+"</option>"); 461 } 462 } 463 } 464 catch (e) { 465 } 466} 467 468function dbsPlaceMailDataAsnyc(url, oSel) { 469 try { 470 var xmlHTTP = dbsHTTPGetRequest(url); 471 if (xmlHTTP != null) { 472 var xmlDoc = xmlHTTP.responseXML.documentElement; 473 for (var i=0; i < xmlDoc.childNodes.length; i++) { 474 var oOpt = document.createElement("option"); 475 if (window.ActiveXObject) 476 { 477 oOpt.value = xmlDoc.childNodes[i].childNodes[1].text; 478 oOpt.text = xmlDoc.childNodes[i].childNodes[0].text; 479 } 480 else 481 { 482 oOpt.value = xmlDoc.childNodes[i].childNodes[1].textContent; 483 oOpt.text = xmlDoc.childNodes[i].childNodes[0].textContent; 484 } 485 try { 486 oSel.add(oOpt,null); 487 } 488 catch(ex) { 489 oSel.add(oOpt); 490 } 491 } 492 } 493 } 494 catch (e) { 495 } 496} 497 498 499 500/******************************************************************************************************************/ 501/*********************************************** Daronet logo **************************************************/ 502 503function new_daronet_banner(color, tag) { 504 code = "<!-- Modules6/_Scripts/Site/modFormValidatorHU.js -->"; 505 if (tag == 'div') { 506 code = code + '<div class="daronet">'; 507 } else { 508 code = code + '<table cellpadding="0" cellspacing="0" border="0" class="daronet" role="presentation"><tr><td>'; 509 } 510 code = code + '<div class="darocredit">' + 511 ' <a class="dd_logo_' + color + '" title="×ר×× × ×××××× - ×× ××ת ××ª×¨× ××ר×פרס, ×× ××ת ××ª×¨× ×¡×ר, ×× ×ת ××× ××¨× ××ת, פ×ת×× ×תר××" target="_blank" href="https://www.daro-net.co.il/">' + 512 ' <span class="s_tag">×ר×× × ×××××× - ×× ××ת ×תר××, ×× ××ת ××ª×¨× ××ר×פרס, ×× ××ת ××ª×¨× ×¡×ר, ×× ×ת ××× ××¨× ××ת, פ×ת×× ×תר××</span>' + 513 ' </a>' + 514 '</div>'; 515 if (tag == 'div') { 516 code = code + '</div>'; 517 } else { 518 code = code + '</td></tr></table>'; 519 } 520 code = code + '<style type="text/css">' + 521 ' .darocredit >
521 a {width:200px; height:20px; display:block; background-repeat:no-repeat; background-position:center top;}' + 522 " .dd_logo_black {background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAAUCAYAAAA3BlcoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LjE3MWMyN2ZhYiwgMjAyMi8wOC8xNi0yMjozNTo0MSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MTAwRDlBODc4MTExRURBRDlBOTkzMTI4OENGRDRGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY5MTAwRDlCODc4MTExRURBRDlBOTkzMTI4OENGRDRGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjkxMDBEOTg4NzgxMTFFREFEOUE5OTMxMjg4Q0ZENEYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjkxMDBEOTk4NzgxMTFFREFEOUE5OTMxMjg4Q0ZENEYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz70XGSfAAAIFElEQVR42uya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');}" + 523 " .dd_logo_white {background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALwAAAAUCAYAAAA3BlcoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i
52377u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDkuMC1jMDAwIDc5LjE3MWMyN2ZhYiwgMjAyMi8wOC8xNi0yMjozNTo0MSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI0LjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkZGMzk4REVFODczNjExRURCOTQ0Q0EzOTEyRjA0M0M0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkZGMzk4REVGODczNjExRURCOTQ0Q0EzOTEyRjA0M0M0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkYzOThERUM4NzM2MTFFREI5NDRDQTM5MTJGMDQzQzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RkYzOThERUQ4NzM2MTFFREI5NDRDQTM5MTJGMDQzQzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4fs2MgAAAIIUlEQVR42uyad2zVVRTH37OvhcrQJ4JbtIJ7YakKIUa0lUQlEAiocSNCUHHjAzRq3KhxS6BOXJhWcQ9EEwhxpkXckwp1j1oKWKDjPb83fK45Xn8txf8ov5N80v5+v3vPXeeee+5pk7lcLhFLLFuKbBVPQSxbkqTiKYilE0hSFIhdxABxpOgnGsRrYj6/52KDj6UzSDeMfQ9+7o3Rt4rtRYuoEitig4+lM3h3F5qvFb+JZlEn1ogR4gTRW7woboxj+Fg2d3FZl0bRVRwiBosfxFXiGZEVu4p94xg+WgoiLvMtEHoWP+E2CZAy9ZN8D+u77/l8b8Ur2SRCNiK5kOK905Nn6udMX7LoS1I+Z/pnyzS14Snz0Z0zY2tBZ4JvKfqbNffAVKCnFfKob+fE9idp+pOjjB27H2NzMM+JoMwwkRFDeFfD85v
523iePTXxQYfLaPxCAU8rxOfinc4Jv3E9xGF4nfxF+/6iqEcoX6R3WJ9IhaLVbx3nmiQSItvxSLxk9gTT/UdXsvLbuJoPNe74gDa6U7/8ij3q1gqthVHidViPX3emrZrxdwIo98G4+hnjK4BfVW0s484VrwqlomeeNQDRRdjgJ8wrsPo7/6QNeNy89sDPZXMlZv35YQnCQzZlXnDG2yEI3Ahy62if5CM2YFN58a+QizZsN1yuc2Vk8RMca3YSiTFBPEQP/+v3hW5DfIXNIk6MU30MuUuEI+KQSKPd6eLVdT/U/wumsUf4lTKnSA+Elm+rRePibQ4S7wkzhTbmrZGiJ/Ew6JUvEUbTu9vtNUg3heTxR1Gt5d1vFskukeM+0DxBWXXikbRIr4S40S+OIPvbu5TYjpz43SvhibGcyHz59ZirlhD+16aeJ4v+ohTxHNiX9Mn19fl4tA21qqveDb3X3lNDBWzWIPxzO8/Hr5YlPJ7uajfBI9YxBHSnrhdvNdGykzgZyU/69upN0nMNM/ucvKhOJvncWKg0VkhZojqDoynEY92CZ7TecuLxE142KfxGsPFceIz8RH18vGoL4jH8f4leKBT8F43cAJM4uRw789nrLV4zKPx6g+KXzglfsRjnUgm4mbmqrc59lfi5buRjnPfLuYkGY9HbDAeNIyFnQd+nbnyHv18+r+avrTwzZ0gN4oF4l7a9WHPcsbQSlk35ns4Ea5jnm5lfpZxUk7GDp8SX5nYfLUJqUIZasIYL3XE7im+vS1e8TadopEKDD2NkVQaBTVshmoqpalTbYyyjHipiO/VZjPYn3aDpKEGfTXG8IuYdK+vKDDWc4NBHgphaOIN3rdVSj+Lgz7Wm03uFv17Qhh/tL+EsZ8snme8u7AQw1j0pRh7M0fzYIyrHwv7OSGDq3cax3SCBenDt8XMpxvLtdS9DL1rTcyeJfXm2t6O5yWMqQG9X9OPUdRbtJGNngduEy7k3XuEJo+IC8Rd4k8Mdzhh2HGU3cPM3x/mruFCpy+N0U7C4N9iXpycakIS57Q+IAxpRk9b8XsWcmaD3MY8TqN/V4ufbayTwcBnBLu9mvdjjKFPZHN4g/UbI4PhZHieYd6Hp0UVBjMGAxzIu6lBHb8BFtBWudG7sgOeen3wPNv0pZ6+l6N/IhshvLhmzcTW4u1drHoei/UxMeSJePk1lHfx+UH02+mZI+5nERqI5cMTsAgDd3INXnoabX5AH9bRRjfaLCHmd+u1I5uuwegtJAbOj7gQRnn4BMacMpfsWvT2ZzzN3B12xpD93WU+7RUyt0vor2+7lX77Mt2Zw/1wYO4Ee5YNWkK7uXaMPcGazeGEd7pux5FcTgx/DWv0r6A/3UYIMzZQ7D3kVDaD9ZJlGFQlZW/huQyDtlKJnjEs8oTAe1cHxl1Gm6WmzMMdMPgHgueJpi/ltFtsxmcX3mc+fDakD6HVuxj4II5e742GMz+FLOx0/uAxhSN2MR7rOxZid+beZ1MOZg2+5/K4hrSaC3cGEDr053jvha4RGNoOGPtZeONkxFg2RbJm/AVs3EMwwDo2mNtUX3AR7cXzi4R7XVnXVKArEZH9SXJCDOT0mE4ufQpz3mjmKWlOIZ/xcR78Svp4FOHYuczHFNbrP7fcmiDkSJtQxkq58cDtxcI1wWkRtSszxstmghAqlPqIDfnERup8xu5uT9JszPKI9FxvFrmErEQFnvZ1YtofOfrXEx+6bMRIvH+TSd/Nw4insGGexHDuZmEOx/O7cOZlTolCMipJ2h3FfPdgvVaxKQaQ1TmCvyoOph/bB2NJbkI+O8dmPIJNOIqQwLU3CwPsycaby2abR9vOwdxJ/L3W/EEo2cama2TDjsMRLCRcmku4Nghb2glnV8x8DWHzd0VPK5tnG0JON//XYwMRo9xwe60SC/hZwU3XfSsiA+C/ZcQynp2MMd8rzLdbxGzqVBl9nh
523xlJvB7Mbozpo2MqVeKXqujQLwQcUP/nG+27ALTtyre+baLgrKfRuh0GYaxZBKayU70oHxPsVDMIytQI6aaTMgksVJcwfMQsjRWyunzOaIe/UnTpwMoc6U4hsxGlNSSDfL19mbMS8lktZed2k98GOjLMm8nU+YM3o3meTKZmVBctuU8vp1p1sPN2ZviDeZnPNmgq8x87Sm+IUNzJGVDcbbWz/Td1S0RB4ku7Y0zyb8Hp4Pj3WZe/Ld6E8okTJxdBP4ymDYX2lLjoe2J4S+p9SY0Shu9paZ8TTvZoDxu+5eay+XIiFjVXp593zK0PTb+08MW9H8IneT/4Udz9N3XwfKz2VRlHUipxhIbfCyxbJ4S//NYLLHBxxJLZ5W/BRgA4NP45PeOwP8AAAAASUVORK5CYII=');}" + 524 ' .s_tag {position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0,0,0,0);}' + 525 '</style>'; 526 document.write(code); 527}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.