PageSourceSearch

https://keonhacai14.net/wp-content/plugins/gwd-tlk-lite/assets/js/getview.js?ver=1791453855

js keonhacai14.net collected 2026-10-08 10:05:03 UTC 29,172 bytes, 473 lines download raw bytes

1jQuery(document).ready(function ($) {
2    moment.locale('vi');
3});
4
5// Show list Live Core API fix structer API
6var showListLivecore = function (list,view) {
7    
8    var $ = jQuery;
9    var views = JSON.parse(view);
10    html = '';
11    if (JSON.parse(list).fixtures.length > 0  && (JSON.parse(list))!== null) {
12            jQuery.each(JSON.parse(list).fixtures, function(key, fixtures) {
13                html = '<h2 class="kfb-table-header background_green">'+formatDate(fixtures.date,'datetoday')+'</h2>';
14                jQuery.each(fixtures.leagues, function(key2, league_item) {
15                    html += '<div class="kfb-league-football-group">';
16                    html += '<div class="kfb-football-header">';
17                    html += '<h3 class="kfb-head-left">';
18                    html += ' <a class="kfb-active" title="'+league_item.league.name+'" href="'+league_item.league.slug+'">';
19                    html += '<img class="lazy logo_icon_league" src="'+league_item.league.logo+'"> '+league_item.league.name+' ('+league_item.league.country.name+') </a>';
20                    html += '</h3>';
21                    html += '<div class="kfb-head-right">';
22                    html += '<a class="';
23                            if(views.link.link_schedule.active && views.link.link_schedule.active.length>0){
24                                html += 'kfb-active';
25                            };
26                    html += '" title="Lịch thi đấu '+league_item.league.name+'" href="'+views.link.link_schedule.link+league_item.league.slug+'/">Lịch thi đấu</a> |';
27                    html += '<a title="Kết quả '+league_item.league.name+'" href="'+views.link.link_result.link+league_item.league.slug+'/">Kết quả</a> |';
28                    html += '<a title="Bảng xếp hạng '+league_item.league.name+'" href="'+views.link.link_standing.link+league_item.league.slug+'/">Bảng xếp hạng</a>';
29                    html += '</div>';
30                    html += '</div>';
31                    jQuery.each(league_item.matches, function(key3, matches_item) {
32                        html += '<div class="kfb-f-row kfb-match-detail kfb-coming" data-id="'+matches_item.id+'" data-date="'+matches_item.date+'">';
33                        html += '<div class="kfb-football-match">';
34                        html += '<div class="kfb-columns-time">';
35                        html += '<div class="third-parent">';
36                        html += '<span class="kfb-time">'+formatDate(matches_item.date,'hourtime')+'</span>';
37                        html += '<span class="kfb-separator">-</span>';
38                        html += '<span class="kfb-date">'+formatDate(matches_item.date,'day')+'</span></div>';
39                        if(matches_item.is_live){
40                            html += 'span class="kfb-live animation-fade-in-out  kfb-m-hidden"><i class="cicle  change-color-corner"></i> Live </span>';
41                        };
42                        html += '<div class="third-chilrent">';
43                        if (matches_item.score.halftime.home){
44                            html += '<span class="kfb-first-round kfb-m-hidden">'+ matches_item.status.elapsed +'</span>';
45                        }
46                        if (matches_item.score.halftime.home){
47                            html += '<span class="kfb-item-ktv"><span title="Tỷ số hiệp 1">H1:</span>';
48                            html += matches_item.score.halftime.home;
49                            html += matches_item.score.halftime.away;
50                            html += '</span>';
51                        }
52                        html += '</div>';
53                        html += '</div>';
54                        html += '    <div class="kfb-columns-match">';
55                        html += '        <div class="kfb-row-teams">';
56                        html += '            <div class="kfb-columns-club">';
57                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
58                            html += '<a class="kfb-name-club kfb-club-1 " title="'+matches_item.teams.home.name+'">';
59                            html += matches_item.teams.home.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.home.name+'" src="'+matches_item.teams.home.logo+'">';
60                            html += '</a>';
61                        };
62                        html += '</div>';
63                        html += '<div class="kfb-columns-number">';
64                        html += '<span class="kfb-soccer-scores">';
65                            if (matches_item.goals.home || matches_item.goals.away) {
66                                html += matches_item.goals.home + ' : ' +matches_item.goals.away;
67                            } else {
68                                html += 'vs';
69                            }
70                        html += '</span></div><div class="kfb-columns-club">';
71                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
72                            html += '<a class="kfb-name-club kfb-club-2 " title="'+matches_item.teams.away.name+'">';
73                            html += matches_item.teams.away.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.away.name+'" src="'+matches_item.teams.away.logo+'">';
74                            html += '</a>';
75                        };
76                        html += '</div>';
77                        html += '</div>';
78                        html += '</div>';
79                        html += '<div class="kfb-columns-other">';
80                        html += '<div class="kfb-flex-right">';
81                        html += '<div class="kfb-item-other-4">';
82                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
83                            html += '<a title="Xem thông tin chi tiết '+matches_item.teams.home.name+' vs '+matches_item.teams.away.name+'" rel="follow" class="kfb-btn-f-more" href="'+views.link.link_standingdetail.link + formatLink(matches_item.teams.home.name + ' vs '+matches_item.teams.away.name + ' '+ matches_item.id)+'">';
84                            html += '<i class="kfb-fa-chevron-right"></i>';
85                            html += '</a>';
86                        }
87                        html += '</div>';
88                        html += '</div>';
89                        html += '</div>';
90                        html += '</div>';
91                        html += '</div>';
92                });
93            });
94        });
95    }
96    return html;
97};
98// Show list Schedule API fix structer API
99var showListSchedule = function (list,view) {
100    var $ = jQuery;
101    html = '';
102    var views = JSON.parse(view);
103    if (JSON.parse(list).fixtures !== null  && (JSON.parse(list))!== null) {
104            jQuery.each(JSON.parse(list).fixtures, function(key, value) {
105                html += '<div class="kfb-league-football-group">';
106                html += '<div class="kfb-football-header">';
107                html += '<h3 class="kfb-head-left">';
108                html += ' <a class="kfb-active" title="'+value.league.name+'" href="'+value.league.slug+'">';
109                html += '<img class="lazy logo_icon_league" src="'+value.league.logo+'"> '+value.league.name+' ('+value.league.country.name+') </a>';
110                html += '</h3>';
111                html += '<div class="kfb-head-right">';
112                html += '<a class="';
113                        if(views.link.link_schedule.active && views.link.link_schedule.active.length>0){
114                            html += 'kfb-active';
115                        };
116                html += '" title="Lịch thi đấu '+value.league.name+'" href="'+views.link.link_schedule.link+value.league.slug+'/">Lịch thi đấu</a> |';
117                html += '<a title="Kết quả '+value.league.name+'" href="'+views.link.link_result.link+value.league.slug+'/">Kết quả</a> |';
118                html += '<a title="Bảng xếp hạng '+value.league.name+'" href="'+views.link.link_standing.link+value.league.slug+'/">Bảng xếp hạng</a>';
119                html += '</div>';
120                html += '</div>';
121                
122                jQuery.each(value.dates, function(key2, date) {
123                    html += '<h2 class="kfb-table-header background_green">'+formatDate(date.date,'datetoday')+'</h2>';
124                    jQuery.each(date.matches, function(key3, matches_item) {
125                        html += '<div class="kfb-f-row kfb-match-detail kfb-coming" data-id="'+matches_item.id+'" data-date="'+matches_item.date+'">';
126                        html += '<div class="kfb-football-match">';
127                        html += '<div class="kfb-columns-time">';
128                        html += '<div class="third-parent">';
129                        html += '<span class="kfb-time">'+formatDate(matches_item.date,'hourtime')+'</span>';
130                        html += '<span class="kfb-separator">-</span>';
131                        html += '<span class="kfb-date">'+formatDate(matches_item.date,'day')+'</span></div>';
132                        if(matches_item.is_live){
133                            html += 'span class="kfb-live animation-fade-in-out  kfb-m-hidden"><i class="cicle  change-color-corner"></i> Live </span>';
134                        };
135                        html += '<div class="third-chilrent">';
136                        if (matches_item.score.halftime.home){
137                            html += '<span class="kfb-first-round kfb-m-hidden">'+ matches_item.status.elapsed +'</span>';
138                        }
139                        if (matches_item.score.halftime.home){
140                            html += '<span class="kfb-item-ktv"><span title="Tỷ số hiệp 1">H1:</span>';
141                            html += matches_item.score.halftime.home;
142                            html += matches_item.score.halftime.away;
143                            html += '</span>';
144                        }
145                        html += '</div>';
146                        html += '</div>';
147                        html += '    <div class="kfb-columns-match">';
148                        html += '        <div class="kfb-row-teams">';
149                        html += '            <div class="kfb-columns-club">';
150                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
151                            html += '<a class="kfb-name-club kfb-club-1 " title="'+matches_item.teams.home.name+'">';
152                            html += matches_item.teams.home.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.home.name+'" src="'+matches_item.teams.home.logo+'">';
153                            html += '</a>';
154                        };
155                        html += '</div>';
156                        html += '<div class="kfb-columns-number">';
157                        html += '<span class="kfb-soccer-scores">';
158                            if (matches_item.goals.home || matches_item.goals.away) {
159                                html += matches_item.goals.home + ' : ' +matches_item.goals.away;
160                            } else {
161                                html += 'vs';
162                            }
163                        html += '</span></div><div class="kfb-columns-club">';
164                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
165                            html += '<a class="kfb-name-club kfb-club-2 " title="'+matches_item.teams.away.name+'">';
166                            html += matches_item.teams.away.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.away.name+'" src="'+matches_item.teams.away.logo+'">';
167                            html += '</a>';
168                        };
169                        html += '</div>';
170                        html += '</div>';
171                        html += '</div>';
172                        html += '<div class="kfb-columns-other">';
173                        html += '<div class="kfb-flex-right">';
174                        html += '<div class="kfb-item-other-4">';
175                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
176                            html += '<a title="Xem thông tin chi tiết '+matches_item.teams.home.name+' vs '+matches_item.teams.away.name+'" rel="follow" class="kfb-btn-f-more" href="'+views.link.link_standingdetail.link + formatLink(matches_item.teams.home.name + ' vs '+matches_item.teams.away.name + ' '+ matches_item.id)+'">';
177                            html += '<i class="kfb-fa-chevron-right"></i>';
178                            html += '</a>';
179                        }
180                        html += '</div>';
181                        html += '</div>';
182                        html += '</div>';
183                        html += '</div>';
184                        html += '</div>';
185                    });
186                    
187                });
188                
189                html += '</div>';
190            });
191    }
192
193    return html;
194};
195// Show list Standing API fix structer API
196var showListStanding= function (list,view) {
197    var $ = jQuery;
198    html = '';
199    var views = JSON.parse(view);
200    if (JSON.parse(list).fixtures !== null  && (JSON.parse(list))!== null) {
201            jQuery.each(JSON.parse(list).fixtures, function(key, value) {
202                html += '<div class="kfb-league-football-group">';
203                html += '<div class="kfb-football-header">';
204                html += '<h3 class="kfb-head-left">';
205                html += ' <a class="kfb-active" title="'+value.league.name+'" href="'+value.league.slug+'">';
206                html += '<img class="lazy logo_icon_league" src="'+value.league.logo+'"> '+value.league.name+' ('+value.league.country.name+') </a>';
207                html += '</h3>';
208                html += '<div class="kfb-head-right">';
209                html += '<a class="';
210                        if(views.link.link_schedule.active && views.link.link_schedule.active.length>0){
211                            html += 'kfb-active';
212                        };
213                html += '" title="Lịch thi đấu '+value.league.name+'" href="'+views.link.link_schedule.link+value.league.slug+'/">Lịch thi đấu</a> |';
214                html += '<a title="Kết quả '+value.league.name+'" href="'+views.link.link_result.link+value.league.slug+'/">Kết quả</a> |';
215                html += '<a title="Bảng xếp hạng '+value.league.name+'" href="'+views.link.link_standing.link+value.league.slug+'/">Bảng xếp hạng</a>';
216                html += '</div>';
217                html += '</div>';
218                
219                jQuery.each(value.dates, function(key2, date) {
220                    html += '<h2 class="kfb-table-header background_green">'+formatDate(date.date,'datetoday')+'</h2>';
221                    jQuery.each(date.matches, function(key3, matches_item) {
222                        html += '<div class="kfb-f-row kfb-match-detail kfb-coming" data-id="'+matches_item.id+'" data-date="'+matches_item.date+'">';
223                        html += '<div class="kfb-football-match">';
224                        html += '<div class="kfb-columns-time">';
225                        html += '<div class="third-parent">';
226                        html += '<span class="kfb-time">'+formatDate(matches_item.date,'hourtime')+'</span>';
227                        html += '<span class="kfb-separator">-</span>';
228                        html += '<span class="kfb-date">'+formatDate(matches_item.date,'day')+'</span></div>';
229                        if(matches_item.is_live){
230                            html += 'span class="kfb-live animation-fade-in-out  kfb-m-hidden"><i class="cicle  change-color-corner"></i> Live </span>';
231                        };
232                        html += '<div class="third-chilrent">';
233                        if (matches_item.score.halftime.home){
234                            html += '<span class="kfb-first-round kfb-m-hidden">'+ matches_item.status.elapsed +'</span>';
235                        }
236                        if (matches_item.score.halftime.home){
237                            html += '<span class="kfb-item-ktv"><span title="Tỷ số hiệp 1">H1:</span>';
238                            html += matches_item
238.score.halftime.home;
239                            html += matches_item.score.halftime.away;
240                            html += '</span>';
241                        }
242                        html += '</div>';
243                        html += '</div>';
244                        html += '    <div class="kfb-columns-match">';
245                        html += '        <div class="kfb-row-teams">';
246                        html += '            <div class="kfb-columns-club">';
247                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
248                            html += '<a class="kfb-name-club kfb-club-1 " title="'+matches_item.teams.home.name+'">';
249                            html += matches_item.teams.home.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.home.name+'" src="'+matches_item.teams.home.logo+'">';
250                            html += '</a>';
251                        };
252                        html += '</div>';
253                        html += '<div class="kfb-columns-number">';
254                        html += '<span class="kfb-soccer-scores">';
255                            if (matches_item.goals.home || matches_item.goals.away) {
256                                html += matches_item.goals.home + ' : ' +matches_item.goals.away;
257                            } else {
258                                html += 'vs';
259                            }
260                        html += '</span></div><div class="kfb-columns-club">';
261                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
262                            html += '<a class="kfb-name-club kfb-club-2 " title="'+matches_item.teams.away.name+'">';
263                            html += matches_item.teams.away.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.away.name+'" src="'+matches_item.teams.away.logo+'">';
264                            html += '</a>';
265                        };
266                        html += '</div>';
267                        html += '</div>';
268                        html += '</div>';
269                        html += '<div class="kfb-columns-other">';
270                        html += '<div class="kfb-flex-right">';
271                        html += '<div class="kfb-item-other-4">';
272                        if (matches_item.teams !== null && matches_item.teams !== undefined) {
273                            html += '<a title="Xem thông tin chi tiết '+matches_item.teams.home.name+' vs '+matches_item.teams.away.name+'" rel="follow" class="kfb-btn-f-more" href="'+views.link.link_standingdetail.link + formatLink(matches_item.teams.home.name + ' vs '+matches_item.teams.away.name + ' '+ matches_item.id)+'">';
274                            html += '<i class="kfb-fa-chevron-right"></i>';
275                            html += '</a>';
276                        }
277                        html += '</div>';
278                        html += '</div>';
279                        html += '</div>';
280                        html += '</div>';
281                        html += '</div>';
282                    });
283                    
284                });
285                
286                html += '</div>';
287            });
288    }
289
290    return html;
291};
292var showListOdds = function (list,view) {
293    var $ = jQuery;
294    html = '';
295    var views = JSON.parse(view);
296    if (JSON.parse(list).fixtures !== null  && (JSON.parse(list))!== null) {
297            //html += '<h2 class="kfb-table-header background_green">'+formatDate(date.date,'datetoday')+'</h2>';
298            jQuery.each(JSON.parse(list).fixtures, function(key, value) {
299                html += '<div class="kfb-league-football-group kfb-match-football-item">';
300                html += '<div class="kfb-football-header">';
301                html += '<h3 class="kfb-head-left">';
302                html += ' <a class="kfb-active" title="'+value.league.name+'" href="'+value.league.slug+'">';
303                html += '<img class="lazy logo_icon_league" src="'+value.league.logo+'"> '+value.league.name+' ('+value.league.country.name+') </a>';
304                html += '</h3>';
305                html += '<div class="kfb-head-right">';
306                html += '</div>';
307                html += '</div>';
308                
309                jQuery.each(value.dates, function(key2, date) {
310                    jQuery.each(date.matches, function(key3, matches_item) {
311                        // html += '<div class="kfb-f-row kfb-match-detail kfb-coming" data-id="'+matches_item.id+'" data-date="'+matches_item.date+'">';
312                        // html += '<div class="kfb-football-match">';
313                        // html += '<div class="kfb-columns-time">';
314                        // html += '<div class="third-parent">';
315                        // html += '<span class="kfb-time">'+formatDate(matches_item.date,'hourtime')+'</span>';
316                        // html += '<span class="kfb-separator">-</span>';
317                        // html += '<span class="kfb-date">'+formatDate(matches_item.date,'day')+'</span></div>';
318                        // if(matches_item.is_live){
319                        //     html += 'span class="kfb-live animation-fade-in-out  kfb-m-hidden"><i class="cicle  change-color-corner"></i> Live </span>';
320                        // };
321                        // html += '<div class="third-chilrent">';
322                        // if (matches_item.score.halftime.home){
323                        //     html += '<span class="kfb-first-round kfb-m-hidden">'+ matches_item.status.elapsed +'</span>';
324                        // }
325                        // if (matches_item.score.halftime.home){
326                        //     html += '<span class="kfb-item-ktv"><span title="Tỷ số hiệp 1">H1:</span>';
327                        //     html += matches_item.score.halftime.home;
328                        //     html += matches_item.score.halftime.away;
329                        //     html += '</span>';
330                        // }
331                        // html += '</div>';
332                        // html += '</div>';
333                        // html += '    <div class="kfb-columns-match">';
334                        // html += '        <div class="kfb-row-teams">';
335                        // html += '            <div class="kfb-columns-club">';
336                        // if (matches_item.teams !== null && matches_item.teams !== undefined) {
337                        //     html += '<a class="kfb-name-club kfb-club-1 " title="'+matches_item.teams.home.name+'">';
338                        //     html += matches_item.teams.home.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.home.name+'" src="'+matches_item.teams.home.logo+'">';
339                        //     html += '</a>';
340                        // };
341                        // html += '</div>';
342                        // html += '<div class="kfb-columns-number">';
343                        // html += '<span class="kfb-soccer-scores">';
344                        //     if (matches_item.goals.home || matches_item.goals.away) {
345                        //         html += matches_item.goals.home + ' : ' +matches_item.goals.away;
346                        //     } else {
347                        //         html += 'vs';
348                        //     }
349                        // html += '</span></div><div class="kfb-columns-club">';
350                        // if (matches_item.teams !== null && matches_item.teams !== undefined) {
351                        //     html += '<a class="kfb-name-club kfb-club-2 " title="'+matches_item.teams.away.name+'">';
352                        //     html += matches_item.teams.away.name+'<img class="kfb-logo-club kfb-lazyload" loading="lazy" alt="'+matches_item.teams.away.name+'" src="'+matches_item.teams.away.logo+'">';
353                        //     html += '</a>';
354                        // };
355                        // html += '</div>';
356                        // html += '</div>';
357                        // html += '</div>';
358                        // html += '<div class="kfb-columns-other">';
359                        // html += '<div class="kfb-flex-right">';
360                        // html += '<div class="kfb-item-other-4">';
361                        // if (matches_item.teams !== null && matches_item.teams !== undefined) {
362                        //     html += '<a title="Xem thông tin chi tiết '+matches_item.teams.home.name+' vs '+matches_item.teams.away.name+'" rel="follow" class="kfb-btn-f-more" href="'+views.link.link_standingdetail.link + formatLink(matches_item.teams.home.name + ' vs '+matches_item.teams.away.name + ' '+ matches_item.id)+'">';
363                        //     html += '<i class="kfb-fa-chevron-right"></i>';
364                        //     html += '</a>';
365                        // }
366                        // html += '</div>';
367                        // html += '</div>';
368                        // html += '</div>';
369                        // html += '</div>';
370                        // html += '</div>';
371                    });
372                    
373                });
374                
375                html += '</div>';
376            });
377    }
378
379    return html;
380};
381
382var formatDate = function(dates,type) {
383    const date = new Date(dates);
384    switch (type) {
385        case 'datetoday':
386            return moment(date).calendar(
387                null, {
388                    sameDay: '[Hôm nay], dddd - DD/MM',
389                    nextDay: '[Ngày mai], dddd - DD/MM',
390                    nextWeek: '[Ngày trong tuần], dddd - DD/MM',
391                    lastDay: '[Hôm qua], dddd - DD/MM',
392                    lastWeek: '[Tuần vừa qua], dddd',
393                    sameElse: 'DD/MM/YYYY'
394                });
395        case 'day':
396            return moment(date).format('DD/MM'); // prints the day of the month (1-31)
397        case 'year':
398            return moment(date).format('YYYY'); // prints the year (e.g. 2021)
399        case 'month':
400            return moment(date).format('MM'); // prints the month (0-11, where 0 = January)
401        case 'hourtime':
402                return moment(date).format('HH:mm'); // prints the hour (0-23)
403        case 'hour':
404            return moment(date).format('HH'); // prints the hour (0-23)
405        case 'minutes':
406            return moment(date).format('mm'); // prints the minute (0-59)
407        case 'second':
408            return moment(date).format('ss'); // prints the second (0-59)
409        default:
410            return moment(date).format('DD/MM/YYYY - HH:mm:ss'); // prints the day of the month (1-31)
411    }
412}
413var formatTimestamps = function(timestamps,type) {
414    const timestamp = new Date(timestamps*1000);
415    switch (type) {
416        case 'fulldate':
417            return format(timestamp.getDate(), 'DD/MM/YYYY'); // prints the day of the month (1-31)
418        case 'day':
419            return moment(timestamp).format('DD/MM'); // prints the day of the month (1-31)
420        case 'year':
421            return timestamp.getFullYear(); // prints the year (e.g. 2021)
422        case 'month':
423            return timestamp.getMonth(); // prints the month (0-11, where 0 = January)
424        case 'hourtime':
425                return timestamp.getHours()+':'+timestamp.getMinutes()+':'+timestamp.getSeconds(); // prints the hour (0-23)
426        case 'hour':
427            return timestamp.getHours(); // prints the hour (0-23)
428        case 'minutes':
429            return timestamp.getMinutes(); // prints the minute (0-59)
430        case 'second':
431            return timestamp.getSeconds(); // prints the second (0-59)
432        default:
433            return moment(timestamp).format('DD/MM/YYYY'); // prints the day of the month (1-31)
434}
435
436const formatMe = date => {
437    const vals = `yyyy,mm,dd,hh,mmi,ss,mms`.split(`,`);
438    const myDate = dateHelper(date).toArr(...vals);
439    return `${myDate.slice(0, 3).join(`/`)} ${
440      myDate.slice(3, 6).join(`:`)}.${
441      myDate.slice(-1)[0]}`;
442};
443
444var dateHelperFactory = function() {
445    const padZero = (val, len = 2) => `${val}`.padStart(len, `0`);
446    const setValues = date => {
447      let vals = {
448         yyyy: date.getFullYear(),
449         m: date.getMonth()+1,
450         d: date.getDate(),
451         h: date.getHours(),
452         mi: date.getMinutes(),
453         s: date.getSeconds(),
454         ms: date.getMilliseconds(), };
455      Object.keys(vals).filter(k => k !== `yyyy`).forEach(k => 
456        vals[k[0]+k] = padZero(vals[k], k === `ms` && 3 || 2) );
457      return vals;
458    };
459    
460    return date => ( {
461      values: setValues(date),
462      toArr(...items) { return items.map(i => this.values[i]); },
463    } );
464  }  
465    
466    
467    
468}
469var formatLink = function (link){
470    return  link.toLowerCase()
471    .replace(/ /g, "-")
472    .replace(/[^\w-]+/g, "");
473}

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.