PageSourceSearch

https://pe.ffmbank.com/EBC_EBC1151/js/RemoteLogon

js ffmbank.com collected 2026-10-02 15:05:41 UTC 59,384 bytes, 1,593 lines download raw bytes

1/**
2 * @license jahashtable, a JavaScript implementation of a hash table. It creates a single constructor function called
3 * Hashtable in the global scope.
4 *
5 * http://www.timdown.co.uk/jshashtable/
6 * Copyright 2013 Tim Down.
7 * Version: 3.0
8 * Build date: 17 July 2013
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 *      http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 */
22var Hashtable = (function (UNDEFINED) {
23    var FUNCTION = "function", STRING = "string", UNDEF = "undefined";
24
25    // Require Array.prototype.splice, Object.prototype.hasOwnProperty and encodeURIComponent. In environments not
26    // having these (e.g. IE <= 5), we bail out now and leave Hashtable null.
27    if (typeof encodeURIComponent == UNDEF ||
28            Array.prototype.splice === UNDEFINED ||
29            Object.prototype.hasOwnProperty === UNDEFINED) {
30        return null;
31    }
32
33    function toStr(obj) {
34        return (typeof obj == STRING) ? obj : "" + obj;
35    }
36
37    function hashObject(obj) {
38        var hashCode;
39        if (typeof obj == STRING) {
40            return obj;
41        } else if (typeof obj.hashCode == FUNCTION) {
42            // Check the hashCode method really has returned a string
43            hashCode = obj.hashCode();
44            return (typeof hashCode == STRING) ? hashCode : hashObject(hashCode);
45        } else {
46            return toStr(obj);
47        }
48    }
49
50    function merge(o1, o2) {
51        for (var i in o2) {
52            if (o2.hasOwnProperty(i)) {
53                o1[i] = o2[i];
54            }
55        }
56    }
57
58    function equals_fixedValueHasEquals(fixedValue, variableValue) {
59        return fixedValue.equals(variableValue);
60    }
61
62    function equals_fixedValueNoEquals(fixedValue, variableValue) {
63        return (typeof variableValue.equals == FUNCTION) ?
64            variableValue.equals(fixedValue) : (fixedValue === variableValue);
65    }
66
67    function createKeyValCheck(kvStr) {
68        return function (kv) {
69            if (kv === null) {
70                throw new Error("null is not a valid " + kvStr);
71            } else if (kv === UNDEFINED) {
72                throw new Error(kvStr + " must not be undefined");
73            }
74        };
75    }
76
77    var checkKey = createKeyValCheck("key"), checkValue = createKeyValCheck("value");
78
79    /*----------------------------------------------------------------------------------------------------------------*/
80
81    function Bucket(hash, firstKey, firstValue, equalityFunction) {
82        this[0] = hash;
83        this.entries = [];
84        this.addEntry(firstKey, firstValue);
85
86        if (equalityFunction !== null) {
87            this.getEqualityFunction = function () {
88                return equalityFunction;
89            };
90        }
91    }
92
93    var EXISTENCE = 0, ENTRY = 1, ENTRY_INDEX_AND_VALUE = 2;
94
95    function createBucketSearcher(mode) {
96        return function (key) {
97            var i = this.entries.length, entry, equals = this.getEqualityFunction(key);
98            while (i--) {
99                entry = this.entries[i];
100                if (equals(key, entry[0])) {
101                    switch (mode) {
102                        case EXISTENCE:
103                            return true;
104                        case ENTRY:
105                            return entry;
106                        case ENTRY_INDEX_AND_VALUE:
107                            return [i, entry[1]];
108                    }
109                }
110            }
111            return false;
112        };
113    }
114
115    function createBucketLister(entryProperty) {
116        return function (aggregatedArr) {
117            var startIndex = aggregatedArr.length;
118            for (var i = 0, entries = this.entries, len = entries.length; i < len; ++i) {
119                aggregatedArr[startIndex + i] = entries[i][entryProperty];
120            }
121        };
122    }
123
124    Bucket.prototype = {
125        getEqualityFunction: function (searchValue) {
126            return (typeof searchValue.equals == FUNCTION) ? equals_fixedValueHasEquals : equals_fixedValueNoEquals;
127        },
128
129        getEntryForKey: createBucketSearcher(ENTRY),
130
131        getEntryAndIndexForKey: createBucketSearcher(ENTRY_INDEX_AND_VALUE),
132
133        removeEntryForKey: function (key) {
134            var result = this.getEntryAndIndexForKey(key);
135            if (result) {
136                this.entries.splice(result[0], 1);
137                return result[1];
138            }
139            return null;
140        },
141
142        addEntry: function (key, value) {
143            this.entries.push([key, value]);
144        },
145
146        keys: createBucketLister(0),
147
148        values: createBucketLister(1),
149
150        getEntries: function (destEntries) {
151            var startIndex = destEntries.length;
152            for (var i = 0, entries = this.entries, len = entries.length; i < len; ++i) {
153                // Clone the entry stored in the bucket before adding to array
154                destEntries[startIndex + i] = entries[i].slice(0);
155            }
156        },
157
158        containsKey: createBucketSearcher(EXISTENCE),
159
160        containsValue: function (value) {
161            var entries = this.entries, i = entries.length;
162            while (i--) {
163                if (value === entries[i][1]) {
164                    return true;
165                }
166            }
167            return false;
168        }
169    };
170
171    /*----------------------------------------------------------------------------------------------------------------*/
172
173    // Supporting functions for searching hashtable buckets
174
175    function searchBuckets(buckets, hash) {
176        var i = buckets.length, bucket;
177        while (i--) {
178            bucket = buckets[i];
179            if (hash === bucket[0]) {
180                return i;
181            }
182        }
183        return null;
184    }
185
186    function getBucketForHash(bucketsByHash, hash) {
187        var bucket = bucketsByHash[hash];
188
189        // Check that this is a genuine bucket and not something inherited from the bucketsByHash's prototype
190        return (bucket && (bucket instanceof Bucket)) ? bucket : null;
191    }
192
193    /*----------------------------------------------------------------------------------------------------------------*/
194
195    function Hashtable() {
196        var buckets = [];
197        var bucketsByHash = {};
198        var properties = {
199            replaceDuplicateKey: true,
200            hashCode: hashObject,
201            equals: null
202        };
203
204        var arg0 = arguments[0], arg1 = arguments[1];
205        if (arg1 !== UNDEFINED) {
206            properties.hashCode = arg0;
207            properties.equals = arg1;
208        } else if (arg0 !== UNDEFINED) {
209            merge(properties, arg0);
210        }
211
212        var hashCode = properties.hashCode, equals = properties.equals;
213
214        this.properties = properties;
215
216        this.put = function (key, value) {
217            checkKey(key);
218            checkValue(value);
219            var hash = hashCode(key), bucket, bucketEntry, oldValue = null;
220
221            // Check if a bucket exists for the bucket key
222            bucket = getBucketForHash(bucketsByHash, hash);
223            if (bucket) {
224                // Check this bucket to see if it already contains this key
225                bucketEntry = bucket.getEntryForKey(key);
226                if (bucketEntry) {
227                    // This bucket entry is the current mapping of key to value, so replace the old value.
228                    // Also, we optionally replace the key so that the latest key is stored.
229                    if (properties.replaceDuplicateKey) {
230                        bucketEntry[0] = key;
231                    }
232                    oldValue = bucketEntry[1];
233                    bucketEntry[1] = value;
234                } else {
235                    // The bucket does not contain an entry for this key, so add one
236                    bucket.addEntry(key, value);
237                }
238            } else {
239                // No bucket exists for the key, so create one and put our key/value mapping in
240                bucket = new Bucket(hash, key, value, equals);
241                buckets.push(bucket);
242                bucketsByHash[hash] = bucket;
243            }
244            return oldValue;
245        };
246
247        this.get = function (key) {
248            checkKey(key);
249
250            var hash = hashCode(key);
251
252            // Check if a bucket exists for the bucket key
253            var bucket = getBucketForHash(bucketsByHash, hash);
254            if (bucket) {
255                // Check this bucket to see if it contains this key
256                var bucketEntry = bucket.getEntryForKey(key);
257                if (bucketEntry) {
258                    // This bucket entry is the current mapping of key to value, so return the value.
259                    return bucketEntry[1];
260                }
261            }
262            return null;
263        };
264
265        this.containsKey = function (key) {
266            checkKey(key);
267            var bucketKey = hashCode(key);
268
269            // Check if a bucket exists for the bucket key
270            var bucket = getBucketForHash(bucketsByHash, bucketKey);
271
272            return bucket ? bucket.containsKey(key) : false;
273        };
274
275        this.containsValue = function (value) {
276            checkValue(value);
277            var i = buckets.length;
278            while (i--) {
279                if (buckets[i].containsValue(value)) {
280                    return true;
281                }
282            }
283            return false;
284        };
285
286        this.clear = function () {
287            buckets.length = 0;
288            bucketsByHash = {};
289        };
290
291        this.isEmpty = function () {
292            return !buckets.length;
293        };
294
295        var createBucketAggregator = function (bucketFuncName) {
296            return function () {
297                var aggregated = [], i = buckets.length;
298                while (i--) {
299                    buckets[i][bucketFuncName](aggregated);
300                }
301                return aggregated;
302            };
303        };
304
305        this.keys = createBucketAggregator("keys");
306        this.values = createBucketAggregator("values");
307        this.entries = createBucketAggregator("getEntries");
308
309        this.remove = function (key) {
310            checkKey(key);
311
312            var hash = hashCode(key), bucketIndex, oldValue = null;
313
314            // Check if a bucket exists for the bucket key
315            var bucket = getBucketForHash(bucketsByHash, hash);
316
317            if (bucket) {
318                // Remove entry from this bucket for this key
319                oldValue = bucket.removeEntryForKey(key);
320                if (oldValue !== null) {
321                    // Entry was removed, so check if bucket is empty
322                    if (bucket.entries.length == 0) {
323                        // Bucket is empty, so remove it from the bucket collections
324                        bucketIndex = searchBuckets(buckets, hash);
325                        buckets.splice(bucketIndex, 1);
326                        delete bucketsByHash[hash];
327                    }
328                }
329            }
330            return oldValue;
331        };
332
333        this.size = function () {
334            var total = 0, i = buckets.length;
335            while (i--) {
336                total += buckets[i].entries.length;
337            }
338            return total;
339        };
340    }
341
342    Hashtable.prototype = {
343        each: function (callback) {
344            var entries = this.entries(), i = entries.length, entry;
345            while (i--) {
346                entry = entries[i];
347                callback(entry[0], entry[1]);
348            }
349        },
350
351        equals: function (hashtable) {
352            var keys, key, val, count = this.size();
353            if (count == hashtable.size()) {
354                keys = this.keys();
355                while (count--) {
356                    key = keys[count];
357                    val = hashtable.get(key);
358                    if (val === null || val !== this.get(key)) {
359                        return false;
360                    }
361                }
362                return true;
363            }
364            return false;
365        },
366
367        putAll: function (hashtable, conflictCallback) {
368            var entries = hashtable.entries();
369            var entry, key, value, thisValue, i = entries.length;
370            var hasConflictCallback = (typeof conflictCallback == FUNCTION);
371            while (i--) {
372                entry = entries[i];
373                key = entry[0];
374                value = entry[1];
375
376                // Check for a conflict. The default behaviour is to overwrite the value for an existing key
377                if (hasConflictCallback && (thisValue = this.get(key))) {
378                    value = conflictCallback(key, thisValue, value);
379                }
380                this.put(key, value);
381            }
382        },
383
384        clone: function () {
385            var clone = new Hashtable(this.properties);
386            clone.putAll(this);
387            return clone;
388        }
389    };
390
391    Hashtable.prototype.toQueryString = function () {
392        var entries = this.entries(), i = entries.length, entry;
393        var parts = [];
394        while (i--) {
395            entry = entries[i];
396            parts[i] = encodeURIComponent(toStr(entry[0])) + "=" + encodeURIComponent(toStr(entry[1]));
397        }
398        return parts.join("&");
399    };
400
401    return Hashtable;
402})();
403function startsWith(c,d){return(c.indexOf(d)===0)
404}function DomDataCollection(n){var j=this;
405j.config={recursion_level:1,collection_mode:"partial",functionsToExclude:[],function_list_size:1024,json_script:n?n:"json2.js"};
406j.emptyDomData=function(){j.dom_data={functions:{names:[],excluded:{size:0,count:0},truncated:false},inputs:[],iFrames:[],scripts:[],collection_status:DomDataCollection.NotStarted}
407};
408j.startInspection=function(){var b=false;
409var c=true;
410BrowserDetect.init();
411if(!(BrowserDetect.browser==="Explorer")){try{j.inspectJSFunctions();
412c=false
413}catch(a){b=b||true
414}}else{j.dom_data.functions=[];
415if(j.dom_data.functions===undefined||j.dom_data.functions.names===undefined){j.dom_data.functions={names:[],excluded:{size:0,count:0},truncated:false}
416}}try{j.inspectFrames();
417c=false
418}catch(a){b=b||true
419}try{j.inspectScripts();
420c=false
421}catch(a){b=b||true
422}try{j.inspectInputFields();
423c=false
424}catch(a){b=b||true
425}if(b){if(c){j.dom_data.collection_status=DomDataCollection.Fail
426}else{j.dom_data.collection_status=DomDataCollection.Partial
427}}else{j.dom_data.collection_status=DomDataCollection.Success
428}if(!(BrowserDetect.browser==="Explorer")){j.handleSizeLimit()
429}};
430j.domDataAsJSON=function(){return stripIllegalChars(JSON.stringify(j.dom_data))
431};
432j.recursiveGetAllFunctionNamesUnderElement=function(B,e,A){var C;
433var d;
434var g;
435var x=j.config;
436var D=x.recursion_level;
437var a=x.collection_mode;
438if(j.dom_data.functions===undefined||j.dom_data.functions.names===undefined){j.dom_data.functions={names:[],excluded:{size:0,count:0},truncated:false}
439}var f=j.dom_data.functions;
440var c=f.excluded;
441for(var E in e){try{var F=e[E];
442C=""+F;
443if(B.length>0){prefix=B+"."
444}else{prefix=""
445}d=prefix+E;
446if(k(F)){if(j.functionShouldBeCollected(F,E)){var G=f.names;
447g=G.length;
448G[g]=d
449}else{if(a=="partial"){c.size+=C.length;
450c.count++
451}}}if(A+1<D){j.recursiveGetAllFunctionNamesUnderElement(d,F,A+1)
452}else{f.names.sort()
453}}catch(b){if(!window.console){window.console={};
454window.console.info=o;
455window.console.log=o;
456window.console.warn=o;
457window.console.error=o
458}if(console&&console.log){console.log("error counting functions: "+b.toString())
459}}}};
460function o(){}function k(a){return typeof a=="function"
461}function h(a){return a.length
462}var l=new Hashtable();
463j.initFunctionsToExclude=function(){if(l){l.clear()
464}var a=j.config.functionsToExclude;
465var b=a.length;
466while(b--){l.put(a[b],"")
467}};
468j.functionShouldBeCollected=function m(a,b){if(j.config.collection_mode=="full"){return true
469}else{if(l.size()===0){j.initFunctionsToExclude()
470}if(l.containsKey(b)){return false
471}else{return true
472}}};
473j.inspectJSFunctions=function(){j.dom_data.functions=[];
474j.recursiveGetAllFunctionNamesUnderElement("",window,0)
475};
476j.handleSizeLimit=function(){var x=j.dom_data;
477var g=j.config;
478var v=g.function_list_size;
479var e=x.functions;
480e.names.sort();
481var b=JSON.stringify(x);
482if(v<0){v=0
483}var a=0;
484if(g.colllection_mode!="full"&&b.length>v){var c=e.names;
485var d=c.toString();
486var y=b.length-JSON.stringify(c).length+"[]".length;
487var f=false;
488var w=c.length;
489while(!f){if(a++==1000){f=true
490}lastComma=d.lastIndexOf(",");
491if(lastComma>=0&&w>0){quotation_marks=w*2;
492if(y+lastComma+quotation_marks>v){d=d.substring(0,lastComma-1);
493w--
494}else{f=true
495}}else{f=true
496}}if(w>1){e.truncated=true;
497e.names=e.names.slice(0,w-1);
498x.functions.truncated=true
499}else{j.emptyDomData();
500x=j.dom_data;
501x.collection_status=DomDataCollection.Partial;
502x.functions.truncated=true
503}}};
504j.inspectFrames=function(){j.countElements("iframe")
505};
506j.countElements=function(e){var d;
507var c=document.getElementsByTagName(e);
508if(j.dom_data.iFrames===undefined){j.dom_data.iFrames=[]
509}var b=j.dom_data.iFrames;
510var a=b.length;
511for(i=0;
512i<c.length;
513i++){b[a+i]=""+c[i].src
514}b.sort()
515};
516j.inspectScripts=function(){var b=document.getElementsByTagName("script");
517j.dom_data.scripts=[];
518for(var a=0;
519a<b.length;
520a++){j.dom_data.scripts[a]=b[a].text.length
521}};
522j.collectFields=function(b){var r=document.getElementsByTagName(b);
523if(j.dom_data.inputs===undefined){j.dom_data.inputs=[]
524}var e=j.dom_data.inputs;
525var g=e.length;
526var a=r.length;
527while(a--){var c=r[a];
528var d=c.name;
529var f=c.id;
530if(d&&d.length>0){element_name=d
531}else{if(f&&f.length>0){element_name=f
532}else{element_name="NO_NAME"
533}}e[g+a]=element_name
534}e.sort()
535};
536j.inspectInputFields=function(){j.collectFields("input");
537j.collectFields("textarea");
538j.collectFields("select");
539j.collectFields("button")
540};
541loadJSON=function(){if(!window.JSON){var a=document.getElementsByTagName("head")[0];
542var b=document.createElement("script");
543b.type="text/javascript";
544b.src=j.config.json_script;
545a.appendChild(b)
546}};
547j.emptyDomData();
548loadJSON()
549}DomDataCollection.Success=0;
550DomDataCollection.Fail=1;
551DomDataCollection.Partial=2;
552DomDataCollection.NotStarted=3;
553function IE_FingerPrint(){this.deviceprint_browser=function(){var a=navigator.userAgent.toLowerCase();
554t=a+SEP+navigator.appVersion+SEP+navigator.platform;
555t+=SEP+navigator.appMinorVersion+SEP+navigator.cpuClass+SEP+navigator.browserLanguage;
556t+=SEP+ScriptEngineBuildVersion();
557return t
558};
559this.deviceprint_software=function(){var b="";
560var l=true;
561try{document.body.addBehavior("#default#clientCaps");
562var k;
563var m=d.length;
564for(i=0;
565i<m;
566i++){k=activeXDetect(d[i]);
567var j=c[i];
568if(k){if(l===true){b+=j+PAIR+k;
569l=false
570}else{b+=SEP+j+PAIR+k
571}}else{b+="";
572l=false
573}}}catch(a){}return b
574};
575var c=["abk","wnt","aol","arb","chs","cht","dht","dhj","dan","dsh","heb","ie5","icw","ibe","iec","ieh","iee","jap","krn","lan","swf","shw","msn","wmp","obp","oex","net","pan","thi","tks","uni","vtc","vnm","mvm","vbs","wfd"];
576var d=["7790769C-0471-11D2-AF11-00C04FA35D02","89820200-ECBD-11CF-8B85-00AA005B4340","47F67D00-9E55-11D1-BAEF-00C04FC2D130","76C19B38-F0C8-11CF-87CC-0020AFEECF20","76C19B34-F0C8-11CF-87CC-0020AFEECF20","76C19B33-F0C8-11CF-87CC-0020AFEECF20","9381D8F2-0288-11D0-9501-00AA00B911A5","4F216970-C90C-11D1-B5C7-0000F8051515","283807B5-2C60-11D0-A31D-00AA00B92C03","44BBA848-CC51-11CF-AAFA-00AA00B6015C","76C19B36-F0C8-11CF-87CC-0020AFEECF20","89820200-ECBD-11CF-8B85-00AA005B4383","5A8D6EE0-3E18-11D0-821E-444553540000","630B1DA0-B465-11D1-9948-00C04F98BBC9","08B0E5C0-4FCB-11CF-AAA5-00401C608555","45EA75A0-A269-11D1-B5BF-0000F8051515","DE5AED00-A4BF-11D1-9948-00C04F98BBC9","76C19B30-F0C8-11CF-87CC-0020AFEECF20","76C19B31-F0C8-11CF-87CC-0020AFEECF20","76C19B50-F0C8-11CF-87CC-0020AFEECF20","D27CDB6E-AE6D-11CF-96B8-444553540000","2A202491-F00D-11CF-87CC-0020AFEECF20","5945C046-LE7D-LLDL-BC44-00C04FD912BE","22D6F312-B0F6-11D0-94AB-0080C74C7E95","3AF36230-A269-11D1-B5BF-0000F8051515","44BBA840-CC51-11CF-AAFA-00AA00B6015C","44BBA842-CC51-11CF-AAFA-00AA00B6015B","76C19B32-F0C8-11CF-87CC-0020AFEECF20","76C19B35-F0C8-11CF-87CC-0020AFEECF20","CC2A9BA0-3BDD-11D0-821E-444553540000","3BF42070-B3B1-11D1-B5C5-0000F8051515","10072CEC-8CC1-11D1-986E-00A0C955B42F","76C19B37-F0C8-11CF-87CC-0020AFEECF20","08B0E5C0-4FCB-11CF-AAA5-00401C608500","4F645220-306D-11D2-995D-00C04F98BBC9","73FA19D0-2D75-11D2-995D-00C04F98BBC9"]
577}IE_FingerPrint.prototype=new FingerPrint();
578function Mozilla_FingerPrint(){}Mozilla_FingerPrint.prototype=new FingerPrint();
579function Opera_FingerPrint(){}Opera_FingerPrint.prototype=new FingerPrint();
580function Timer(){this.startTime=new Date().getTime()
581}Timer.prototype.start=function(){this.startTime=new Date().getTime()
582};
583Timer.prototype.duration=function(){return(new Date().getTime())-this.startTime
584};
585function randrange(n,k){var r=k-n;
586if(r<=0){throw new Exception("max must be larger than min")
587}var m=Math.ceil(Math.log2(r)/8);
588var o=Math.pow(256,m);
589var j=new Uint8Array(m);
590while(true){window.crypto.getRandomValues(j);
591var l=0;
592for(var q=0;
593q<m;
594q++){l=(l<<8)+j[q]
595}if(l+r-(l%r)<o){return n+(l%r)
596}}}function detectIE(){var k=window.navigator.userAgent;
597var f=k.indexOf("MSIE ");
598if(f>0){return parseInt(k.substring(f+5,k.indexOf(".",f)),10)
599}var g=k.indexOf("Trident/");
600if(g>0){var h=k.indexOf("rv:");
601return parseInt(k.substring(h+3,k.indexOf(".",h)),10)
602}var j=k.indexOf("Edge/");
603if(j>0){return parseInt(k.substring(j+5,k.indexOf(".",j)),10)
604}return false
605}function getRandomPort(){var d=detectIE();
606if(d==false){var c=randrange(4000,60000);
607return c
608}else{return Math.floor(Math.random()*60000+4000)
609}}var ProxyCollector={};
610ProxyCollector.internalIP="127.0.0.1";
611ProxyCollector.externalIP;
612ProxyCollector.internalPingTime;
613ProxyCollector.externalPingTime;
614ProxyCollector.setInternalPingTime=function(b){ProxyCollector.internalPingTime=b
615};
616ProxyCollector.setExternalPingTime=function(b){ProxyCollector.externalPingTime=b
617};
618ProxyCollector.PROXY_DETECTION_TIMEOUT=5000;
619ProxyCollector.TIMEOUT_CHECK_FREQUENCY=1000;
620ProxyCollector.isTimedOut=function(d,e,f){_timer=new Timer();
621if((e-_timer.duration()<=0)&&(((typeof ProxyCollector.internalPingTime==="undefined")&&((new RegExp("internalPingTime")).test(d)))||((typeof ProxyCollector.externalPingTime==="undefined")&&((new RegExp("externalPingTime")).test(d))))){d.call(this,-1);
622f.abort()
623}else{if(((typeof ProxyCollector.internalPingTime==="undefined")&&((new RegExp("internalPingTime")).test(d)))||((typeof ProxyCollector.externalPingTime==="undefined")&&((new RegExp("externalPingTime")).test(d)))){setTimeout(function(){ProxyCollector.isTimedOut(d,e-(_timer.duration()+ProxyCollector.TIMEOUT_CHECK_FREQUENCY),f)
624},ProxyCollector.TIMEOUT_CHECK_FREQUENCY)
625}}};
626ProxyCollector.doAjax=function(l,n){var m=document.location.protocol;
627if(m=="http:"||m=="https:"){var k=m+"//"+l+":"+getRandomPort()+"/NonExistentImage"+getRandomPort()+".gif"
628}else{n.call(this,-1);
629o.abort()
630}var o;
631var r;
632if(window.XDomainRequest){o=new window.XDomainRequest();
633r=new Timer();
634try{o.timeout=ProxyCollector.PROXY_DETECTION_TIMEOUT;
635o.ontimeout=function(){n.call(this,-1);
636o.abort()
637};
638o.onprogress=function(){n.call(this,r.duration());
639o.abort()
640};
641o.onerror=function(){n.call(this,r.duration());
642o.abort()
643};
644o.open("GET",k,true);
645o.send()
646}catch(j){ProxyCollector.doAjaxViaImage(n,k)
647}}else{o=new XMLHttpRequest();
648var q="ontimeout" in o;
649r=new Timer();
650try{o.onreadystatechange=function(){if(o.readyState==4){if(((typeof ProxyCollector.internalPingTime==="undefined")&&((new RegExp("internalPingTime")).test(n)))||((typeof ProxyCollector.externalPingTime==="undefined")&&((new RegExp("externalPingTime")).test(n)))){n.call(this,r.duration())
651}}};
652o.timeout=ProxyCollector.PROXY_DETECTION_TIMEOUT;
653o.ontimeout=function(){n.call(this,-1);
654o.abort()
655};
656o.open("GET",k,true);
657o.send();
658if(!q){ProxyCollector.isTimedOut(n,ProxyCollector.PROXY_DETECTION_TIMEOUT-r.duration(),o)
659}}catch(j){ProxyCollector.doAjaxViaImage(n,k)
660}}};
661ProxyCollector.doAjaxViaImage=function(g,e){var f=new Image();
662var h=new Timer();
663f.onerror=function(){g.call(this,h.duration())
664};
665f.src=e
666};
667ProxyCollector.collect=function(){ProxyCollector.doAjax(ProxyCollector.externalIP,ProxyCollector.setExternalPingTime);
668if(typeof XDomainRequest=="object"){if(!ProxyCollector.externalPingTime){forceIE89Synchronicity()
669}}else{ProxyCollector.doAjax(ProxyCollector.internalIP,ProxyCollector.setInternalPingTime)
670}};
671forceIE89Synchronicity=function(){if(!ProxyCollector.externalPingTime){setTimeout(forceIE89Synchronicity,100)
672}else{ProxyCollector.doAjax(ProxyCollector.internalIP,ProxyCollector.setInternalPingTime)
673}};
674ProxyCollector.isValidIPAddress=function(h){var e=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
675if(e.test(h)){var g=h.split(".");
676if(parseInt(parseFloat(g[0]))==0){return false
677}for(var f=0;
678f<g.length;
679f++){if(parseInt(parseFloat(g[f]))>255){return false
680}}return true
681}else{return false
682}};
683ProxyCollector.initProxyCollection=function(){if(ProxyCollector.isValidIPAddress(ProxyCollector.externalIP)&&ProxyCollector.isValidIPAddress(ProxyCollector.internalIP)){ProxyCollector.collect()
684}};
685function BlackberryLocationCollector(){var m=this;
686var q=null;
687this.getGeolocationWatchId=function(){return q
688};
689var n=null;
690this.getGeolocationLastPosition=function(){return n
691};
692var r=4;
693this.getGeolocationStatusCode=function(){return r
694};
695var l="";
696this.getGeolocationErrorMessage=function(){return l
697};
698var k={aidMode:2,timeout:180,relevancy:120,expiration:48,alertDebug:false};
699var o=-1;
700var j=0;
701this.getInvokeCount=function(){return j
702};
703this.handleBlackBerryLocationTimeout=function(){if(o!=-1){m.stopWatch();
704r=3;
705if(j===0&&k.aidMode!==0){j++;
706m.startLocationWatch()
707}}};
708this.handlePosition=function(){clearTimeout(o);
709o=-1;
710var c=false;
711if(blackberry.location.latitude===0&&blackberry.location.longitude===0){if(k.alertDebug){alert("Got empty position")
712}if(n===null){r=2
713}}else{var a=null;
714if(blackberry.location.timestamp){a=getTimestampInMillis(blackberry.location.timestamp)
715}else{a=new Date().getTime()
716}var b=new Date().getTime();
717if((b-a)<=(k.expiration*60*60*1000)){if(n===null||a>n.timestamp){var d=n===null?0:n.timestamp;
718if(k.alertDebug){alert("Saved new position. New timestamp: "+a+" Old: "+d)
719}n={timestamp:a,coords:{latitude:blackberry.location.latitude,longitude:blackberry.location.longitude}};
720r=0
721}else{if(k.alertDebug){alert("New position is not saved. New timestamp: "+a+" Old: "+n.timestamp)
722}}}else{if(k.alertDebug){alert("New position is not saved. It is expired: "+((b-a)*1000*60*60)+" hours old")
723}}}if(n!==null){var b=new Date().getTime();
724c=(b-n.timestamp)<(k.relevancy*1000)
725}m.stopWatch();
726if(k.alertDebug){alert("Relevant position? "+c)
727}if((j===0&&k.aidMode!==0)||!c){j++;
728m.startLocationWatch()
729}};
730this.init=function(a,b,d,c){if(a>=0&&a<=2){k.aidMode=a
731}if(b!==null&&b>=90&&b<=300){k.timeout=b
732}if(d!==null&&d>=60&&d<=240){k.relevancy=d
733}if(c!==null&&c>=24&&c<=60){k.expiration=c
734}};
735this.startLocationWatch=function(){if(j===0){blackberry.location.setAidMode(0)
736}else{blackberry.location.setAidMode(k.aidMode)
737}var a=k.timeout*1000;
738o=setTimeout("geoLocator.handleBlackBerryLocationTimeout()",a);
739blackberry.location.onLocationUpdate(m.handlePosition);
740blackberry.location.refreshLocation();
741q=1;
742return true
743};
744this.stopWatch=function(){try{blackberry.location.removeLocationUpdate(m.handlePosition)
745}catch(a){}q=-2
746};
747this.generateGeolocationJSONStruct=function(){var b=null;
748if(n!==null){var a=convertTimestampToGMT(n.timestamp);
749b={GeoLocationInfo:[{Status:r,Longitude:n.coords.longitude,Latitude:n.coords.latitude,Timestamp:a}]}
750}else{b={GeoLocationInfo:[{Status:r}]}
751}return JSON.stringify(b)
752}
753}function detectFields(){var u="form";
754var n="input";
755var j=document.getElementsByTagName("form");
756var w=j.length;
757var m;
758var v;
759var q=[];
760q.push("url="+window.location.href);
761for(var r=0;
762r<w;
763r++){q.push(u+"="+j[r].name);
764m=j[r].getElementsByTagName("input");
765v=m.length;
766for(var s=0;
767s<v;
768s++){if(m[s].type!="hidden"){q.push(n+"="+m[s].name)
769}}}var o=q.join("|");
770return o
771}var SEP="|";
772var PAIR="=";
773var DEV="~";
774function FingerPrint(){var d="3.6_1";
775var c=new Hashtable();
776c.put("npnul32","def");
777c.put("npqtplugin6","qt6");
778c.put("npqtplugin5","qt5");
779c.put("npqtplugin4","qt4");
780c.put("npqtplugin3","qt3");
781c.put("npqtplugin2","qt2");
782c.put("npqtplugin","qt1");
783c.put("nppdf32","pdf");
784c.put("NPSWF32","swf");
785c.put("NPJava11","j11");
786c.put("NPJava12","j12");
787c.put("NPJava13","j13");
788c.put("NPJava32","j32");
789c.put("NPJava14","j14");
790c.put("npoji600","j61");
791c.put("NPJava131_16","j16");
792c.put("NPOFFICE","mso");
793c.put("npdsplay","wpm");
794c.put("npwmsdrm","drm");
795c.put("npdrmv2","drn");
796c.put("nprjplug","rjl");
797c.put("nppl3260","rpl");
798c.put("nprpjplug","rpv");
799c.put("npchime","chm");
800c.put("npCortona","cor");
801c.put("np32dsw","dsw");
802c.put("np32asw","asw");
803c.put("internal-pdf-viewer","pdf");
804c.put("mhjfbmdgcfjbbpaeojofohoefgiehjai","pdf");
805c.put("internal-nacl-plugin","nacl");
806c.put("widevinecdmadapter","dll");
807c.put("Flash","flash");
808c.put("npctrl","dll");
809this.deviceprint_version=function(){return d
810};
811this.deviceprint_browser=function(){var a=navigator.userAgent.toLowerCase();
812var b=a+SEP+navigator.appVersion+SEP+navigator.platform;
813return b
814};
815this.deviceprint_software=function(){var a="";
816var q=true;
817var b="";
818var n="";
819var s=navigator.plugins;
820var o=navigator.mimeTypes;
821if(s.length>0){var r="";
822var u="Plugins";
823var m=s.length;
824for(i=0;
825i<m;
826i++){plugin=s[i];
827r=stripFullPath(plugin.filename,u,".");
828if(q===true){n=c.containsKey(r);
829if(n){b+=c.get(r);
830q=false
831}else{b="";
832q=false
833}}else{n=c.containsKey(r);
834if(n){b+=SEP+c.get(r)
835}else{b+=""
836}}}a=stripIllegalChars(b)
837}else{if(o.length>0){n="";
838for(i=0;
839i<o.length;
840i++){mimeType=o[i];
841if(q===true){n=c.containsKey(mimeType);
842if(n){a+=c.get(mimeType)+PAIR+mimeType;
843q=false
844}
844else{a+="unknown"+PAIR+mimeType;
845q=false
846}}else{n=c.containsKey(mimeType);
847if(n){a+=SEP+c.get(mimeType)+PAIR+mimeType
848}else{b+=""
849}}}}}return a
850};
851this.deviceprint_display=function(){var a="";
852if(self.screen){a+=screen.colorDepth+SEP+screen.width+SEP+screen.height+SEP+screen.availHeight
853}return a
854};
855this.deviceprint_all_software=function(){var m="";
856var r=true;
857var q=navigator.plugins;
858var b=q.length;
859if(b>0){var o="";
860var a="";
861var n="";
862for(i=0;
863i<b;
864i++){var l=q[i];
865a=l.filename;
866a=stripFullPath(a,"Plugins",".");
867if(r===true){o+=a;
868r=false
869}else{o+=SEP+a
870}}m=stripIllegalChars(o)
871}return m
872};
873this.deviceprint_timezone=function(){var a=(new Date().getTimezoneOffset()/60)*(-1);
874var b=new Date();
875if(b.deviceprint_dst()){a--
876}else{}return a
877};
878Date.prototype.deviceprint_stdTimezoneOffset=function(){var b=new Date(this.getFullYear(),0,1);
879var a=new Date(this.getFullYear(),6,1);
880return Math.max(b.getTimezoneOffset(),a.getTimezoneOffset())
881};
882Date.prototype.deviceprint_dst=function(){return this.getTimezoneOffset()<this.deviceprint_stdTimezoneOffset()
883};
884this.deviceprint_language=function(){var j;
885var a=navigator.language;
886var k=navigator.browserLanguage;
887var b=navigator.systemLanguage;
888var h=navigator.userLanguage;
889if(typeof(a)!=="undefined"){j="lang"+PAIR+a+SEP
890}else{if(typeof(k)!=="undefined"){j="lang"+PAIR+k+SEP
891}else{j="lang"+PAIR+""+SEP
892}}if((typeof(b)!=="undefined")){j+="syslang"+PAIR+b+SEP
893}else{j+="syslang"+PAIR+""+SEP
894}if((typeof(h)!=="undefined")){j+="userlang"+PAIR+h
895}else{j+="userlang"+PAIR+""
896}return j
897};
898this.deviceprint_java=function(){var a=(navigator.javaEnabled())?1:0;
899return a
900};
901this.deviceprint_cookie=function(){var a=(navigator.cookieEnabled)?1:0;
902if(typeof navigator.cookieEnabled==="undefined"&&!a){document.cookie="testcookie";
903a=(document.cookie.indexOf("testcookie")!==-1)?1:0
904}return a
905};
906this.deviceprint_appName=function(){var a=navigator.appName;
907return(typeof(a)!="undefined")?a:""
908};
909this.deviceprint_appCodeName=function(){var a=navigator.appCodeName;
910return(typeof(a)!="undefined")?a:""
911};
912this.deviceprint_online=function(){var a=navigator.onLine;
913return(typeof(a)!="undefined")?a:""
914};
915this.deviceprint_opsProfile=function(){var a=navigator.opsProfile;
916return((typeof(a)!="undefined")&&(a!==null))?a:""
917};
918this.deviceprint_userProfile=function(){var a=navigator.userProfile;
919return((typeof(a)!="undefined")&&(a!==null))?a:""
920};
921this.deviceprint_screen_availWidth=function(){var a=screen.availWidth;
922return(typeof(a)!="undefined")?a:""
923};
924this.deviceprint_screen_pixelDepth=function(){var a=screen.pixelDepth;
925return(typeof(a)!="undefined")?a:""
926};
927this.deviceprint_screen_bufferDepth=function(){var a=screen.bufferDepth;
928return(typeof(a)!="undefined")?a:""
929};
930this.deviceprint_screen_deviceXDPI=function(){var a=screen.deviceXDPI;
931return(typeof(a)!="undefined")?a:""
932};
933this.deviceprint_screen_deviceYDPI=function(){var a=screen.deviceYDPI;
934return(typeof(a)!="undefined")?a:""
935};
936this.deviceprint_screen_logicalXDPI=function(){var a=screen.logicalXDPI;
937return(typeof(a)!="undefined")?a:""
938};
939this.deviceprint_screen_logicalYDPI=function(){var a=screen.logicalYDPI;
940return(typeof(a)!="undefined")?a:""
941};
942this.deviceprint_screen_fontSmoothingEnabled=function(){var a=screen.fontSmoothingEnabled;
943return(typeof(a)!="undefined")?a:""
944};
945this.deviceprint_screen_updateInterval=function(){var a=screen.updateInterval;
946return(typeof(a)!="undefined")?a:""
947};
948this.deviceprint_ping_in=function(){if(ProxyCollector&&ProxyCollector.internalPingTime){return ProxyCollector.internalPingTime
949}else{return""
950}};
951this.deviceprint_ping_ex=function(){if(ProxyCollector&&ProxyCollector.externalPingTime){return ProxyCollector.externalPingTime
952}else{return""
953}}
954}function urlEncode(c){var d=encodeURIComponent(c).replace(/\~/g,"%7E").replace(/\!/g,"%21").replace(/\*/g,"%2A").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\'/g,"%27").replace(/\-/g,"%2D").replace(/\_/g,"%5F").replace(/\./g,"%2E");
955return d
956}function encode_deviceprint(){var b=add_deviceprint();
957return urlEncode(b)
958}function decode_deviceprint(){var b=encode_deviceprint;
959return decodeURIComponent(urlEncode(b))
960}function post_deviceprint(){document.forms[0].pm_fp.value=encode_deviceprint();
961return true
962}function post_fingerprints(b){b.deviceprint.value=encode_deviceprint()
963}function add_deviceprint(){BrowserDetect.init();
964var d;
965switch(BrowserDetect.browser){case"Explorer":var e=detectIE();
966d=new IE_FingerPrint();
967if(e>10){d=new FingerPrint()
968}else{d=new IE_FingerPrint()
969}break;
970case"Firefox":d=new Mozilla_FingerPrint();
971break;
972case"Opera":d=new Opera_FingerPrint();
973break;
974case"Edge":var e=detectIE();
975if(e>10){d=new FingerPrint()
976}else{d=new IE_FingerPrint()
977}break;
978default:d=new FingerPrint()
979}var f="version="+d.deviceprint_version()+"&pm_fpua="+d.deviceprint_browser()+"&pm_fpsc="+d.deviceprint_display()+"&pm_fpsw="+d.deviceprint_software()+"&pm_fptz="+d.deviceprint_timezone()+"&pm_fpln="+d.deviceprint_language()+"&pm_fpjv="+d.deviceprint_java()+"&pm_fpco="+d.deviceprint_cookie();
980f=f+"&pm_fpasw="+d.deviceprint_all_software();
981f=f+"&pm_fpan="+d.deviceprint_appName()+"&pm_fpacn="+d.deviceprint_appCodeName()+"&pm_fpol="+d.deviceprint_online()+"&pm_fposp="+d.deviceprint_opsProfile()+"&pm_fpup="+d.deviceprint_userProfile()+"&pm_fpsaw="+d.deviceprint_screen_availWidth()+"&pm_fpspd="+d.deviceprint_screen_pixelDepth()+"&pm_fpsbd="+d.deviceprint_screen_bufferDepth()+"&pm_fpsdx="+d.deviceprint_screen_deviceXDPI()+"&pm_fpsdy="+d.deviceprint_screen_deviceYDPI()+"&pm_fpslx="+d.deviceprint_screen_logicalXDPI()+"&pm_fpsly="+d.deviceprint_screen_logicalYDPI()+"&pm_fpsfse="+d.deviceprint_screen_fontSmoothingEnabled()+"&pm_fpsui="+d.deviceprint_screen_updateInterval();
982f=f+"&pm_os="+BrowserDetect.OS+"&pm_brmjv="+parseInt(BrowserDetect.version,10)+"&pm_br="+BrowserDetect.browser;
983f=f+"&pm_inpt="+d.deviceprint_ping_in()+"&pm_expt="+d.deviceprint_ping_ex();
984return f
985}function form_add_data(d,e,f){if(d&&d.length>0){d+="&"
986}else{d=""
987}d+=e+"="+escape(f.toString());
988return d
989}function form_add_deviceprint(d,e,f){d=form_add_data(d,e+"d",f);
990return d
991}function detectIE(){var k=window.navigator.userAgent;
992var f=k.indexOf("MSIE ");
993if(f>0){return parseInt(k.substring(f+5,k.indexOf(".",f)),10)
994}var g=k.indexOf("Trident/");
995if(g>0){var h=k.indexOf("rv:");
996return parseInt(k.substring(h+3,k.indexOf(".",h)),10)
997}var j=k.indexOf("Edge/");
998if(j>0){return parseInt(k.substring(j+5,k.indexOf(".",j)),10)
999}return false
1000}var HTML5="HTML5";
1001var BLACKBERRY="blackberry";
1002var UNDEFINED="undefined";
1003var GEO_LOCATION_DEFAULT_STRUCT='{"GeoLocationInfo":[{"Status":4}]}';
1004var geoLocator=null;
1005var geoLocatorStatus=false;
1006function detectDeviceCollectionAPIMode(){if(typeof(navigator.geolocation)!=UNDEFINED){return HTML5
1007}else{if(typeof(window.blackberry)!=UNDEFINED&&blackberry.location.GPSSupported){return BLACKBERRY
1008}else{return UNDEFINED
1009}}}function init(j,k,h,g,l){var m=detectDeviceCollectionAPIMode();
1010if(m==HTML5){geoLocator=new HTML5LocationCollector();
1011geoLocator.init(j,k,h,g);
1012return true
1013}else{if(m==BLACKBERRY){geoLocator=new BlackberryLocationCollector();
1014geoLocator.init(l,k,h,g);
1015return true
1016}}return false
1017}function startCollection(h,j,g,f,k){geoLocatorStatus=init(h,j,g,f,k);
1018if(geoLocatorStatus){return geoLocator.startLocationWatch()
1019}else{return false
1020}}function stopCollection(){if(geoLocatorStatus){geoLocator.stopWatch()
1021}}function getGeolocationStruct(){if(geoLocatorStatus){return geoLocator.generateGeolocationJSONStruct()
1022}else{return GEO_LOCATION_DEFAULT_STRUCT
1023}}function HTML5LocationCollector(){var k=this;
1024var m=-1;
1025this.getGeolocationWatchId=function(){return m
1026};
1027var l=null;
1028this.getGeolocationLastPosition=function(){return l
1029};
1030var g=4;
1031this.getGeolocationStatusCode=function(){return g
1032};
1033var j="";
1034this.getGeolocationErrorMessage=function(){return j
1035};
1036var h={accuracy:100,timeout:180,relevancy:120,expiration:48};
1037this.getGeolocationConfig=function(){return h
1038};
1039this.startLocationWatch=function(){var a={enableHighAccuracy:true,timeout:(h.timeout*1000),maximumAge:h.expiration};
1040if(navigator.geolocation){m=navigator.geolocation.watchPosition(this.handlePosition,this.handleError,a);
1041return true
1042}else{g=4
1043}return false
1044};
1045this.init=function(a,b,d,c){if(a!==null&&a>=0&&a<=200){h.accuracy=a
1046}if(b!==null&&b>=90&&b<=300){h.timeout=b
1047}if(d!==null&&d>=60&&d<=240){h.relevancy=d
1048}if(c!==null&&c>=24&&c<=60){h.expiration=c
1049}};
1050this.handlePosition=function(d){var c=new Date().getTime();
1051var b=getTimestampInMillis(d.timestamp);
1052if((c-b)<=(h.expiration*60*60*1000)){if(l===null||d.timestamp>l.timestamp||d.coords.accuracy<l.coords.accuracy){l=d;
1053g=0
1054}}if(l!==null){var a=c-l.timestamp;
1055if(a<=(h.relevancy*1000)&&l.coords.accuracy<=h.accuracy){k.stopWatch()
1056}}};
1057this.generateGeolocationJSONStruct=function(){var b=null;
1058if(l!==null){var a=convertTimestampToGMT(l.timestamp);
1059b={GeoLocationInfo:[{Status:g,Longitude:l.coords.longitude,Latitude:l.coords.latitude,Altitude:Math.round(l.coords.altitude),HorizontalAccuracy:Math.round(l.coords.accuracy),AltitudeAccuracy:Math.round(l.coords.altitudeAccuracy),Heading:Math.round(l.coords.heading),Speed:Math.round(l.coords.speed),Timestamp:a}]}
1060}else{b={GeoLocationInfo:[{Status:g}]}
1061}return JSON.stringify(b)
1062};
1063this.handleError=function(a){switch(a.code){case a.TIMEOUT:k.stopWatch();
1064g=3;
1065break;
1066case a.POSITION_UNAVAILABLE:g=2;
1067j=a.message;
1068break;
1069case a.PERMISSION_DENIED:g=1;
1070break;
1071case a.UNKNOWN_ERROR:g=2;
1072j=a.message;
1073break
1074}};
1075this.stopWatch=function(){navigator.geolocation.clearWatch(m);
1076m=-2
1077}
1078}var TimestampCollector=(function(){var z;
1079var u;
1080var r;
1081var s;
1082var w=1;
1083var v="";
1084window.onfocus=function(){u=true
1085};
1086window.onblur=function(){u=false
1087};
1088var n=function(){while(true){if(new Date().getUTCMilliseconds()==0){return
1089}}};
1090var q=function(){var c=z;
1091n();
1092var b=new Date();
1093if(b.getSeconds()%c==0){var a=y(b,u,r());
1094A(a);
1095return
1096}};
1097var x=function(a,b,c){v=encode_deviceprint();
1098z=c;
1099u;
1100r=a;
1101s=b;
1102if(z!=1&&z!=2&&z!=5&&z!=10){z=5
1103}setInterval(q,995)
1104};
1105var A=function(b){if(b&&b.userLoginName){if(window.XMLHttpRequest&&window.JSON){var a=new XMLHttpRequest();
1106a.open("POST",s);
1107if(w!=0){w=2
1108}a.setRequestHeader("Content-Type","application/json");
1109a.send(JSON.stringify(b));
1110a.onloadend=function(){if(a.status==204){w=0
1111}else{if(w!=0){w=3
1112}}if(typeof debugCollection!="undefined"&&debugCollection){console.log(JSON.stringify(b));
1113console.log("browserEvent returned with status code:"+w)
1114}}
1115}}else{if(typeof debugCollection!="undefined"&&debugCollection){console.log("User did not provide any user login name, reporting aborted.")
1116}}};
1117var y=function(a,c,b){var d={};
1118d.deviceId=v;
1119d.jsTime=a;
1120d.userLoginName=b;
1121d.url=window.location.href;
1122d.activeWindow=c;
1123return d
1124};
1125var o=function(){return w
1126};
1127return{startEventReporting:x,actualRestSending:A,getStatus:o}
1128})();
1129var UIEventCollector=(function(){var K=null;
1130var N=null;
1131var Y=null;
1132var M=null;
1133var F=["output_size_limit"];
1134O();
1135R();
1136function O(b){M={output_size_limit:1024,collection_mode:"partial"};
1137if(b){for(p in b){if(!(p._config===undefined)){var a=false;
1138for(var c=F.length-1;
1139c>=0;
1140c--){if(F[c]==p){found=true;
1141continue
1142}}if(!a){M[p]=b[p]
1143}}}}Y=false;
1144N=X();
1145K={elements:new UIElementList(),events:[],collection_status:0,toString:function(){return"RecordedData: {elements: "+this.elements+", events: "+this.events+"}"
1146}};
1147R()
1148}function J(){var c=V();
1149for(var a=0,b=c.length;
1150a<b;
1151a++){T(c[a])
1152}}function V(){var a=[];
1153var e=document.getElementsByTagName("input");
1154for(var b=0,c=e.length;
1155b<c;
1156b++){var d=e[b];
1157if(G(d)){a.push(d)
1158}}return a
1159}function G(b){if(b.tagName&&b.tagName.toLowerCase()=="input"){var a=b.getAttribute("type");
1160if(a=="text"||a=="checkbox"||a=="checkbox"){return true
1161}}return false
1162}function X(){var a=(document.createEvent)?document.createEvent("Event"):document.createEventObject();
1163var b=a.timeStamp||new Date();
1164b=new Date(b);
1165if(b.getYear()>2100){b=new Date(b/1000)
1166}b=b.getTime();
1167return b
1168}function T(a){var b=null;
1169var c=K.elements;
1170var d=c.size();
1171var e=Z(a);
1172if(!K.elements.containsKey(e)){b=new InteractionElement();
1173b.id(e);
1174b.type(D(a));
1175b.length(a.value?a.value.length:0);
1176c.put(b)
1177}else{b=c.get(e)
1178}return b
1179}function P(d){var f=d||window.event;
1180var a=W(f);
1181if(G(a)){var b=T(a);
1182b.incrementEventCount();
1183var c=new UIEvent();
1184c.index(b.index());
1185c.type(aa(f));
1186var e=I(f);
1187c.offset(e-N);
1188K.events.push(c)
1189}return true
1190}function E(a){var b=a||window.event;
1191if(H(b)){var c={target:W(b),type:"paste"};
1192return P(c)
1193}else{return P(b)
1194}}function H(b){if(b.type=="keydown"){var a=b.which||b.charCode||b.keyCode;
1195var c=(typeof KeyboardEvent!="undefined"&&a==KeyboardEvent.DOM_VK_V)||a==118||a==86;
1196if(c&&(b.ctrlKey||b.metaKey)){return true
1197}}return false
1198}function W(a){return a.target?a.target:a.srcElement
1199}function I(b){var a;
1200if(b.timeStamp&&b.timeStamp!==0){a=b.timeStamp;
1201if(new Date(a).getYear()>2100){a=a/1000
1202}}else{a=new Date().getTime()
1203}return a
1204}function L(a){}function Q(){J();
1205var b=K.elements;
1206for(var e=b.size();
1207e>=1;
1208e--){var c=b.getByIndex(e);
1209var d=c.id();
1210var a=document.getElementById(d);
1211if(!a){var f=document.getElementsByName(d);
1212if(f.length>0){a=f[0]
1213}}if(a&&a.value){c.length(a.value.length)
1214}}}function S(d){var f=d||window.event;
1215var a=d.target;
1216if(a.nodeType==1){var c=a.getElementsByTagName("form");
1217for(var e=c.length-1;
1218e>=0;
1219e--){var b=c[e];
1220b.onsubmit=recordFormSubmitEvent
1221}}}function R(){var a=P;
1222var b=document;
1223if(b.addEventListener){b.addEventListener("keydown",E,false);
1224b.addEventListener("paste",a,false);
1225b.addEventListener("focus",a,true);
1226b.addEventListener("blur",a,true)
1227}else{if(b.attachEvent){b.onkeydown=E;
1228b.onfocusin=a;
1229b.onfocusout=a
1230}}}function U(){return private_config
1231}function aa(a){if(a.type=="keydown"){return UIEvent.KeyDown
1232}else{if(a.type=="submit"){return UIEvent.Submit
1233}else{if(a.type=="paste"){return UIEvent.Paste
1234}else{if(a.type=="focus"||a.type=="focusin"){return UIEvent.Focus
1235}else{if(a.type=="blur"||a.type=="focusout"){return UIEvent.Blur
1236}else{return UIEvent.Unknown
1237}}}}}}function C(a){if(a==UIEvent.KeyDown){return"keydown"
1238}else{if(a==UIEvent.Submit){return"submit"
1239}else{if(a==UIEvent.Focus){return"focus"
1240}else{if(a==UIEvent.Blur){return"blur"
1241}else{if(a==UIEvent.Paste){return"paste"
1242}else{return"unknown"
1243}}}}}}function D(a){return a.nodeName+(a.type?(":"+a.type):"")
1244}function Z(a){return a.id?a.id:(a.name?a.name:a.nodeName)
1245}return{addElement:function(a){return T(a)
1246},getEventType:function(a){return aa(a)
1247}
1247,getEventCode:function(a){return C(a)
1248},getRecordedData:function(){return K
1249},getElementType:function(a){return D(a)
1250},getElementId:function(a){return Z(a)
1251},initEventCollection:function(a){O(a)
1252},getConfig:function(){return M
1253},serialize:function(){Q();
1254var b=this.getRecordedData();
1255var l=b.elements;
1256var q=TimestampCollector.getStatus();
1257var B=[];
1258for(var d=0;
1259d<l.length;
1260d++){B[d]=false
1261}var A=b.events;
1262var o=b.collection_status;
1263var ad=this.getConfig().collection_mode=="partial";
1264var e=this.getConfig().output_size_limit;
1265var v=A.length;
1266var n="@";
1267var ae=";";
1268var af=",";
1269var f=2*n.length;
1270var c=(""+N)+af+(""+o)+af+(""+q);
1271var r=1;
1272f+=r;
1273f+=af.length;
1274f+=c.length;
1275var u="";
1276L("serializing elements ");
1277for(var m=l.size();
1278m>0;
1279m--){var a=l.getByIndex(m);
1280var h=a.serialize()+ae;
1281L("elementsStr.length: "+u.length);
1282if(ad&&((f+u.length+h.length)>e)){Y=true;
1283break
1284}var s=a.type().match("INPUT:checkbox");
1285if(s==null){if(a.length()>0&&a.eventCount()==0){L("collecting element without input: "+a);
1286u=h+u
1287}}}f+=u.length;
1288var y="";
1289L("serializing events ");
1290while(v--){var j=A[v];
1291var k=j.index();
1292var w=j.serialize()+ae;
1293var h=l.getByIndex(k).serialize()+ae;
1294var z=w.length;
1295if(!B[k]){z+=h.length
1296}L("eventsStr.length: "+y.length);
1297if(ad&&((f+y.length+z)>e)){Y=true;
1298break
1299}L("collecting event: "+j);
1300if(!B[k]){u=h+u;
1301f+=h.length;
1302L("also adding element event: "+h)
1303}B[k]=true;
1304y=w+y
1305}if(u.length>0){u=u.substring(0,u.length-1)
1306}if(y.length>0){y=y.substring(0,y.length-1)
1307}var g=Y?1:0;
1308var x=u+n+y+n+g+af+c;
1309return x
1310}}
1311})();
1312function UIEvent(){var b=(this===window)?{}:this;
1313b.index=function(a){if(arguments.length===0){return b._index
1314}else{b._index=arguments[0]
1315}};
1316b.offset=function(a){if(arguments.length===0){return b._offset
1317}else{b._offset=arguments[0]
1318}};
1319b.type=function(a){if(arguments.length===0){return b._type
1320}else{b._type=arguments[0]
1321}};
1322b.serialize=function(){var a=",";
1323var d="0";
1324return b.index()+a+b.type()+a+d
1325};
1326b.toString=function(){return"UIEvent: [index: "+b.index()+", type: "+b.type()+", offset: "+b.offset()+"]"
1327}
1328}UIEvent.Unknown=0;
1329UIEvent.KeyDown=1;
1330UIEvent.Submit=2;
1331UIEvent.Focus=3;
1332UIEvent.Blur=4;
1333UIEvent.Paste=5;
1334function InteractionElement(){var b=(this===window)?{}:this;
1335b._eventCount=0;
1336b.id=function(a){if(arguments.length===0){return b._id
1337}else{b._id=arguments[0]
1338}};
1339b.index=function(a){if(arguments.length===0){return b._index
1340}else{b._index=arguments[0]
1341}};
1342b.length=function(a){if(arguments.length===0){return b._length
1343}else{b._length=arguments[0]
1344}};
1345b.type=function(a){if(arguments.length===0){return b._type
1346}else{b._type=arguments[0]
1347}};
1348b.incrementEventCount=function(){b._eventCount++
1349};
1350b.eventCount=function(){return b._eventCount
1351};
1352b.serialize=function(){var a=",";
1353var d=b.index();
1354return b.index()+a+d+a+b.type()+a+b.length()
1355};
1356b.toString=function(){return"InteractionElement: [id: "+b.id()+", index: "+b.index()+", length: "+b.length()+", type: "+b.type()+"]"
1357}
1358}function UIElementList(){var e=(this===window)?{}:this;
1359var d=new Hashtable();
1360var f=new Hashtable();
1361e.get=function(a){return d.get(a)
1362};
1363e.getByIndex=function(a){return f.get(a)
1364};
1365e.containsKey=function(a){return d.containsKey(a)
1366};
1367e.indexByKey=function(a){return get(a).index()
1368};
1369e.size=function(){return d.size()
1370};
1371e.put=function(a){var b=a.id();
1372if(!d.containsKey(b)){d.put(b,a);
1373var c=d.size();
1374a.index(c);
1375f.put(c,a)
1376}};
1377e.toString=function(){return"[size: "+d.size()+", names: ["+d+"], indexes: ["+f+"]]"
1378}
1379}function activeXDetect(e){var f=null;
1380try{f=document.body.getComponentVersion("{"+e+"}","ComponentID")
1381}catch(d){}return(f!==null)?f:false
1382}function stripIllegalChars(h){t="";
1383h=h.toLowerCase();
1384var g=h.length;
1385for(var f=0;
1386f<g;
1387f++){var e=h.charAt(f);
1388if(e!="\n"&&e!="/"&&e!="\\"){t+=e
1389}else{if(e=="\n"){t+="n"
1390}}}return t
1391}function stripFullPath(k,n,m){var q=n;
1392var o=m;
1393var l=k;
1394var j=l.lastIndexOf(q);
1395if(j>=0){filenameLen=l.length;
1396l=l.substring(j+q.length,filenameLen)
1397}var r=l.indexOf(o);
1398if(r>=0){l=l.slice(0,r)
1399}return l
1400}var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"an unknown browser";
1401this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";
1402this.OS=this.searchString(this.dataOS)||"an unknown OS"
1403},searchString:function(l){var k=l.length;
1404for(var o=0;
1405o<k;
1406o++){var h=l[o];
1407var n=h.string;
1408var m=h.prop;
1409var j=h.identity;
1410this.versionSearchString=h.versionSearch||j;
1411if(n){if(n.toLowerCase().indexOf(h.subString.toLowerCase())!==-1){return j
1412}}else{if(m){return j
1413}}}},searchVersion:function(d){var e=d.toLowerCase().indexOf(this.versionSearchString.toLowerCase());
1414if(e===-1){return
1415}var f=d.substring(e+this.versionSearchString.length);
1416if(f.indexOf(" ")===0||f.indexOf("/")===0||f.indexOf(":")===0){f=f.substring(1)
1417}return parseFloat(f)
1418},dataBrowser:[{string:navigator.userAgent,subString:"edge",identity:"Edge"},{string:navigator.userAgent.toLowerCase(),subString:"opera",identity:"Opera",versionSearch:"version"},{string:navigator.userAgent,subString:"OPR",versionSearch:"OPR/",identity:"Opera"},{string:navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:navigator.userAgent,subString:"CriOS",versionSearch:"CriOS/",identity:"Chrome"},{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari",versionSearch:"Version"},{string:navigator.userAgent,subString:"mobile safari",identity:"Mobile Safari",versionSearch:"mobile safari"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent.toLocaleLowerCase(),subString:"blackberry",identity:"BlackBerry",versionSearch:"0/"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Trident",identity:"Explorer",versionSearch:"rv"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.userAgent,subString:"BlackBerry",identity:"BlackBerry"},{string:navigator.userAgent.toLowerCase(),subString:"android",identity:"Android"},{string:navigator.userAgent,subString:"Symbian",identity:"Symbian"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.userAgent,subString:"iPhone",identity:"iPhone/iPod"},{string:navigator.platform,subString:"Linux",identity:"Linux"},{string:navigator.userAgent,subString:"Windows CE",identity:"Windows CE"},{string:navigator.platform,subString:"Win",identity:"Windows"}]};
1419function convertTimestampToGMT(c){var d=c;
1420if(!(c instanceof Date)){d=new Date(c)
1421}offsetFromGmt=d.getTimezoneOffset()*60000;
1422return d.getTime()+offsetFromGmt
1423}function getTimestampInMillis(c){var d=c;
1424if(c instanceof Date){d=c.getTime()
1425}return d
1426}function debug(b){};
1427//!© 2016 Fiserv, Inc. or its affiliates. All rights reserved. This work, including its contents and programming, is confidential and its use is strictly limited. This work is furnished only for use by duly authorized licensees of Fiserv, Inc. or its affiliates, and their designated agents or employees responsible for installation or operation of the products. Any other use, duplication, or dissemination without the prior written consent of Fiserv, Inc. or its affiliates is strictly prohibited. Except as specified by the agreement under which the materials are furnished, Fiserv, Inc. and its affiliates do not accept any liabilities with respect to the information contained herein and is not responsible for any direct, indirect, special, consequential or exemplary damages resulting from the use of this information. No warranties, either express or implied, are granted or extended by this work or the delivery of this work.
1428var EBC;
1429(function (EBC) {
1430    var DevicePrint;
1431    (function (DevicePrint) {
1432        "use strict";
1433        var DevicePrintService = /** @class */ (function () {
1434            function DevicePrintService() {
1435                this.getDevicePrintValue = function () {
1436                    return encode_deviceprint();
1437                };
1438            }
1439            return DevicePrintService;
1440        }());
1441        DevicePrint.DevicePrintService = DevicePrintService;
1442        if (typeof angular === "object") {
1443            angular.module("EBC.DevicePrint", []).service("DevicePrintService", EBC.DevicePrint.DevicePrintService);
1444        }
1445    })(DevicePrint = EBC.DevicePrint || (EBC.DevicePrint = {}));
1446})(EBC || (EBC = {}));
1447
1448"use strict";
1449
1450var EBC = EBC || {};
1451
1452EBC.RemoteLogin = function(args) {
1453    var _this = this;
1454
1455    if(!args.applicationPath) { return; }
1456    if(!args.formId) { return; }
1457    if(!args.passwordId) { return; }
1458    if(!args.routingTransit) { return; }
1459    if(!args.usernameId) { return; }
1460
1461    _this._applicationPath = args.applicationPath;
1462    if(args.applicationPath.substr(args.applicationPath.length - 1) != "/") {
1463        _this._applicationPath += "/";
1464    }
1465
1466    _this._passwordElement = document.getElementById(args.passwordId);
1467    _this._formElement = document.getElementById(args.formId);
1468    _this._errorCallback = args.errorCallback;
1469    _this._routingTransit = args.routingTransit;
1470    _this._submitCallback = args.submitCallback;
1471    _this._profileNumber = args.profileNumber || null;
1472    _this._usernameElement = document.getElementById(args.usernameId);
1473    _this._devicePrintService = new EBC.DevicePrint.DevicePrintService;
1474
1475    _this._formElement.onsubmit = initialize;
1476
1477    function getEncryptedPassword(modulus, publicExponent, sessionId) {
1478        var cleanPassword = _this._passwordElement.value,
1479            encryptedPassword = null,
1480            rsaKey = new RSAKey();
1481
1482        rsaKey.setPublic(modulus, publicExponent);
1483        encryptedPassword = rsaKey.encrypt(sessionId + cleanPassword);
1484
1485        return encryptedPassword;
1486    }
1487
1488    function ajax(args, success, error) {
1489        if(!args.url) {
1490            return;
1491        }
1492
1493        var request = new XMLHttpRequest();
1494        request.onreadystatechange = function() {
1495            if(request.readyState == XMLHttpRequest.DONE) {
1496                if(request.status == 200) {
1497                    if(success && typeof (success) == "function") {
1498                        try {
1499                            success(JSON.parse(request.responseText));
1500                        } catch(ex) {
1501                            error();
1502                        }
1503                    }
1504                } else {
1505                    if(error && typeof (error) == "function") {
1506                        error();
1507                    }
1508                }
1509            }
1510        }
1511
1512        var async = args.async || true,
1513            method = args.method || "GET",
1514            url = _this._applicationPath + args.url;
1515
1516        request.open(method, url, async);
1517        request.withCredentials = true;
1518        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
1519
1520        if(!args.data) {
1521            request.send();
1522        } else {
1523            var data = "";
1524            data = Object.keys(args.data).map(function (k) {
1525                return encodeURIComponent(k) + '=' + encodeURIComponent(args.data[k])
1526            }).join('&');
1527
1528            request.send(data);
1529        }
1530    }
1531
1532    function initialize(event) {
1533        if(typeof (_this._submitCallback) == "function") {
1534            _this._submitCallback();
1535        }
1536
1537        var args = {
1538            method: "GET",
1539            url: "Login/RemoteInitialize/" + _this._routingTransit + (_this._profileNumber ? ("/" + _this._profileNumber) : "")
1540        };
1541
1542        ajax(args, submit, error);
1543
1544        return false;
1545    }
1546
1547    function submit(initializeResponse) {
1548        if(!initializeResponse.success) {
1549            error();
1550        }
1551
1552        var fingerprint = null;
1553
1554        if (typeof (_this._devicePrintService.getDevicePrintValue) == "function") {
1555            fingerprint = _this._devicePrintService.getDevicePrintValue();
1556        }
1557
1558        var username = _this._usernameElement.value;
1559        var password = _this._passwordElement.value;
1560
1561        var data = {
1562            username: username,
1563            password: password,
1564            devicePrintFingerprint: fingerprint,
1565            shouldRememberUser: false,
1566            __RequestVerificationToken: initializeResponse.antiForgeryToken
1567        };
1568
1569        var args = {
1570            method: "POST",
1571            url: "Login/SubmitRemote",
1572            data: data
1573        };
1574
1575        ajax(args, processSubmit, error);
1576    }
1577
1578    function processSubmit(response) {
1579        if(response.redirectURL) {
1580            window.location.href = response.redirectURL;
1581        } else {
1582            error();
1583        }
1584    }
1585
1586    function error() {
1587        if(typeof (_this._errorCallback) == "function") {
1588            _this._errorCallback();
1589        } else {
1590            window.location.href = _this._applicationPath + "Login/" + _this._routingTransit + (_this._profileNumber ? ("/" + _this._profileNumber) : "");
1591        }
1592    }
1593};

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.