String&&String.prototype&&!String.prototype.startsWith&&(String.prototype.startsWith=function(t,r){return this.substr(r=r||0,t.length)===t}),String&&String.prototype&&!String.prototype.endsWith&&(String.prototype.endsWith=function(t,r){var e=this.toString();("number"!=typeof r||!isFinite(r)||Math.floor(r)!==r||r>e.length)&&(r=e.length),r-=t.length;t=e.indexOf(t,r);return-1!==t&&t===r}),String&&String.prototype&&!String.prototype.includes&&(String.prototype.includes=function(t,r){"use strict";if(t instanceof RegExp)throw TypeError("first argument must not be a RegExp");return-1!==this.indexOf(t,r=void 0===r?0:r)}),Object&&!Object.keys&&(Object.keys=function(){"use strict";var o=Object.prototype.hasOwnProperty,i=!{toString:null}.propertyIsEnumerable("toString"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],p=a.length;return function(t){if("object"!=typeof t&&("function"!=typeof t||null===t))throw new TypeError("Object.keys called on non-object");var r,e,n=[];for(r in t)o.call(t,r)&&n.push(r);if(i)for(e=0;e
>>0,e=Number(arguments[1])||0;for((e=e<0?Math.ceil(e):Math.floor(e))<0&&(e+=r);e