// ==UserScript==
// @name lx-msuic 辅助脚本
// @namespace lx-music-script
// @version 0.2.10
// @author lyswhut
// @description lx-msuic 辅助脚本,提供在官方音乐平台歌单、歌曲详情页直接调用LX Music的能力。
// @homepage https://github.com/lyswhut/lx-music-script#readme
// @supportURL https://github.com/lyswhut/lx-music-script/issues
// @match *://*.kuwo.cn/*
// @match *://y.qq.com/*
// @match *://music.163.com/*
// @match *://music.migu.cn/*
// @run-at document-start
// @noframes
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABWVBMVEUAAABj1KVyzKduz6ds0KZcvqJgvaJuz6ds0KZevaFdvaFr0KZr0KZfvaFevaFdvaFs0KZevaFs0KZdvaBcvaFr0KZbvaBbvaBr0KZbvZ9q0KVbvZ9q0KVq0aVbvZ9q0KVp0aVp0aVp0aVp0aVp0aVp0aVp0aVp0aVo0aRo0aRo0aRo0qRo0aRo0aRo0aRo0qRn0qNn0qNn0qNn0qNm0qNm0qNm0qNm0qNm0qNm0qJm0qJWupdl06Jl06Jl06Jl06Jl06Jl06FVuZVl06Fk06Fk06Fk06Fk06Fk06FUuZNUuZNk06Bj1KBj1KBj1KBj1KBTuJFTuJFSt49St49i1J9i1J9St41Rtoxi1Z5RtotRtYth1Z5RtYpQtYph1Z1QtYlg1Z1QtIhg1ZxPtIdg1ZxPs4Vg1Ztg1ZxPs4Rf1ZtOsoJOsoNf1ppf1plf1ppNr3xe1phe1plf1pma98AtAAAAb3RSTlMAAgUHCQsODhIWGhocHyEjIycnKy0tNDo/QEBESEpLTlJWWFlfYmRneXp9gIKEhoibn6Cio6SlqbCxt7i/wMHDxMXIys3P09TW19ja29zd3t/h5ebn6uzu7vHy8vT19fb3+Pj5+vv7+/z8/f39/v5h65S/AAABRUlEQVQ4y4XTZ1fCMBgF4Bc3oiC49164cICAIqi4EfeqG0FELbzx/3+wK0mVlN5PzbnPadoMAFMcx1i83fbXg1VmUIt8FXSJQQhpSGqwMlCSarcB+O23AYiLdoBM2gB8EQG5SLgYF4B9qOoKXBogLARqhjIaiFsC8BXUwao1gCV1MFwBuJTnrOgvYnQkI4bKAZmHRo+nWQeZGt75Ahvx5XXEZOtrSUluAFqQTPD6iK7M1FpJywEsYJT1/e9s6ca2dHAGeyesb8qiAMxWM7CDIsDT8MP3Vx4VgDnWB5W3CkCE9vdwLkkfOviUpGu3AWIU5B0XJVMeaw2wwqZI1N3w/s1Lp+jj/xBx3rG+jX/EExdh54Pe5zpMXzltPunuZ63v/LOLmxykwa3s1lfvv32O0oOcdAB4D0+7y+5Uz26eYCE9Un4dfwFD48/Gwgd5VgAAAABJRU5ErkJggg==
// @grant none
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 5318:
/***/ ((module) => {
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
};
}
module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports.default = module.exports;
/***/ }),
/***/ 5579:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2601)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_sources) {
"use strict";
var _interopRequireDefault = __webpack_require__(5318);
_sources = _interopRequireDefault(_sources);
switch (window.location.hostname) {
case 'www.kuwo.cn':
case 'kuwo.cn':
_sources.default.kw();
break;
case 'y.qq.com':
_sources.default.tx();
break;
case 'music.163.com':
_sources.default.wy();
break;
case 'music.migu.cn':
_sources.default.mg();
break;
default:
break;
}
});
/***/ }),
/***/ 2601:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(2955), __webpack_require__(1500), __webpack_require__(220), __webpack_require__(2641)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _kw, _tx, _wy, _mg) {
"use strict";
var _interopRequireDefault = __webpack_require__(5318);
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
_kw = _interopRequireDefault(_kw);
_tx = _interopRequireDefault(_tx);
_wy = _interopRequireDefault(_wy);
_mg = _interopRequireDefault(_mg);
// import kg from './kg'
var _default = {
kw: _kw.default,
// kg,
tx: _tx.default,
wy: _wy.default,
mg: _mg.default
};
_exports.default = _default;
});
/***/ }),
/***/ 2955:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(4916), __webpack_require__(5306), __webpack_require__(9853)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _esRegexpExec, _esStringReplace, _utils) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.formatSinger = _exports.default = void 0;
let data = null;
const formatSinger = rawData => rawData.replace(/&/g, '、');
_exports.formatSinger = formatSinger;
const filterListDetail = rawList => {
// console.log(rawList)
// console.log(rawList.length, rawList2.length)
return rawList.map((item, inedx) => {
let formats = item.formats.split('|');
let types = [];
let _types = {};
if (formats.includes('MP3128')) {
types.push({
type: '128k',
size: null
});
_types['128k'] = {
size: null
};
} // if (formats.includes('MP3192')) {
// types.push({ type: '192k', size: null })
// _types['192k'] = {
// size: null,
// }
// }
if (formats.includes('MP3H')) {
types.push({
type: '320k',
size: null
});
_types['320k'] = {
size: null
};
} // if (formats.includes('AL')) {
// types.push({ type: 'ape', size: null })
// _types.ape = {
// size: null,
// }
// }
if (formats.includes('ALFLAC')) {
types.push({
type: 'flac',
size: null
});
_types.flac = {
size: null
};
} // types.reverse()
return {
singer: formatSinger((0, _utils.decodeName)(item.artist)),
name: (0, _utils.decodeName)(item.songName),
albumName: (0, _utils.decodeName)(item.album),
albumId: item.albumId,
songmid: item.id,
source: 'kw',
interval: (0, _utils.formatPlayTime)(parseInt(item.duration)),
img: item.pic,
lrc: null,
otherSource: null,
types,
_types,
typeUrl: {}
};
});
};
const injectStyle = () => {
const style = document.createElement('style');
style.innerHTML = '.btns {white-space: nowrap; flex-wrap: wrap;} .btns button{margin-bottom: 10px;} .btns .play { width: auto !important;} ';
document.head.appendChild(style);
};
let dom_main;
const injectBtn = async callback => {
const dom_btn = document.querySelector('.btns button');
if (!dom_btn) {
let mains = document.querySelectorAll('#__layout > .page > .container > *');
if (!mains.length) return;
mains = Array.from(mains);
let current_dom_main;
for (const dom of mains) {
if (dom.nodeType == 1) {
current_dom_main = dom;
break;
}
}
if (!current_dom_main) return;
dom_main = current_dom_main;
current_dom_main.addEventListener('DOMNodeRemoved', () => {
if (dom_main !== current_dom_main) return;
dom_main = null;
setTimeout(() => {
const dom_btn = document.querySelector('.btns button');
if (!dom_btn) return;
if (dom_btn.parentNode.querySelector('.lx-btn')) return;
callback(dom_btn);
});
});
return;
}
if (dom_btn.parentNode.querySelector('.lx-btn')) return;
callback(dom_btn);
};
const createBtn = (label, onClick, dataKeys, className = 'play bg_primary') => {
className += ' lx-btn';
const dom_a = document.createElement('button');
dom_a.className = className;
for (const key of dataKeys) dom_a.dataset[key] = '';
dom_a.innerHTML = `<span ${dataKeys.map(k => `data-${k}`).join(' ')}>${label}</span>`;
dom_a.addEventListener('click', onClick);
return dom_a;
};
const injectPlaylistPage = ({
id
}) => {
injectBtn(dom_btn => {
const dataKeys = Object.keys(dom_btn.dataset);
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中打开', () => {
(0, _utils.openApp)('songlist', 'open', {
source: 'kw',
id
});
}, dataKeys, 'mod_btn'));
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('songlist', 'play', {
source: 'kw',
id
});
}, dataKeys));
});
};
const injectSongDetailPage = musicInfo => {
console.log(musicInfo);
injectBtn(dom_btn => {
const dataKeys = Object.keys(dom_btn.dataset);
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('music', 'play', musicInfo);
}, dataKeys));
});
};
const hadnleInject = () => {
if (!data) return;
if (window.location.pathname.includes('/playlist_detail/')) {
injectPlaylistPage(data);
} else if (window.location.pathname.includes('/play_detail/')) {
injectSongDetailPage(data);
}
};
var _default = () => {
window.addEventListener('DOMContentLoaded', () => {
injectStyle();
});
window.addEventListener('load', () => {
if (window.location.pathname.includes('/playlist_detail/')) {
// eslint-disable-next-line no-undef
const detail = __NUXT__.data[0].playListInfo;
data = {
play_count: detail.listencnt,
id: detail.id,
author: detail.userName,
name: detail.name,
img: detail.img,
desc: detail.info,
source: 'kw'
};
console.log(data);
hadnleInject();
}
}); // window.history.pushState = ((f) =>
// function pushState() {
// const ret = f.apply(this, arguments)
// window.dispatchEvent(new window.Event('pushstate'))
// window.dispatchEvent(new window.Event('locationchange'))
// return ret
// })(window.history.pushState)
// window.history.replaceState = ((f) =>
// function replaceState() {
// const ret = f.apply(this, arguments)
// window.dispatchEvent(new window.Event('replacestate'))
// window.dispatchEvent(new window.Event('locationchange'))
// return ret
// })(window.history.replaceState)
// window.addEventListener('popstate', () => {
// window.dispatchEvent(new window.Event('locationchange'))
// })
// window.addEventListener('locationchange', function() {
// })
(0, _utils.requestHook)((url, requestBody, response) => {
// if (!requestBody) return
// console.log(url)
if (url.includes('playlist/playListInfo?')) {
if (response.code != 200) {
data = null;
return;
}
let detail = response.data;
data = {
play_count: detail.listencnt,
id: detail.id,
author: detail.userName,
name: detail.name,
img: detail.img,
desc: detail.info,
source: 'kw'
};
console.log(data);
setTimeout(() => {
hadnleInject();
});
} else if (url.includes('singles/songinfoandlrc')) {
if (response.status != 200) {
data = null;
return;
}
let detail = response.data.songinfo;
data = filterListDetail([detail])[0];
console.log(data);
setTimeout(() => {
hadnleInject();
});
}
});
};
_exports.default = _default;
});
/***/ }),
/***/ 2641:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(4916), __webpack_require__(4603), __webpack_require__(9853)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _esRegexpExec, _esRegexpConstructor, _utils) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
let data = null;
const getSinger = singers => {
let arr = [];
singers.forEach(singer => {
arr.push(singer.name);
});
return arr.join('、');
};
const filterListDetail = rawList => {
// console.log(rawList)
let ids = new Set();
const list = [];
rawList.forEach(item => {
if (ids.has(item.copyrightId)) return;
ids.add(item.copyrightId);
const types = [];
const _types = {};
item.newRateFormats && item.newRateFormats.forEach(type => {
let size;
switch (type.formatType) {
case 'PQ':
size = (0, _utils.sizeFormate)(type.size);
types.push({
type: '128k',
size
});
_types['128k'] = {
size
};
break;
case 'HQ':
size = (0, _utils.sizeFormate)(type.size);
types.push({
type: '320k',
size
});
_types['320k'] = {
size
};
break;
case 'SQ':
size = (0, _utils.sizeFormate)(type.size);
types.push({
type: 'flac',
size
});
_types.flac = {
size
};
break;
case 'ZQ':
size = (0, _utils.sizeFormate)(type.size);
types.push({
type: 'flac32bit',
size
});
_types.flac32bit = {
size
};
break;
}
});
const intervalTest = /(\d\d:\d\d)$/.test(item.length);
list.push({
singer: getSinger(item.artists),
name: item.songName,
albumName: item.album,
albumId: item.albumId,
songmid: item.copyrightId,
songId: item.songId,
copyrightId: item.copyrightId,
source: 'mg',
interval: intervalTest ? RegExp.$1 : null,
img: item.albumImgs && item.albumImgs.length ? item.albumImgs[0].img : null,
lrc: null,
lrcUrl: item.lrcUrl,
otherSource: null,
types,
_types,
typeUrl: {}
});
});
return list;
};
const injectStyle = () => {
const style = document.createElement('style');
style.innerHTML = `.content .actions> * {margin-bottom: .8em;}
.info_operate {white-space: nowrap;}
.info_operate .operate_btn.primary {border: 1px solid #e91e63 !important; background-color: #e91e63 !important; cursor: pointer;}
.info_operate .operate_btn.primary:hover {background-color: #d81558 !important;}
.info_operate .operate_btn.primary a {color: #fff !important;}`;
document.head.appendChild(style);
};
const createPlaylistBtn = (label, onClick, className = 'play-all') => {
const dom_a = document.createElement('a');
dom_a.className = 'action ' + className;
dom_a.innerHTML = label;
dom_a.addEventListener('click', onClick);
return dom_a;
};
const injectPlaylistPage = ({
id
}) => {
const dom_btn = document.querySelector('.actions .action');
if (!dom_btn) return;
dom_btn.insertAdjacentElement('afterend', createPlaylistBtn('在 LX Music 中打开', () => {
(0, _utils.openApp)('songlist', 'open', {
source: 'mg',
id
});
}, ''));
dom_btn.insertAdjacentElement('afterend', createPlaylistBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('songlist', 'play', {
source: 'mg',
id
});
}));
};
const createSongDetailBtn = (label, onClick, className = 'primary') => {
const dom_a = document.createElement('div');
dom_a.className = 'operate_btn ' + className;
dom_a.innerHTML = `<a>${label}</a>`;
dom_a.addEventListener('click', onClick);
return dom_a;
};
const injectSongDetailPage = musicInfo => {
console.log(musicInfo);
const dom_btn = document.querySelector('.info_operate .operate_btn');
if (!dom_btn) return;
dom_btn.insertAdjacentElement('afterend', createSongDetailBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('music', 'play', musicInfo);
}));
};
const hadnleInject = () => {
if (!data) return;
if (window.location.pathname.includes('/music/playlist/')) {
injectPlaylistPage(data);
} else if (window.location.pathname.includes('/music/song/')) {
injectSongDetailPage(data);
}
};
var _default = () => {
window.addEventListener('DOMContentLoaded', () => {
injectStyle();
if (window.location.pathname.includes('/music/playlist/')) {
const dom_songcid = document.getElementById('J_ResId');
if (!dom_songcid || !dom_songcid.value) return; // eslint-disable-next-line no-undef
// const detail = __INITIAL_DATA__.detail
data = {
id: dom_songcid.value,
source: 'mg'
};
hadnleInject();
} else if (window.location.pathname.includes('/music/song/')) {
// eslint-disable-next-line no-undef
const dom_songcid = document.getElementById('songcid');
if (!dom_songcid || !dom_songcid.value) return;
(0, _utils.request)('get', `https://c.musicapp.migu.cn/MIGUM2.0/v1.0/content/resourceinfo.do?copyrightId=${dom_songcid.value}&resourceType=2`).then(response => {
if (response.code !== '000000') return;
console.log(response);
const detail = response.resource[0];
data = filterListDetail([detail])[0];
console.log(data);
hadnleInject();
});
}
});
};
_exports.default = _default;
});
/***/ }),
/***/ 1500:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(9853)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _utils) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
let data = null;
const getSinger = singers => {
let arr = [];
singers.forEach(singer => {
arr.push(singer.name);
});
return arr.join('、');
};
const filterListDetail = rawList => {
// console.log(rawList)
return rawList.map(item => {
let types = [];
let _types = {};
if (item.file.size_128mp3 !== 0) {
let size = (0, _utils.sizeFormate)(item.file.size_128mp3);
types.push({
type: '128k',
size
});
_types['128k'] = {
size
};
}
if (item.file.size_320mp3 !== 0) {
let size = (0, _utils.sizeFormate)(item.file.size_320mp3);
types.push({
type: '320k',
size
});
_types['320k'] = {
size
};
}
if (item.file.size_ape !== 0) {
let size = (0, _utils.sizeFormate)(item.file.size_ape);
types.push({
type: 'ape',
size
});
_types.ape = {
size
};
}
if (item.file.size_flac !== 0) {
let size = (0, _utils.sizeFormate)(item.file.size_flac);
types.push({
type: 'flac',
size
});
_types.flac = {
size
};
} // types.reverse()
return {
singer: getSinger(item.singer),
name: item.title,
albumName: item.album.title,
albumId: item.album.id,
source: 'tx',
interval: (0, _utils.formatPlayTime)(item.interval),
songId: item.id,
albumMid: item.album.mid,
strMediaMid: item.file.media_mid,
songmid: item.mid,
img: item.album.name === '' || item.album.name === '空' ? `https://y.gtimg.cn/music/photo_new/T001R500x500M000${item.singer[0].mid}.jpg` : `https://y.gtimg.cn/music/photo_new/T002R500x500M000${item.album.mid}.jpg`,
lrc: null,
otherSource: null,
types,
_types,
typeUrl: {}
};
});
};
const injectStyle = () => {
const style = document.createElement('style');
style.innerHTML = ` .data__cont{position: relative;}
.data__info { overflow: hidden; }
.singer_exclusive .mod_data_statistic { height: auto !important; } /** 修复歌手页排版问题 **/
.data__actions {position: relative; bottom: initial !important; white-space: nowrap; display: flex; flex-wrap: wrap; margin-top: 6px;}
.mod_btn, .mod_btn_green{ margin-bottom: 6px; } `;
document.head.appendChild(style);
};
const injectBtn = async callback => {
const dom_btn = document.querySelector('.data__actions a');
if (!dom_btn) {
let dom_loading = document.querySelector('.mod_loading');
console.log(dom_loading);
if (!dom_loading) return;
let observer_app;
let observer_wrap;
const handleChange = list => {
var _observer_app, _observer_wrap;
// console.log(list)
(_observer_app = observer_app) === null || _observer_app === void 0 ? void 0 : _observer_app.disconnect();
(_observer_wrap = observer_wrap) === null || _observer_wrap === void 0 ? void 0 : _observer_wrap.disconnect(); // if (dom_loading !== current_dom_loading) return
// dom_loading = null
setTimeout(() => {
const dom_btn = document.querySelector('.data__actions a');
if (!dom_btn) return;
if (dom_btn.parentNode.querySelector('.lx-btn')) return;
callback(dom_btn);
});
};
let dom_app = document.querySelector('#app'); // console.log(dom_app)
if (dom_app) {
observer_app = new window.MutationObserver(handleChange);
observer_app.observe(dom_app, {
attributes: false,
childList: true,
subtree: false
});
}
let dom_wrap = document.querySelector('#app>.wrap'); // console.log(dom_wrap)
if (dom_wrap) {
observer_wrap = new window.MutationObserver(handleChange);
observer_wrap.observe(dom_wrap, {
attributes: false,
childList: true,
subtree: false
});
} // current_dom_loading.addEventListener('DOMNodeRemoved', () => {
// console.log(dom_loading !== current_dom_loading)
// if (dom_loading !== current_dom_loading) return
// dom_loading = null
// setTimeout(() => {
// const dom_btn = document.querySelector('.data__actions a')
// if (!dom_btn) return
// callback(dom_btn)
// })
// })
return;
}
if (dom_btn.parentNode.querySelector('.lx-btn')) return;
callback(dom_btn);
};
const createBtn = (label, onClick, className = 'mod_btn_green') => {
className += ' lx-btn';
const dom_a = document.createElement('a');
dom_a.className = className;
dom_a.innerHTML = `<span class="btn__txt">${label}</span>`;
dom_a.addEventListener('click', onClick);
return dom_a;
};
const injectPlaylistPage = ({
id
}) => {
injectBtn(dom_btn => {
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中打开', () => {
(0, _utils.openApp)('songlist', 'open', {
source: 'tx',
id
});
}, 'mod_btn'));
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('songlist', 'play', {
source: 'tx',
id
});
}));
});
};
const injectSongDetailPage = musicInfo => {
console.log(musicInfo);
injectBtn(dom_btn => {
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('music', 'play', musicInfo);
}));
});
};
const hadnleInject = () => {
if (!data) return;
if (window.location.pathname.includes('/playlist/')) {
injectPlaylistPage(data);
} else if (window.location.pathname.includes('/songDetail/')) {
injectSongDetailPage(data);
}
};
var _default = () => {
window.addEventListener('load', () => {
injectStyle();
if (window.location.pathname.includes('/playlist/')) {
// eslint-disable-next-line no-undef
const detail = __INITIAL_DATA__.detail;
data = {
play_count: detail.listennum,
id: detail.id,
author: detail.host_nick,
name: detail.title,
img: detail.picurl,
desc: detail.desc,
source: 'tx'
};
} else if (window.location.pathname.includes('/songDetail/')) {
// eslint-disable-next-line no-undef
data = filterListDetail(__INITIAL_DATA__.songList)[0];
}
hadnleInject();
}); // window.history.pushState = ((f) =>
// function pushState() {
// const ret = f.apply(this, arguments)
// window.dispatchEvent(new window.Event('pushstate'))
// window.dispatchEvent(new window.Event('locationchange'))
// return ret
// })(window.history.pushState)
// window.history.replaceState = ((f) =>
// function replaceState() {
// const ret = f.apply(this, arguments)
// window.dispatchEvent(new window.Event('replacestate'))
// window.dispatchEvent(new window.Event('locationchange'))
// return ret
// })(window.history.replaceState)
// window.addEventListener('popstate', () => {
// window.dispatchEvent(new window.Event('locationchange'))
// })
// window.addEventListener('locationchange', function() {
// })
(0, _utils.requestHook)((url, requestBody, response) => {
if (!requestBody) return;
if (requestBody.includes('"module":"music.srfDissInfo.aiDissInfo"') && requestBody.includes('"method":"uniform_get_Dissinfo"')) {
if (response.code != 0) {
data = null;
return;
}
let detail;
for (const value of Object.values(response)) {
var _value$data;
if (value !== null && value !== void 0 && (_value$data = value.data) !== null && _value$data !== void 0 && _value$data.dirinfo) {
detail = value.data.dirinfo;
break;
}
}
data = {
play_count: detail.listennum,
id: detail.id,
author: detail.host_nick,
name: detail.title,
img: detail.picurl,
desc: detail.desc,
source: 'tx'
};
setTimeout(() => {
hadnleInject();
});
} else if (requestBody.includes('"module":"music.pf_song_detail_svr"') && requestBody.includes('"method":"get_song_detail_yqq"')) {
if (response.code != 0) {
data = null;
return;
}
let detail;
for (const value of Object.values(response)) {
var _value$data2;
if (value !== null && value !== void 0 && (_value$data2 = value.data) !== null && _value$data2 !== void 0 && _value$data2.track_info) {
detail = value.data.track_info;
break;
}
}
data = filterListDetail([detail])[0];
setTimeout(() => {
hadnleInject();
});
}
});
};
_exports.default = _default;
});
/***/ }),
/***/ 220:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(4916), __webpack_require__(4603), __webpack_require__(9853), __webpack_require__(442)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _esRegexpExec, _esRegexpConstructor, _utils, _forge) {
"use strict";
var _interopRequireDefault = __webpack_require__(5318);
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
_forge = _interopRequireDefault(_forge);
let data = null;
const idRxp = /id=(\d+)/;
let dom_iframe;
const getSinger = singers => {
let arr = [];
singers.forEach(singer => {
arr.push(singer.name);
});
return arr.join('、');
};
const filterList = ({
songs,
privileges
}) => {
// console.log(songs, privileges)
const list = [];
songs.forEach((item, index) => {
const types = [];
const _types = {};
let size;
let privilege = privileges[index];
if (privilege.id !== item.id) privilege = privileges.find(p => p.id === item.id);
if (!privilege) return;
switch (privilege.maxbr) {
case 999000:
size = null;
types.push({
type: 'flac',
size
});
_types.flac = {
size
};
case 320000:
if (item.h) {
size = (0, _utils.sizeFormate)(item.h.size);
types.push({
type: '320k',
size
});
_types['320k'] = {
size
};
}
case 192000:
case 128000:
if (item.l) {
size = (0, _utils.sizeFormate)(item.l.size);
types.push({
type: '128k',
size
});
_types['128k'] = {
size
};
}
}
types.reverse();
list.push({
singer: getSinger(item.ar),
name: item.name,
albumName: item.al.name,
albumId: item.al.id,
source: 'wy',
interval: (0, _utils.formatPlayTime)(item.dt / 1000),
songmid: item.id,
img: item.al.picUrl,
lrc: null,
otherSource: null,
types,
_types,
typeUrl: {}
});
});
return list;
};
const injectStyle = () => {
const style = dom_iframe.contentWindow.document.createElement('style');
style.innerHTML = '.btns{display: flex; flex-flow: row wrap;} .btns > a {margin-bottom: 6px;} .margin-right { margin-right: 5px; }';
dom_iframe.contentWindow.document.head.appendChild(style);
};
const injectBtn = () => {
let dom_btn = dom_iframe.contentWindow.document.querySelector('.btns .u-btni-add');
if (!dom_btn) dom_btn = dom_iframe.contentWindow.document.querySelector('.btns .u-vip-btn-group');
if (!dom_btn) dom_btn = dom_iframe.contentWindow.document.querySelector('.btns .u-btni-openvipply');
return dom_btn;
};
const createBtn = (label, onClick, className = 'u-btn2 u-btn2-2 u-btni-addply f-fl margin-right') => {
const dom_a = dom_iframe.contentWindow.document.createElement('a');
dom_a.className = className;
dom_a.innerHTML = `<i>${className.includes('u-btn2-2') ? '<em class="ply"></em>' : ''}${label}</i>`;
dom_a.addEventListener('click', onClick);
return dom_a;
};
const injectPlaylistPage = ({
id
}) => {
const dom_btn = injectBtn();
if (!dom_btn) return;
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中打开', () => {
(0, _utils.openApp)('songlist', 'open', {
source: 'wy',
id
});
}, 'u-btni u-btni-share'));
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('songlist', 'play', {
source: 'wy',
id
});
}));
};
const injectSongDetailPage = musicInfo => {
console.log(musicInfo);
const dom_btn = injectBtn();
if (!dom_btn) return;
dom_btn.insertAdjacentElement('afterend', createBtn('在 LX Music 中播放', () => {
(0, _utils.openApp)('music', 'play', musicInfo);
}));
};
const hadnleInject = () => {
if (!data) return;
if (dom_iframe.contentWindow.location.href.includes('/playlist?')) {
injectPlaylistPage(data);
} else if (dom_iframe.contentWindow.location.href.includes('/song?')) {
injectSongDetailPage(data);
}
}; // https://github.com/listen1/listen1_chrome_extension/blob/master/js/provider/netease.js
const create_secret_key = size => {
const result = [];
const choice = '012345679abcdef'.split('');
for (let i = 0; i < size; i += 1) {
const index = Math.floor(Math.random() * choice.length);
result.push(choice[index]);
}
return result.join('');
};
const aes_encrypt = (text, sec_key, algo) => {
const cipher = _forge.default.cipher.createCipher(algo, sec_key);
cipher.start({
iv: '0102030405060708'
});
cipher.update(_forge.default.util.createBuffer(text));
cipher.finish();
return cipher.output;
};
const rsa_encrypt = (text, pubKey, modulus) => {
text = text.split('').reverse().join(''); // eslint-disable-line no-param-reassign
const n = new _forge.default.jsbn.BigInteger(modulus, 16);
const e = new _forge.default.jsbn.BigInteger(pubKey, 16);
const b = new _forge.default.jsbn.BigInteger(_forge.default.util.bytesToHex(text), 16);
const enc = b.modPow(e, n).toString(16).padStart(256, '0');
return enc;
};
const weapi = text => {
const modulus = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b72' + '5152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbd' + 'a92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe48' + '75d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7';
const nonce = '0CoJUm6Qyw8W8jud';
const pubKey = '010001';
text = JSON.stringify(text); // eslint-disable-line no-param-reassign
const sec_key = create_secret_key(16);
const enc_text = btoa(aes_encrypt(btoa(aes_encrypt(text, nonce, 'AES-CBC').data), sec_key, 'AES-CBC').data);
const enc_sec_key = rsa_encrypt(sec_key, pubKey, modulus);
const data = {
params: enc_text,
encSecKey: enc_sec_key
};
return data;
};
const wyWeapiRequest = (method, url, data) => {
const json = weapi(data);
return (0, _utils.request)(method, url, `params=${encodeURIComponent(json.params)}&encSecKey=${encodeURIComponent(json.encSecKey)}`, {
'Content-Type': 'application/x-www-form-urlencoded'
});
};
var _default = () => {
window.addEventListener('DOMContentLoaded', () => {
dom_iframe = document.getElementById('g_iframe');
if (!dom_iframe) return;
dom_iframe.addEventListener('load', () => {
injectStyle();
if (dom_iframe.contentWindow.location.href.includes('/playlist?')) {
if (!idRxp.test(dom_iframe.contentWindow.location.href)) return;
const id = RegExp.$1;
data = {
id,
source: 'wy'
};
hadnleInject();
} else if (dom_iframe.contentWindow.location.href.includes('/song?')) {
if (!idRxp.test(dom_iframe.contentWindow.location.href)) return;
const id = RegExp.$1;
wyWeapiRequest('POST', 'https://music.163.com/weapi/v3/song/detail', {
c: '[{"id":' + id + '}]'
}).then(res => {
if (res.code != 200) return;
data = filterList(res)[0];
hadnleInject();
});
}
});
});
};
_exports.default = _default;
});
/***/ }),
/***/ 9853:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(4916), __webpack_require__(5306)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _esRegexpExec, _esStringReplace) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.wait = _exports.sizeFormate = _exports.requestHook = _exports.request = _exports.openApp = _exports.formatPlayTime = _exports.encodeData = _exports.decodeName = void 0;
const requestHook = callback => {
let oldXHROpen = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url) {
// do something with the method, url and etc.
this._url = url; // this.addEventListener('load', function () {
// // do something with the response text
// console.log('load: ' + url)
// console.log(JSON.parse(this.responseText))
// try {
// callback(url, JSON.parse(this.responseText))
// } catch (_) {}
// })
return oldXHROpen.apply(this, arguments);
};
let oldXHRSend = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function (data) {
this.addEventListener('load', function () {
// do something with the response text
// console.log('load: ' + data)
// console.log(JSON.parse(this.responseText))
try {
callback(this._url, data, JSON.parse(this.responseText));
} catch (_) {}
});
oldXHRSend.call(this, data);
};
};
_exports.requestHook = requestHook;
const encodeData = data => encodeURIComponent(JSON.stringify(data));
_exports.encodeData = encodeData;
const sizeFormate = size => {
// https://gist.github.com/thomseddon/3511330
if (!size) return '0 B';
let units = ['B', 'KB', 'MB', 'GB', 'TB'];
let number = Math.floor(Math.log(size) / Math.log(1024));
return `${(size / Math.pow(1024, Math.floor(number))).toFixed(2)} ${units[number]}`;
};
_exports.sizeFormate = sizeFormate;
const formatPlayTime = time => {
let m = parseInt(time / 60);
let s = parseInt(time % 60);
return m === 0 && s === 0 ? '--/--' : (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s);
};
_exports.formatPlayTime = formatPlayTime;
const encodeNames = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
''': "'",
''': "'"
};
const decodeName = (str = '') => (str === null || str === void 0 ? void 0 : str.replace(/(?:&|<|>|"|'|')/gm, s => encodeNames[s])) || '';
_exports.decodeName = decodeName;
const openApp = (type, action, data) => {
const dom_a = document.createElement('a');
dom_a.href = `lxmusic://${type}/${action}?data=${encodeData(data)}`;
dom_a.click();
};
_exports.openApp = openApp;
const request = (method, url, data, headers) => {
const xhr = new window.XMLHttpRequest();
xhr.open(method, url);
if (headers) {
for (const [key, value] of Object.entries(headers)) {
xhr.setRequestHeader(key, value);
}
}
xhr.addEventListener('load', function () {
let response;
try {
response = JSON.parse(this.responseText);
} catch (err) {
_resolve(this.responseText);
}
_resolve(response);
});
xhr.addEventListener('error', function (err) {
_reject(err);
});
let _resolve;
let _reject;
if (method && method.toUpperCase() === 'POST') {
xhr.send(data);
} else {
xhr.send();
}
return new Promise((resolve, reject) => {
_resolve = resolve;
_reject = reject;
});
};
_exports.request = request;
const wait = time => new Promise(resolve => setTimeout(resolve, time));
_exports.wait = wait;
});
/***/ }),
/***/ 442:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) {
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(3462), __webpack_require__(4633), __webpack_require__(4916), __webpack_require__(5306), __webpack_require__(5827), __webpack_require__(4603), __webpack_require__(2087)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else { var mod; }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_esTypedArraySet, _webImmediate, _esRegexpExec, _esStringReplace, _esArrayReduce, _esRegexpConstructor, _esRegexpFlags) {
"use strict";
!function (e, t) {
true ? module.exports = t() : 0;
}(window, function () {
return function (e) {
var t = {};
function r(a) {
if (t[a]) return t[a].exports;
var n = t[a] = {
i: a,
l: !1,
exports: {}
};
return e[a].call(n.exports, n, n.exports, r), n.l = !0, n.exports;
}
return r.m = e, r.c = t, r.d = function (e, t, a) {
r.o(e, t) || Object.defineProperty(e, t, {
enumerable: !0,
get: a
});
}, r.r = function (e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(e, "__esModule", {
value: !0
});
}, r.t = function (e, t) {
if (1 & t && (e = r(e)), 8 & t) return e;
if (4 & t && "object" == typeof e && e && e.__esModule) return e;
var a = Object.create(null);
if (r.r(a), Object.defineProperty(a, "default", {
enumerable: !0,
value: e
}), 2 & t && "string" != typeof e) for (var n in e) r.d(a, n, function (t) {
return e[t];
}.bind(null, n));
return a;
}, r.n = function (e) {
var t = e && e.__esModule ? function () {
return e.default;
} : function () {
return e;
};
return r.d(t, "a", t), t;
}, r.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
}, r.p = "", r(r.s = 32);
}([function (e, t) {
e.exports = {
options: {
usePureJavaScript: !1
}
};
}, function (e, t, r) {
(function (t) {
var a = r(0),
n = r(35),
i = e.exports = a.util = a.util || {};
function s(e) {
if (8 !== e && 16 !== e && 24 !== e && 32 !== e) throw new Error("Only 8, 16, 24, or 32 bits supported: " + e);
}
function o(e) {
if (this.data = "", this.read = 0, "string" == typeof e) this.data = e;else if (i.isArrayBuffer(e) || i.isArrayBufferView(e)) {
if ("undefined" != typeof Buffer && e instanceof Buffer) this.data = e.toString("binary");else {
var t = new Uint8Array(e);
try {
this.data = String.fromCharCode.apply(null, t);
} catch (e) {
for (var r = 0; r < t.length; ++r) this.putByte(t[r]);
}
}
} else (e instanceof o || "object" == typeof e && "string" == typeof e.data && "number" == typeof e.read) && (this.data = e.data, this.read = e.read);
this._constructedStringLength = 0;
}
!function () {
if ("undefined" != typeof process && process.nextTick && !process.browser) return i.nextTick = process.nextTick, void ("function" == typeof setImmediate ? i.setImmediate = setImmediate : i.setImmediate = i.nextTick);
if ("function" == typeof setImmediate) return i.setImmediate = function () {
return setImmediate.apply(void 0, arguments);
}, void (i.nextTick = function (e) {
return setImmediate(e);
});
if (i.setImmediate = function (e) {
setTimeout(e, 0);
}, "undefined" != typeof window && "function" == typeof window.postMessage) {
var e = "forge.setImmediate",
t = [];
i.setImmediate = function (r) {
t.push(r), 1 === t.length && window.postMessage(e, "*");
}, window.addEventListener("message", function (r) {
if (r.source === window && r.data === e) {
r.stopPropagation();
var a = t.slice();
t.length = 0, a.forEach(function (e) {
e();
});
}
}, !0);
}
if ("undefined" != typeof MutationObserver) {
var r = Date.now(),
a = !0,
n = document.createElement("div");
t = [];
new MutationObserver(function () {
var e = t.slice();
t.length = 0, e.forEach(function (e) {
e();
});
}).observe(n, {
attributes: !0
});
var s = i.setImmediate;
i.setImmediate = function (e) {
Date.now() - r > 15 ? (r = Date.now(), s(e)) : (t.push(e), 1 === t.length && n.setAttribute("a", a = !a));
};
}
i.nextTick = i.setImmediate;
}(), i.isNodejs = "undefined" != typeof process && process.versions && process.versions.node, i.globalScope = i.isNodejs ? t : "undefined" == typeof self ? window : self, i.isArray = Array.isArray || function (e) {
return "[object Array]" === Object.prototype.toString.call(e);
}, i.isArrayBuffer = function (e) {
return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer;
}, i.isArrayBufferView = function (e) {
return e && i.isArrayBuffer(e.buffer) && void 0 !== e.byteLength;
}, i.ByteBuffer = o, i.ByteStringBuffer = o;
i.ByteStringBuffer.prototype._optimizeConstructedString = function (e) {
this._constructedStringLength += e, this._constructedStringLength > 4096 && (this.data.substr(0, 1), this._constructedStringLength = 0);
}, i.ByteStringBuffer.prototype.length = function () {
return this.data.length - this.read;
}, i.ByteStringBuffer.prototype.isEmpty = function () {
return this.length() <= 0;
}, i.ByteStringBuffer.prototype.putByte = function (e) {
return this.putBytes(String.fromCharCode(e));
}, i.ByteStringBuffer.prototype.fillWithByte = function (e, t) {
e = String.fromCharCode(e);
for (var r = this.data; t > 0;) 1 & t && (r += e), (t >>>= 1) > 0 && (e += e);
return this.data = r, this._optimizeConstructedString(t), this;
}, i.ByteStringBuffer.prototype.putBytes = function (e) {
return this.data += e, this._optimizeConstructedString(e.length), this;
}, i.ByteStringBuffer.prototype.putString = function (e) {
return this.putBytes(i.encodeUtf8(e));
}, i.ByteStringBuffer.prototype.putInt16 = function (e) {
return this.putBytes(String.fromCharCode(e >> 8 & 255) + String.fromCharCode(255 & e));
}, i.ByteStringBuffer.prototype.putInt24 = function (e) {
return this.putBytes(String.fromCharCode(e >> 16 & 255) + String.fromCharCode(e >> 8 & 255) + String.fromCharCode(255 & e));
}, i.ByteStringBuffer.prototype.putInt32 = function (e) {
return this.putBytes(String.fromCharCode(e >> 24 & 255) + String.fromCharCode(e >> 16 & 255) + String.fromCharCode(e >> 8 & 255) + String.fromCharCode(255 & e));
}, i.ByteStringBuffer.prototype.putInt16Le = function (e) {
return this.putBytes(String.fromCharCode(255 & e) + String.fromCharCode(e >> 8 & 255));
}, i.ByteStringBuffer.prototype.putInt24Le = function (e) {
return this.putBytes(String.fromCharCode(255 & e) + String.fromCharCode(e >> 8 & 255) + String.fromCharCode(e >> 16 & 255));
}, i.ByteStringBuffer.prototype.putInt32Le = function (e) {
return this.putBytes(String.fromCharCode(255 & e) + String.fromCharCode(e >> 8 & 255) + String.fromCharCode(e >> 16 & 255) + String.fromCharCode(e >> 24 & 255));
}, i.ByteStringBuffer.prototype.putInt = function (e, t) {
s(t);
var r = "";
do {
t -= 8, r += String.fromCharCode(e >> t & 255);
} while (t > 0);
return this.putBytes(r);
}, i.ByteStringBuffer.prototype.putSignedInt = function (e, t) {
return e < 0 && (e += 2 << t - 1), this.putInt(e, t);
}, i.ByteStringBuffer.prototype.putBuffer = function (e) {
return this.putBytes(e.getBytes());
}, i.ByteStringBuffer.prototype.getByte = function () {
return this.data.charCodeAt(this.read++);
}, i.ByteStringBuffer.prototype.getInt16 = function () {
var e = this.data.charCodeAt(this.read) << 8 ^ this.data.charCodeAt(this.read + 1);
return this.read += 2, e;
}, i.ByteStringBuffer.prototype.getInt24 = function () {
var e = this.data.charCodeAt(this.read) << 16 ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2);
return this.read += 3, e;
}, i.ByteStringBuffer.prototype.getInt32 = function () {
var e = this.data.charCodeAt(this.read) << 24 ^ this.data.charCodeAt(this.read + 1) << 16 ^ this.data.charCodeAt(this.read + 2) << 8 ^ this.data.charCodeAt(this.read + 3);
return this.read += 4, e;
}, i.ByteStringBuffer.prototype.getInt16Le = function () {
var e = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8;
return this.read += 2, e;
}, i.ByteStringBuffer.prototype.getInt24Le = function () {
var e = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2) << 16;
return this.read += 3, e;
}, i.ByteStringBuffer.prototype.getInt32Le = function () {
var e = this.data.charCodeAt(this.read) ^ this.data.charCodeAt(this.read + 1) << 8 ^ this.data.charCodeAt(this.read + 2) << 16 ^ this.data.charCodeAt(this.read + 3) << 24;
return this.read += 4, e;
}, i.ByteStringBuffer.prototype.getInt = function (e) {
s(e);
var t = 0;
do {
t = (t << 8) + this.data.charCodeAt(this.read++), e -= 8;
} while (e > 0);
return t;
}, i.ByteStringBuffer.prototype.getSignedInt = function (e) {
var t = this.getInt(e),
r = 2 << e - 2;
return t >= r && (t -= r << 1), t;
}, i.ByteStringBuffer.prototype.getBytes = function (e) {
var t;
return e ? (e = Math.min(this.length(), e), t = this.data.slice(this.read, this.read + e), this.read += e) : 0 === e ? t = "" : (t = 0 === this.read ? this.data : this.data.slice(this.read), this.clear()), t;
}, i.ByteStringBuffer.prototype.bytes = function (e) {
return void 0 === e ? this.data.slice(this.read) : this.data.slice(this.read, this.read + e);
}, i.ByteStringBuffer.prototype.at = function (e) {
return this.data.charCodeAt(this.read + e);
}, i.ByteStringBuffer.prototype.setAt = function (e, t) {
return this.data = this.data.substr(0, this.read + e) + String.fromCharCode(t) + this.data.substr(this.read + e + 1), this;
}, i.ByteStringBuffer.prototype.last = function () {
return this.data.charCodeAt(this.data.length - 1);
}, i.ByteStringBuffer.prototype.copy = function () {
var e = i.createBuffer(this.data);
return e.read = this.read, e;
}, i.ByteStringBuffer.prototype.compact = function () {
return this.read > 0 && (this.data = this.data.slice(this.read), this.read = 0), this;
}, i.ByteStringBuffer.prototype.clear = function () {
return this.data = "", this.read = 0, this;
}, i.ByteStringBuffer.prototype.truncate = function (e) {
var t = Math.max(0, this.length() - e);
return this.data = this.data.substr(this.read, t), this.read = 0, this;
}, i.ByteStringBuffer.prototype.toHex = function () {
for (var e = "", t = this.read; t < this.data.length; ++t) {
var r = this.data.charCodeAt(t);
r < 16 && (e += "0"), e += r.toString(16);
}
return e;
}, i.ByteStringBuffer.prototype.toString = function () {
return i.decodeUtf8(this.bytes());
}, i.DataBuffer = function (e, t) {
t = t || {}, this.read = t.readOffset || 0, this.growSize = t.growSize || 1024;
var r = i.isArrayBuffer(e),
a = i.isArrayBufferView(e);
if (r || a) return this.data = r ? new DataView(e) : new DataView(e.buffer, e.byteOffset, e.byteLength), void (this.write = "writeOffset" in t ? t.writeOffset : this.data.byteLength);
this.data = new DataView(new ArrayBuffer(0)), this.write = 0, null != e && this.putBytes(e), "writeOffset" in t && (this.write = t.writeOffset);
}, i.DataBuffer.prototype.length = function () {
return this.write - this.read;
}, i.DataBuffer.prototype.isEmpty = function () {
return this.length() <= 0;
}, i.DataBuffer.prototype.accommodate = function (e, t) {
if (this.length() >= e) return this;
t = Math.max(t || this.growSize, e);
var r = new Uint8Array(this.data.buffer, this.data.byteOffset, this.data.byteLength),
a = new Uint8Array(this.length() + t);
return a.set(r), this.data = new DataView(a.buffer), this;
}, i.DataBuffer.prototype.putByte = function (e) {
return this.accommodate(1), this.data.setUint8(this.write++, e), this;
}, i.DataBuffer.prototype.fillWithByte = function (e, t) {
this.accommodate(t);
for (var r = 0; r < t; ++r) this.data.setUint8(e);
return this;
}, i.DataBuffer.prototype.putBytes = function (e, t) {
if (i.isArrayBufferView(e)) {
var r = (a = new Uint8Array(e.buffer, e.byteOffset, e.byteLength)).byteLength - a.byteOffset;
return this.accommodate(r), new Uint8Array(this.data.buffer, this.write).set(a), this.write += r, this;
}
if (i.isArrayBuffer(e)) {
var a = new Uint8Array(e);
return this.accommodate(a.byteLength), new Uint8Array(this.data.buffer).set(a, this.write), this.write += a.byteLength, this;
}
if (e instanceof i.DataBuffer || "object" == typeof e && "number" == typeof e.read && "number" == typeof e.write && i.isArrayBufferView(e.data)) {
a = new Uint8Array(e.data.byteLength, e.read, e.length());
return this.accommodate(a.byteLength), new Uint8Array(e.data.byteLength, this.write).set(a), this.write += a.byteLength, this;
}
if (e instanceof i.ByteStringBuffer && (e = e.data, t = "binary"), t = t || "binary", "string" == typeof e) {
var n;
if ("hex" === t) return this.accommodate(Math.ceil(e.length / 2)), n = new Uint8Array(this.data.buffer, this.write), this.write += i.binary.hex.decode(e, n, this.write), this;
if ("base64" === t) return this.accommodate(3 * Math.ceil(e.length / 4)), n = new Uint8Array(this.data.buffer, this.write), this.write += i.binary.base64.decode(e, n, this.write), this;
if ("utf8" === t && (e = i.encodeUtf8(e), t = "binary"), "binary" === t || "raw" === t) return this.accommodate(e.length), n = new Uint8Array(this.data.buffer, this.write), this.write += i.binary.raw.decode(n), this;
if ("utf16" === t) return this.accommodate(2 * e.length), n = new Uint16Array(this.data.buffer, this.write), this.write += i.text.utf16.encode(n), this;
throw new Error("Invalid encoding: " + t);
}
throw Error("Invalid parameter: " + e);
}, i.DataBuffer.prototype.putBuffer = function (e) {
return this.putBytes(e), e.clear(), this;
}, i.DataBuffer.prototype.putString = function (e) {
return this.putBytes(e, "utf16");
}, i.DataBuffer.prototype.putInt16 = function (e) {
return this.accommodate(2), this.data.setInt16(this.write, e), this.write += 2, this;
}, i.DataBuffer.prototype.putInt24 = function (e) {
return this.accommodate(3), this.data.setInt16(this.write, e >> 8 & 65535), this.data.setInt8(this.write, e >> 16 & 255), this.write += 3, this;
}, i.DataBuffer.prototype.putInt32 = function (e) {
return this.accommodate(4), this.data.setInt32(this.write, e), this.write += 4, this;
}, i.DataBuffer.prototype.putInt16Le = function (e) {
return this.accommodate(2), this.data.setInt16(this.write, e, !0), this.write += 2, this;
}, i.DataBuffer.prototype.putInt24Le = function (e) {
return this.accommodate(3), this.data.setInt8(this.write, e >> 16 & 255), this.data.setInt16(this.write, e >> 8 & 65535, !0), this.write += 3, this;
}, i.DataBuffer.prototype.putInt32Le = function (e) {
return this.accommodate(4), this.data.setInt32(this.write, e, !0), this.write += 4, this;
}, i.DataBuffer.prototype.putInt = function (e, t) {
s(t), this.accommodate(t / 8);
do {
t -= 8, this.data.setInt8(this.write++, e >> t & 255);
} while (t > 0);
return this;
}, i.DataBuffer.prototype.putSignedInt = function (e, t) {
return s(t), this.accommodate(t / 8), e < 0 && (e += 2 << t - 1), this.putInt(e, t);
}, i.DataBuffer.prototype.getByte = function () {
return this.data.getInt8(this.read++);
}, i.DataBuffer.prototype.getInt16 = function () {
var e = this.data.getInt16(this.read);
return this.read += 2, e;
}, i.DataBuffer.prototype.getInt24 = function () {
var e = this.data.getInt16(this.read) << 8 ^ this.data.getInt8(this.read + 2);
return this.read += 3, e;
}, i.DataBuffer.prototype.getInt32 = function () {
var e = this.data.getInt32(this.read);
return this.read += 4, e;
}, i.DataBuffer.prototype.getInt16Le = function () {
var e = this.data.getInt16(this.read, !0);
return this.read += 2, e;
}, i.DataBuffer.prototype.getInt24Le = function () {
var e = this.data.getInt8(this.read) ^ this.data.getInt16(this.read + 1, !0) << 8;
return this.read += 3, e;
}, i.DataBuffer.prototype.getInt32Le = function () {
var e = this.data.getInt32(this.read, !0);
return this.read += 4, e;
}, i.DataBuffer.prototype.getInt = function (e) {
s(e);
var t = 0;
do {
t = (t << 8) + this.data.getInt8(this.read++), e -= 8;
} while (e > 0);
return t;
}, i.DataBuffer.prototype.getSignedInt = function (e) {
var t = this.getInt(e),
r = 2 << e - 2;
return t >= r && (t -= r << 1), t;
}, i.DataBuffer.prototype.getBytes = function (e) {
var t;
return e ? (e = Math.min(this.length(), e), t = this.data.slice(this.read, this.read + e), this.read += e) : 0 === e ? t = "" : (t = 0 === this.read ? this.data : this.data.slice(this.read), this.clear()), t;
}, i.DataBuffer.prototype.bytes = function (e) {
return void 0 === e ? this.data.slice(this.read) : this.data.slice(this.read, this.read + e);
}, i.DataBuffer.prototype.at = function (e) {
return this.data.getUint8(this.read + e);
}, i.DataBuffer.prototype.setAt = function (e, t) {
return this.data.setUint8(e, t), this;
}, i.DataBuffer.prototype.last = function () {
return this.data.getUint8(this.write - 1);
}, i.DataBuffer.prototype.copy = function () {
return new i.DataBuffer(this);
}, i.DataBuffer.prototype.compact = function () {
if (this.read > 0) {
var e = new Uint8Array(this.data.buffer, this.read),
t = new Uint8Array(e.byteLength);
t.set(e), this.data = new DataView(t), this.write -= this.read, this.read = 0;
}
return this;
}, i.DataBuffer.prototype.clear = function () {
return this.data = new DataView(new ArrayBuffer(0)), this.read = this.write = 0, this;
}, i.DataBuffer.prototype.truncate = function (e) {
return this.write = Math.max(0, this.length() - e), this.read = Math.min(this.read, this.write), this;
}, i.DataBuffer.prototype.toHex = function () {
for (var e = "", t = this.read; t < this.data.byteLength; ++t) {
var r = this.data.getUint8(t);
r < 16 && (e += "0"), e += r.toString(16);
}
return e;
}, i.DataBuffer.prototype.toString = function (e) {
var t = new Uint8Array(this.data, this.read, this.length());
if ("binary" === (e = e || "utf8") || "raw" === e) return i.binary.raw.encode(t);
if ("hex" === e) return i.binary.hex.encode(t);
if ("base64" === e) return i.binary.base64.encode(t);
if ("utf8" === e) return i.text.utf8.decode(t);
if ("utf16" === e) return i.text.utf16.decode(t);
throw new Error("Invalid encoding: " + e);
}, i.createBuffer = function (e, t) {
return t = t || "raw", void 0 !== e && "utf8" === t && (e = i.encodeUtf8(e)), new i.ByteBuffer(e);
}, i.fillString = function (e, t) {
for (var r = ""; t > 0;) 1 & t && (r += e), (t >>>= 1) > 0 && (e += e);
return r;
}, i.xorBytes = function (e, t, r) {
for (var a = "", n = "", i = "", s = 0, o = 0; r > 0; --r, ++s) n = e.charCodeAt(s) ^ t.charCodeAt(s), o >= 10 && (a += i, i = "", o = 0), i += String.fromCharCode(n), ++o;
return a += i;
}, i.hexToBytes = function (e) {
var t = "",
r = 0;
for (!0 & e.length && (r = 1, t += String.fromCharCode(parseInt(e[0], 16))); r < e.length; r += 2) t += String.fromCharCode(parseInt(e.substr(r, 2), 16));
return t;
}, i.bytesToHex = function (e) {
return i.createBuffer(e).toHex();
}, i.int32ToBytes = function (e) {
return String.fromCharCode(e >> 24 & 255) + String.fromCharCode(e >> 16 & 255) + String.fromCharCode(e >> 8 & 255) + String.fromCharCode(255 & e);
};
var c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
u = [62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, 64, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51],
l = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
i.encode64 = function (e, t) {
for (var r, a, n, i = "", s = "", o = 0; o < e.length;) r = e.charCodeAt(o++), a = e.charCodeAt(o++), n = e.charCodeAt(o++), i += c.charAt(r >> 2), i += c.charAt((3 & r) << 4 | a >> 4), isNaN(a) ? i += "==" : (i += c.charAt((15 & a) << 2 | n >> 6), i += isNaN(n) ? "=" : c.charAt(63 & n)), t && i.length > t && (s += i.substr(0, t) + "\r\n", i = i.substr(t));
return s += i;
}, i.decode64 = function (e) {
e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
for (var t, r, a, n, i = "", s = 0; s < e.length;) t = u[e.charCodeAt(s++) - 43], r = u[e.charCodeAt(s++) - 43], a = u[e.charCodeAt(s++) - 43], n = u[e.charCodeAt(s++) - 43], i += String.fromCharCode(t << 2 | r >> 4), 64 !== a && (i += String.fromCharCode((15 & r) << 4 | a >> 2), 64 !== n && (i += String.fromCharCode((3 & a) << 6 | n)));
return i;
}, i.encodeUtf8 = function (e) {
return unescape(encodeURIComponent(e));
}, i.decodeUtf8 = function (e) {
return decodeURIComponent(escape(e));
}, i.binary = {
raw: {},
hex: {},
base64: {},
base58: {},
baseN: {
encode: n.encode,
decode: n.decode
}
}, i.binary.raw.encode = function (e) {
return String.fromCharCode.apply(null, e);
}, i.binary.raw.decode = function (e, t, r) {
var a = t;
a || (a = new Uint8Array(e.length));
for (var n = r = r || 0, i = 0; i < e.length; ++i) a[n++] = e.charCodeAt(i);
return t ? n - r : a;
}, i.binary.hex.encode = i.bytesToHex, i.binary.hex.decode = function (e, t, r) {
var a = t;
a || (a = new Uint8Array(Math.ceil(e.length / 2)));
var n = 0,
i = r = r || 0;
for (1 & e.length && (n = 1, a[i++] = parseInt(e[0], 16)); n < e.length; n += 2) a[i++] = parseInt(e.substr(n, 2), 16);
return t ? i - r : a;
}, i.binary.base64.encode = function (e, t) {
for (var r, a, n, i = "", s = "", o = 0; o < e.byteLength;) r = e[o++], a = e[o++], n = e[o++], i += c.charAt(r >> 2), i += c.charAt((3 & r) << 4 | a >> 4), isNaN(a) ? i += "==" : (i += c.charAt((15 & a) << 2 | n >> 6), i += isNaN(n) ? "=" : c.charAt(63 & n)), t && i.length > t && (s += i.substr(0, t) + "\r\n", i = i.substr(t));
return s += i;
}, i.binary.base64.decode = function (e, t, r) {
var a,
n,
i,
s,
o = t;
o || (o = new Uint8Array(3 * Math.ceil(e.length / 4))), e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
for (var c = 0, l = r = r || 0; c < e.length;) a = u[e.charCodeAt(c++) - 43], n = u[e.charCodeAt(c++) - 43], i = u[e.charCodeAt(c++) - 43], s = u[e.charCodeAt(c++) - 43], o[l++] = a << 2 | n >> 4, 64 !== i && (o[l++] = (15 & n) << 4 | i >> 2, 64 !== s && (o[l++] = (3 & i) << 6 | s));
return t ? l - r : o.subarray(0, l);
}, i.binary.base58.encode = function (e, t) {
return i.binary.baseN.encode(e, l, t);
}, i.binary.base58.decode = function (e, t) {
return i.binary.baseN.decode(e, l, t);
}, i.text = {
utf8: {},
utf16: {}
}, i.text.utf8.encode = function (e, t, r) {
e = i.encodeUtf8(e);
var a = t;
a || (a = new Uint8Array(e.length));
for (var n = r = r || 0, s = 0; s < e.length; ++s) a[n++] = e.charCodeAt(s);
return t ? n - r : a;
}, i.text.utf8.decode = function (e) {
return i.decodeUtf8(String.fromCharCode.apply(null, e));
}, i.text.utf16.encode = function (e, t, r) {
var a = t;
a || (a = new Uint8Array(2 * e.length));
for (var n = new Uint16Array(a.buffer), i = r = r || 0, s = r, o = 0; o < e.length; ++o) n[s++] = e.charCodeAt(o), i += 2;
return t ? i - r : a;
}, i.text.utf16.decode = function (e) {
return String.fromCharCode.apply(null, new Uint16Array(e.buffer));
}, i.deflate = function (e, t, r) {
if (t = i.decode64(e.deflate(i.encode64(t)).rval), r) {
var a = 2;
32 & t.charCodeAt(1) && (a = 6), t = t.substring(a, t.length - 4);
}
return t;
}, i.inflate = function (e, t, r) {
var a = e.inflate(i.encode64(t)).rval;
return null === a ? null : i.decode64(a);
};
var p = function (e, t, r) {
if (!e) throw new Error("WebStorage not available.");
var a;
if (null === r ? a = e.removeItem(t) : (r = i.encode64(JSON.stringify(r)), a = e.setItem(t, r)), void 0 !== a && !0 !== a.rval) {
var n = new Error(a.error.message);
throw n.id = a.error.id, n.name = a.error.name, n;
}
},
f = function (e, t) {
if (!e) throw new Error("WebStorage not available.");
var r = e.getItem(t);
if (e.init) if (null === r.rval) {
if (r.error) {
var a = new Error(r.error.message);
throw a.id = r.error.id, a.name = r.error.name, a;
}
r = null;
} else r = r.rval;
return null !== r && (r = JSON.parse(i.decode64(r))), r;
},
h = function (e, t, r, a) {
var n = f(e, t);
null === n && (n = {}), n[r] = a, p(e, t, n);
},
d = function (e, t, r) {
var a = f(e, t);
return null !== a && (a = r in a ? a[r] : null), a;
},
y = function (e, t, r) {
var a = f(e, t);
if (null !== a && r in a) {
delete a[r];
var n = !0;
for (var i in a) {
n = !1;
break;
}
n && (a = null), p(e, t, a);
}
},
g = function (e, t) {
p(e, t, null);
},
m = function (e, t, r) {
var a,
n = null;
void 0 === r && (r = ["web", "flash"]);
var i = !1,
s = null;
for (var o in r) {
a = r[o];
try {
if ("flash" === a || "both" === a) {
if (null === t[0]) throw new Error("Flash local storage not available.");
n = e.apply(this, t), i = "flash" === a;
}
"web" !== a && "both" !== a || (t[0] = localStorage, n = e.apply(this, t), i = !0);
} catch (e) {
s = e;
}
if (i) break;
}
if (!i) throw s;
return n;
};
i.setItem = function (e, t, r, a, n) {
m(h, arguments, n);
}, i.getItem = function (e, t, r, a) {
return m(d, arguments, a);
}, i.removeItem = function (e, t, r, a) {
m(y, arguments, a);
}, i.clearItems = function (e, t, r) {
m(g, arguments, r);
}, i.isEmpty = function (e) {
for (var t in e) if (e.hasOwnProperty(t)) return !1;
return !0;
}, i.format = function (e) {
for (var t, r, a = /%./g, n = 0, i = [], s = 0; t = a.exec(e);) {
(r = e.substring(s, a.lastIndex - 2)).length > 0 && i.push(r), s = a.lastIndex;
var o = t[0][1];
switch (o) {
case "s":
case "o":
n < arguments.length ? i.push(arguments[1 + n++]) : i.push("<?>");
break;
case "%":
i.push("%");
break;
default:
i.push("<%" + o + "?>");
}
}
return i.push(e.substring(s)), i.join("");
}, i.formatNumber = function (e, t, r, a) {
var n = e,
i = isNaN(t = Math.abs(t)) ? 2 : t,
s = void 0 === r ? "," : r,
o = void 0 === a ? "." : a,
c = n < 0 ? "-" : "",
u = parseInt(n = Math.abs(+n || 0).toFixed(i), 10) + "",
l = u.length > 3 ? u.length % 3 : 0;
return c + (l ? u.substr(0, l) + o : "") + u.substr(l).replace(/(\d{3})(?=\d)/g, "$1" + o) + (i ? s + Math.abs(n - u).toFixed(i).slice(2) : "");
}, i.formatSize = function (e) {
return e = e >= 1073741824 ? i.formatNumber(e / 1073741824, 2, ".", "") + " GiB" : e >= 1048576 ? i.formatNumber(e / 1048576, 2, ".", "") + " MiB" : e >= 1024 ? i.formatNumber(e / 1024, 0) + " KiB" : i.formatNumber(e, 0) + " bytes";
}, i.bytesFromIP = function (e) {
return -1 !== e.indexOf(".") ? i.bytesFromIPv4(e) : -1 !== e.indexOf(":") ? i.bytesFromIPv6(e) : null;
}, i.bytesFromIPv4 = function (e) {
if (4 !== (e = e.split(".")).length) return null;
for (var t = i.createBuffer(), r = 0; r < e.length; ++r) {
var a = parseInt(e[r], 10);
if (isNaN(a)) return null;
t.putByte(a);
}
return t.getBytes();
}, i.bytesFromIPv6 = function (e) {
for (var t = 0, r = 2 * (8 - (e = e.split(":").filter(function (e) {
return 0 === e.length && ++t, !0;
})).length + t), a = i.createBuffer(), n = 0; n < 8; ++n) if (e[n] && 0 !== e[n].length) {
var s = i.hexToBytes(e[n]);
s.length < 2 && a.putByte(0), a.putBytes(s);
} else a.fillWithByte(0, r), r = 0;
return a.getBytes();
}, i.bytesToIP = function (e) {
return 4 === e.length ? i.bytesToIPv4(e) : 16 === e.length ? i.bytesToIPv6(e) : null;
}, i.bytesToIPv4 = function (e) {
if (4 !== e.length) return null;
for (var t = [], r = 0; r < e.length; ++r) t.push(e.charCodeAt(r));
return t.join(".");
}, i.bytesToIPv6 = function (e) {
if (16 !== e.length) return null;
for (var t = [], r = [], a = 0, n = 0; n < e.length; n += 2) {
for (var s = i.bytesToHex(e[n] + e[n + 1]); "0" === s[0] && "0" !== s;) s = s.substr(1);
if ("0" === s) {
var o = r[r.length - 1],
c = t.length;
o && c === o.end + 1 ? (o.end = c, o.end - o.start > r[a].end - r[a].start && (a = r.length - 1)) : r.push({
start: c,
end: c
});
}
t.push(s);
}
if (r.length > 0) {
var u = r[a];
u.end - u.start > 0 && (t.splice(u.start, u.end - u.start + 1, ""), 0 === u.start && t.unshift(""), 7 === u.end && t.push(""));
}
return t.join(":");
}, i.estimateCores = function (e, t) {
if ("function" == typeof e && (t = e, e = {}), e = e || {}, "cores" in i && !e.update) return t(null, i.cores);
if ("undefined" != typeof navigator && "hardwareConcurrency" in navigator && navigator.hardwareConcurrency > 0) return i.cores = navigator.hardwareConcurrency, t(null, i.cores);
if ("undefined" == typeof Worker) return i.cores = 1, t(null, i.cores);
if ("undefined" == typeof Blob) return i.cores = 2, t(null, i.cores);
var r = URL.createObjectURL(new Blob(["(", function () {
self.addEventListener("message", function (e) {
for (var t = Date.now(), r = t + 4; Date.now() < r;);
self.postMessage({
st: t,
et: r
});
});
}.toString(), ")()"], {
type: "application/javascript"
}));
!function e(a, n, s) {
if (0 === n) {
var o = Math.floor(a.reduce(function (e, t) {
return e + t;
}, 0) / a.length);
return i.cores = Math.max(1, o), URL.revokeObjectURL(r), t(null, i.cores);
}
!function (e, t) {
for (var a = [], n = [], i = 0; i < e; ++i) {
var s = new Worker(r);
s.addEventListener("message", function (r) {
if (n.push(r.data), n.length === e) {
for (var i = 0; i < e; ++i) a[i].terminate();
t(null, n);
}
}), a.push(s);
}
for (i = 0; i < e; ++i) a[i].postMessage(i);
}(s, function (t, r) {
a.push(function (e, t) {
for (var r = [], a = 0; a < e; ++a) for (var n = t[a], i = r[a] = [], s = 0; s < e; ++s) if (a !== s) {
var o = t[s];
(n.st > o.st && n.st < o.et || o.st > n.st && o.st < n.et) && i.push(s);
}
return r.reduce(function (e, t) {
return Math.max(e, t.length);
}, 0);
}(s, r)), e(a, n - 1, s);
});
}([], 5, 16);
};
}).call(this, r(34));
}, function (e, t, r) {
var a = r(0);
r(5), r(23), r(24), r(1), a.random && a.random.getBytes ? e.exports = a.random : function (t) {
var r = {},
n = new Array(4),
i = a.util.createBuffer();
function s() {
var e = a.prng.create(r);
return e.getBytes = function (t, r) {
return e.generate(t, r);
}, e.getBytesSync = function (t) {
return e.generate(t);
}, e;
}
r.formatKey = function (e) {
var t = a.util.createBuffer(e);
return (e = new Array(4))[0] = t.getInt32(), e[1] = t.getInt32(), e[2] = t.getInt32(), e[3] = t.getInt32(), a.aes._expandKey(e, !1);
}, r.formatSeed = function (e) {
var t = a.util.createBuffer(e);
return (e = new Array(4))[0] = t.getInt32(), e[1] = t.getInt32(), e[2] = t.getInt32(), e[3] = t.getInt32(), e;
}, r.cipher = function (e, t) {
return a.aes._updateBlock(e, t, n, !1), i.putInt32(n[0]), i.putInt32(n[1]), i.putInt32(n[2]), i.putInt32(n[3]), i.getBytes();
}, r.increment = function (e) {
return ++e[3], e;
}, r.md = a.md.sha256;
var o = s(),
c = null,
u = a.util.globalScope,
l = u.crypto || u.msCrypto;
if (l && l.getRandomValues && (c = function (e) {
return l.getRandomValues(e);
}), a.options.usePureJavaScript || !a.util.isNodejs && !c) {
if ("undefined" == typeof window || window.document, o.collectInt(+new Date(), 32), "undefined" != typeof navigator) {
var p = "";
for (var f in navigator) try {
"string" == typeof navigator[f] && (p += navigator[f]);
} catch (e) {}
o.collect(p), p = null;
}
t && (t().mousemove(function (e) {
o.collectInt(e.clientX, 16), o.collectInt(e.clientY, 16);
}), t().keypress(function (e) {
o.collectInt(e.charCode, 8);
}));
}
if (a.random) for (var f in o) a.random[f] = o[f];else a.random = o;
a.random.createInstance = s, e.exports = a.random;
}("undefined" != typeof jQuery ? jQuery : null);
}, function (e, t, r) {
var a = r(0);
r(1), r(6);
var n = e.exports = a.asn1 = a.asn1 || {};
function i(e, t, r) {
if (r > t) {
var a = new Error("Too few bytes to parse DER.");
throw a.available = e.length(), a.remaining = t, a.requested = r, a;
}
}
n.Class = {
UNIVERSAL: 0,
APPLICATION: 64,
CONTEXT_SPECIFIC: 128,
PRIVATE: 192
}, n.Type = {
NONE: 0,
BOOLEAN: 1,
INTEGER: 2,
BITSTRING: 3,
OCTETSTRING: 4,
NULL: 5,
OID: 6,
ODESC: 7,
EXTERNAL: 8,
REAL: 9,
ENUMERATED: 10,
EMBEDDED: 11,
UTF8: 12,
ROID: 13,
SEQUENCE: 16,
SET: 17,
PRINTABLESTRING: 19,
IA5STRING: 22,
UTCTIME: 23,
GENERALIZEDTIME: 24,
BMPSTRING: 30
}, n.create = function (e, t, r, i, s) {
if (a.util.isArray(i)) {
for (var o = [], c = 0; c < i.length; ++c) void 0 !== i[c] && o.push(i[c]);
i = o;
}
var u = {
tagClass: e,
type: t,
constructed: r,
composed: r || a.util.isArray(i),
value: i
};
return s && "bitStringContents" in s && (u.bitStringContents = s.bitStringContents, u.original = n.copy(u)), u;
}, n.copy = function (e, t) {
var r;
if (a.util.isArray(e)) {
r = [];
for (var i = 0; i < e.length; ++i) r.push(n.copy(e[i], t));
return r;
}
return "string" == typeof e ? e : (r = {
tagClass: e.tagClass,
type: e.type,
constructed: e.constructed,
composed: e.composed,
value: n.copy(e.value, t)
}, t && !t.excludeBitStringContents && (r.bitStringContents = e.bitStringContents), r);
}, n.equals = function (e, t, r) {
if (a.util.isArray(e)) {
if (!a.util.isArray(t)) return !1;
if (e.length !== t.length) return !1;
for (var i = 0; i < e.length; ++i) if (!n.equals(e[i], t[i])) return !1;
return !0;
}
if (typeof e != typeof t) return !1;
if ("string" == typeof e) return e === t;
var s = e.tagClass === t.tagClass && e.type === t.type && e.constructed === t.constructed && e.composed === t.composed && n.equals(e.value, t.value);
return r && r.includeBitStringContents && (s = s && e.bitStringContents === t.bitStringContents), s;
}, n.getBerValueLength = function (e) {
var t = e.getByte();
if (128 !== t) return 128 & t ? e.getInt((127 & t) << 3) : t;
};
n.fromDer = function (e, t) {
return void 0 === t && (t = {
strict: !0,
decodeBitStrings: !0
}), "boolean" == typeof t && (t = {
strict: t,
decodeBitStrings: !0
}), "strict" in t || (t.strict = !0), "decodeBitStrings" in t || (t.decodeBitStrings = !0), "string" == typeof e && (e = a.util.createBuffer(e)), function e(t, r, a, s) {
var o;
i(t, r, 2);
var c = t.getByte();
r--;
var u = 192 & c,
l = 31 & c;
o = t.length();
var p,
f,
h = function (e, t) {
var r = e.getByte();
if (t--, 128 !== r) {
var a;
if (128 & r) {
var n = 127 & r;
i(e, t, n), a = e.getInt(n << 3);
} else a = r;
if (a < 0) throw new Error("Negative length: " + a);
return a;
}
}(t, r);
if (r -= o - t.length(), void 0 !== h && h > r) {
if (s.strict) {
var d = new Error("Too few bytes to read ASN.1 value.");
throw d.available = t.length(), d.remaining = r, d.requested = h, d;
}
h = r;
}
var y = 32 == (32 & c);
if (y) if (p = [], void 0 === h) for (;;) {
if (i(t, r, 2), t.bytes(2) === String.fromCharCode(0, 0)) {
t.getBytes(2), r -= 2;
break;
}
o = t.length(), p.push(e(t, r, a + 1, s)), r -= o - t.length();
} else for (; h > 0;) o = t.length(), p.push(e(t, h, a + 1, s)), r -= o - t.length(), h -= o - t.length();
void 0 === p && u === n.Class.UNIVERSAL && l === n.Type.BITSTRING && (f = t.bytes(h));
if (void 0 === p && s.decodeBitStrings && u === n.Class.UNIVERSAL && l === n.Type.BITSTRING && h > 1) {
var g = t.read,
m = r,
v = 0;
if (l === n.Type.BITSTRING && (i(t, r, 1), v = t.getByte(), r--), 0 === v) try {
o = t.length();
var C = {
verbose: s.verbose,
strict: !0,
decodeBitStrings: !0
},
E = e(t, r, a + 1, C),
S = o - t.length();
r -= S, l == n.Type.BITSTRING && S++;
var T = E.tagClass;
S !== h || T !== n.Class.UNIVERSAL && T !== n.Class.CONTEXT_SPECIFIC || (p = [E]);
} catch (e) {}
void 0 === p && (t.read = g, r = m);
}
if (void 0 === p) {
if (void 0 === h) {
if (s.strict) throw new Error("Non-constructed ASN.1 object of indefinite length.");
h = r;
}
if (l === n.Type.BMPSTRING) for (p = ""; h > 0; h -= 2) i(t, r, 2), p += String.fromCharCode(t.getInt16()), r -= 2;else p = t.getBytes(h);
}
var I = void 0 === f ? null : {
bitStringContents: f
};
return n.create(u, l, y, p, I);
}(e, e.length(), 0, t);
}, n.toDer = function (e) {
var t = a.util.createBuffer(),
r = e.tagClass | e.type,
i = a.util.createBuffer(),
s = !1;
if ("bitStringContents" in e && (s = !0, e.original && (s = n.equals(e, e.original))), s) i.putBytes(e.bitStringContents);else if (e.composed) {
e.constructed ? r |= 32 : i.putByte(0);
for (var o = 0; o < e.value.length; ++o) void 0 !== e.value[o] && i.putBuffer(n.toDer(e.value[o]));
} else if (e.type === n.Type.BMPSTRING) for (o = 0; o < e.value.length; ++o) i.putInt16(e.value.charCodeAt(o));else e.type === n.Type.INTEGER && e.value.length > 1 && (0 === e.value.charCodeAt(0) && 0 == (128 & e.value.charCodeAt(1)) || 255 === e.value.charCodeAt(0) && 128 == (128 & e.value.charCodeAt(1))) ? i.putBytes(e.value.substr(1)) : i.putBytes(e.value);
if (t.putByte(r), i.length() <= 127) t.putByte(127 & i.length());else {
var c = i.length(),
u = "";
do {
u += String.fromCharCode(255 & c), c >>>= 8;
} while (c > 0);
t.putByte(128 | u.length);
for (o = u.length - 1; o >= 0; --o) t.putByte(u.charCodeAt(o));
}
return t.putBuffer(i), t;
}, n.oidToDer = function (e) {
var t,
r,
n,
i,
s = e.split("."),
o = a.util.createBuffer();
o.putByte(40 * parseInt(s[0], 10) + parseInt(s[1], 10));
for (var c = 2; c < s.length; ++c) {
t = !0, r = [], n = parseInt(s[c], 10);
do {
i = 127 & n, n >>>= 7, t || (i |= 128), r.push(i), t = !1;
} while (n > 0);
for (var u = r.length - 1; u >= 0; --u) o.putByte(r[u]);
}
return o;
}, n.derToOid = function (e) {
var t;
"string" == typeof e && (e = a.util.createBuffer(e));
var r = e.getByte();
t = Math.floor(r / 40) + "." + r % 40;
for (var n = 0; e.length() > 0;) n <<= 7, 128 & (r = e.getByte()) ? n += 127 & r : (t += "." + (n + r), n = 0);
return t;
}, n.utcTimeToDate = function (e) {
var t = new Date(),
r = parseInt(e.substr(0, 2), 10);
r = r >= 50 ? 1900 + r : 2e3 + r;
var a = parseInt(e.substr(2, 2), 10) - 1,
n = parseInt(e.substr(4, 2), 10),
i = parseInt(e.substr(6, 2), 10),
s = parseInt(e.substr(8, 2), 10),
o = 0;
if (e.length > 11) {
var c = e.charAt(10),
u = 10;
"+" !== c && "-" !== c && (o = parseInt(e.substr(10, 2), 10), u += 2);
}
if (t.setUTCFullYear(r, a, n), t.setUTCHours(i, s, o, 0), u && ("+" === (c = e.charAt(u)) || "-" === c)) {
var l = 60 * parseInt(e.substr(u + 1, 2), 10) + parseInt(e.substr(u + 4, 2), 10);
l *= 6e4, "+" === c ? t.setTime(+t - l) : t.setTime(+t + l);
}
return t;
}, n.generalizedTimeToDate = function (e) {
var t = new Date(),
r = parseInt(e.substr(0, 4), 10),
a = parseInt(e.substr(4, 2), 10) - 1,
n = parseInt(e.substr(6, 2), 10),
i = parseInt(e.substr(8, 2), 10),
s = parseInt(e.substr(10, 2), 10),
o = parseInt(e.substr(12, 2), 10),
c = 0,
u = 0,
l = !1;
"Z" === e.charAt(e.length - 1) && (l = !0);
var p = e.length - 5,
f = e.charAt(p);
"+" !== f && "-" !== f || (u = 60 * parseInt(e.substr(p + 1, 2), 10) + parseInt(e.substr(p + 4, 2), 10), u *= 6e4, "+" === f && (u *= -1), l = !0);
return "." === e.charAt(14) && (c = 1e3 * parseFloat(e.substr(14), 10)), l ? (t.setUTCFullYear(r, a, n), t.setUTCHours(i, s, o, c), t.setTime(+t + u)) : (t.setFullYear(r, a, n), t.setHours(i, s, o, c)), t;
}, n.dateToUtcTime = function (e) {
if ("string" == typeof e) return e;
var t = "",
r = [];
r.push(("" + e.getUTCFullYear()).substr(2)), r.push("" + (e.getUTCMonth() + 1)), r.push("" + e.getUTCDate()), r.push("" + e.getUTCHours()), r.push("" + e.getUTCMinutes()), r.push("" + e.getUTCSeconds());
for (var a = 0; a < r.length; ++a) r[a].length < 2 && (t += "0"), t += r[a];
return t += "Z";
}, n.dateToGeneralizedTime = function (e) {
if ("string" == typeof e) return e;
var t = "",
r = [];
r.push("" + e.getUTCFullYear()), r.push("" + (e.getUTCMonth() + 1)), r.push("" + e.getUTCDate()), r.push("" + e.getUTCHours()), r.push("" + e.getUTCMinutes()), r.push("" + e.getUTCSeconds());
for (var a = 0; a < r.length; ++a) r[a].length < 2 && (t += "0"), t += r[a];
return t += "Z";
}, n.integerToDer = function (e) {
var t = a.util.createBuffer();
if (e >= -128 && e < 128) return t.putSignedInt(e, 8);
if (e >= -32768 && e < 32768) return t.putSignedInt(e, 16);
if (e >= -8388608 && e < 8388608) return t.putSignedInt(e, 24);
if (e >= -2147483648 && e < 2147483648) return t.putSignedInt(e, 32);
var r = new Error("Integer too large; max is 32-bits.");
throw r.integer = e, r;
}, n.derToInteger = function (e) {
"string" == typeof e && (e = a.util.createBuffer(e));
var t = 8 * e.length();
if (t > 32) throw new Error("Integer too large; max is 32-bits.");
return e.getSignedInt(t);
}, n.validate = function (e, t, r, i) {
var s = !1;
if (e.tagClass !== t.tagClass && void 0 !== t.tagClass || e.type !== t.type && void 0 !== t.type) i && (e.tagClass !== t.tagClass && i.push("[" + t.name + '] Expected tag class "' + t.tagClass + '", got "' + e.tagClass + '"'), e.type !== t.type && i.push("[" + t.name + '] Expected type "' + t.type + '", got "' + e.type + '"'));else if (e.constructed === t.constructed || void 0 === t.constructed) {
if (s = !0, t.value && a.util.isArray(t.value)) for (var o = 0, c = 0; s && c < t.value.length; ++c) s = t.value[c].optional || !1, e.value[o] && ((s = n.validate(e.value[o], t.value[c], r, i)) ? ++o : t.value[c].optional && (s = !0)), !s && i && i.push("[" + t.name + '] Tag class "' + t.tagClass + '", type "' + t.type + '" expected value length "' + t.value.length + '", got "' + e.value.length + '"');
if (s && r) if (t.capture && (r[t.capture] = e.value), t.captureAsn1 && (r[t.captureAsn1] = e), t.captureBitStringContents && "bitStringContents" in e && (r[t.captureBitStringContents] = e.bitStringContents), t.captureBitStringValue && "bitStringContents" in e) if (e.bitStringContents.length < 2) r[t.captureBitStringValue] = "";else {
if (0 !== e.bitStringContents.charCodeAt(0)) throw new Error("captureBitStringValue only supported for zero unused bits");
r[t.captureBitStringValue] = e.bitStringContents.slice(1);
}
} else i && i.push("[" + t.name + '] Expected constructed "' + t.constructed + '", got "' + e.constructed + '"');
return s;
};
var s = /[^\\u0000-\\u00ff]/;
n.prettyPrint = function (e, t, r) {
var i = "";
r = r || 2, (t = t || 0) > 0 && (i += "\n");
for (var o = "", c = 0; c < t * r; ++c) o += " ";
switch (i += o + "Tag: ", e.tagClass) {
case n.Class.UNIVERSAL:
i += "Universal:";
break;
case n.Class.APPLICATION:
i += "Application:";
break;
case n.Class.CONTEXT_SPECIFIC:
i += "Context-Specific:";
break;
case n.Class.PRIVATE:
i += "Private:";
}
if (e.tagClass === n.Class.UNIVERSAL) switch (i += e.type, e.type) {
case n.Type.NONE:
i += " (None)";
break;
case n.Type.BOOLEAN:
i += " (Boolean)";
break;
case n.Type.INTEGER:
i += " (Integer)";
break;
case n.Type.BITSTRING:
i += " (Bit string)";
break;
case n.Type.OCTETSTRING:
i += " (Octet string)";
break;
case n.Type.NULL:
i += " (Null)";
break;
case n.Type.OID:
i += " (Object Identifier)";
break;
case n.Type.ODESC:
i += " (Object Descriptor)";
break;
case n.Type.EXTERNAL:
i += " (External or Instance of)";
break;
case n.Type.REAL:
i += " (Real)";
break;
case n.Type.ENUMERATED:
i += " (Enumerated)";
break;
case n.Type.EMBEDDED:
i += " (Embedded PDV)";
break;
case n.Type.UTF8:
i += " (UTF8)";
break;
case n.Type.ROID:
i += " (Relative Object Identifier)";
break;
case n.Type.SEQUENCE:
i += " (Sequence)";
break;
case n.Type.SET:
i += " (Set)";
break;
case n.Type.PRINTABLESTRING:
i += " (Printable String)";
break;
case n.Type.IA5String:
i += " (IA5String (ASCII))";
break;
case n.Type.UTCTIME:
i += " (UTC time)";
break;
case n.Type.GENERALIZEDTIME:
i += " (Generalized time)";
break;
case n.Type.BMPSTRING:
i += " (BMP String)";
} else i += e.type;
if (i += "\n", i += o + "Constructed: " + e.constructed + "\n", e.composed) {
var u = 0,
l = "";
for (c = 0; c < e.value.length; ++c) void 0 !== e.value[c] && (u += 1, l += n.prettyPrint(e.value[c], t + 1, r), c + 1 < e.value.length && (l += ","));
i += o + "Sub values: " + u + l;
} else {
if (i += o + "Value: ", e.type === n.Type.OID) {
var p = n.derToOid(e.value);
i += p, a.pki && a.pki.oids && p in a.pki.oids && (i += " (" + a.pki.oids[p] + ") ");
}
if (e.type === n.Type.INTEGER) try {
i += n.derToInteger(e.value);
} catch (t) {
i += "0x" + a.util.bytesToHex(e.value);
} else if (e.type === n.Type.BITSTRING) {
if (e.value.length > 1 ? i += "0x" + a.util.bytesToHex(e.value.slice(1)) : i += "(none)", e.value.length > 0) {
var f = e.value.charCodeAt(0);
1 == f ? i += " (1 unused bit shown)" : f > 1 && (i += " (" + f + " unused bits shown)");
}
} else e.type === n.Type.OCTETSTRING ? (s.test(e.value) || (i += "(" + e.value + ") "), i += "0x" + a.util.bytesToHex(e.value)) : e.type === n.Type.UTF8 ? i += a.util.decodeUtf8(e.value) : e.type === n.Type.PRINTABLESTRING || e.type === n.Type.IA5String ? i += e.value : s.test(e.value) ? i += "0x" + a.util.bytesToHex(e.value) : 0 === e.value.length ? i += "[null]" : i += e.value;
}
return i;
};
}, function (e, t, r) {
var a = r(0);
e.exports = a.md = a.md || {}, a.md.algorithms = a.md.algorithms || {};
}, function (e, t, r) {
var a = r(0);
function n(e, t) {
a.cipher.registerAlgorithm(e, function () {
return new a.aes.Algorithm(e, t);
});
}
r(13), r(19), r(1), e.exports = a.aes = a.aes || {}, a.aes.startEncrypting = function (e, t, r, a) {
var n = d({
key: e,
output: r,
decrypt: !1,
mode: a
});
return n.start(t), n;
}, a.aes.createEncryptionCipher = function (e, t) {
return d({
key: e,
output: null,
decrypt: !1,
mode: t
});
}, a.aes.startDecrypting = function (e, t, r, a) {
var n = d({
key: e,
output: r,
decrypt: !0,
mode: a
});
return n.start(t), n;
}, a.aes.createDecryptionCipher = function (e, t) {
return d({
key: e,
output: null,
decrypt: !0,
mode: t
});
}, a.aes.Algorithm = function (e, t) {
l || p();
var r = this;
r.name = e, r.mode = new t({
blockSize: 16,
cipher: {
encrypt: function (e, t) {
return h(r._w, e, t, !1);
},
decrypt: function (e, t) {
return h(r._w, e, t, !0);
}
}
}), r._init = !1;
}, a.aes.Algorithm.prototype.initialize = function (e) {
if (!this._init) {
var t,
r = e.key;
if ("string" != typeof r || 16 !== r.length && 24 !== r.length && 32 !== r.length) {
if (a.util.isArray(r) && (16 === r.length || 24 === r.length || 32 === r.length)) {
t = r, r = a.util.createBuffer();
for (var n = 0; n < t.length; ++n) r.putByte(t[n]);
}
} else r = a.util.createBuffer(r);
if (!a.util.isArray(r)) {
t = r, r = [];
var i = t.length();
if (16 === i || 24 === i || 32 === i) {
i >>>= 2;
for (n = 0; n < i; ++n) r.push(t.getInt32());
}
}
if (!a.util.isArray(r) || 4 !== r.length && 6 !== r.length && 8 !== r.length) throw new Error("Invalid key parameter.");
var s = this.mode.name,
o = -1 !== ["CFB", "OFB", "CTR", "GCM"].indexOf(s);
this._w = f(r, e.decrypt && !o), this._init = !0;
}
}, a.aes._expandKey = function (e, t) {
return l || p(), f(e, t);
}, a.aes._updateBlock = h, n("AES-ECB", a.cipher.modes.ecb), n("AES-CBC", a.cipher.modes.cbc), n("AES-CFB", a.cipher.modes.cfb), n("AES-OFB", a.cipher.modes.ofb), n("AES-CTR", a.cipher.modes.ctr), n("AES-GCM", a.cipher.modes.gcm);
var i,
s,
o,
c,
u,
l = !1;
function p() {
l = !0, o = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
for (var e = new Array(256), t = 0; t < 128; ++t) e[t] = t << 1, e[t + 128] = t + 128 << 1 ^ 283;
i = new Array(256), s = new Array(256), c = new Array(4), u = new Array(4);
for (t = 0; t < 4; ++t) c[t] = new Array(256), u[t] = new Array(256);
var r,
a,
n,
p,
f,
h,
d,
y = 0,
g = 0;
for (t = 0; t < 256; ++t) {
p = (p = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4) >> 8 ^ 255 & p ^ 99, i[y] = p, s[p] = y, h = (f = e[p]) << 24 ^ p << 16 ^ p << 8 ^ p ^ f, d = ((r = e[y]) ^ (a = e[r]) ^ (n = e[a])) << 24 ^ (y ^ n) << 16 ^ (y ^ a ^ n) << 8 ^ y ^ r ^ n;
for (var m = 0; m < 4; ++m) c[m][y] = h, u[m][p] = d, h = h << 24 | h >>> 8, d = d << 24 | d >>> 8;
0 === y ? y = g = 1 : (y = r ^ e[e[e[r ^ n]]], g ^= e[e[g]]);
}
}
function f(e, t) {
for (var r, a = e.slice(0), n = 1, s = a.length, c = 4 * (s + 6 + 1), l = s; l < c; ++l) r = a[l - 1], l % s == 0 ? (r = i[r >>> 16 & 255] << 24 ^ i[r >>> 8 & 255] << 16 ^ i[255 & r] << 8 ^ i[r >>> 24] ^ o[n] << 24, n++) : s > 6 && l % s == 4 && (r = i[r >>> 24] << 24 ^ i[r >>> 16 & 255] << 16 ^ i[r >>> 8 & 255] << 8 ^ i[255 & r]), a[l] = a[l - s] ^ r;
if (t) {
for (var p, f = u[0], h = u[1], d = u[2], y = u[3], g = a.slice(0), m = (l = 0, (c = a.length) - 4); l < c; l += 4, m -= 4) if (0 === l || l === c - 4) g[l] = a[m], g[l + 1] = a[m + 3], g[l + 2] = a[m + 2], g[l + 3] = a[m + 1];else for (var v = 0; v < 4; ++v) p = a[m + v], g[l + (3 & -v)] = f[i[p >>> 24]] ^ h[i[p >>> 16 & 255]] ^ d[i[p >>> 8 & 255]] ^ y[i[255 & p]];
a = g;
}
return a;
}
function h(e, t, r, a) {
var n,
o,
l,
p,
f,
h,
d,
y,
g,
m,
v,
C,
E = e.length / 4 - 1;
a ? (n = u[0], o = u[1], l = u[2], p = u[3], f = s) : (n = c[0], o = c[1], l = c[2], p = c[3], f = i), h = t[0] ^ e[0], d = t[a ? 3 : 1] ^ e[1], y = t[2] ^ e[2], g = t[a ? 1 : 3] ^ e[3];
for (var S = 3, T = 1; T < E; ++T) m = n[h >>> 24] ^ o[d >>> 16 & 255] ^ l[y >>> 8 & 255] ^ p[255 & g] ^ e[++S], v = n[d >>> 24] ^ o[y >>> 16 & 255] ^ l[g >>> 8 & 255] ^ p[255 & h] ^ e[++S], C = n[y >>> 24] ^ o[g >>> 16 & 255] ^ l[h >>> 8 & 255] ^ p[255 & d] ^ e[++S], g = n[g >>> 24] ^ o[h >>> 16 & 255] ^ l[d >>> 8 & 255] ^ p[255 & y] ^ e[++S], h = m, d = v, y = C;
r[0] = f[h >>> 24] << 24 ^ f[d >>> 16 & 255] << 16 ^ f[y >>> 8 & 255] << 8 ^ f[255 & g] ^ e[++S], r[a ? 3 : 1] = f[d >>> 24] << 24 ^ f[y >>> 16 & 255] << 16 ^ f[g >>> 8 & 255] << 8 ^ f[255 & h] ^ e[++S], r[2] = f[y >>> 24] << 24 ^ f[g >>> 16 & 255] << 16 ^ f[h >>> 8 & 255] << 8 ^ f[255 & d] ^ e[++S], r[a ? 1 : 3] = f[g >>> 24] << 24 ^ f[h >>> 16 & 255] << 16 ^ f[d >>> 8 & 255] << 8 ^ f[255 & y] ^ e[++S];
}
function d(e) {
var t,
r = "AES-" + ((e = e || {}).mode || "CBC").toUpperCase(),
n = (t = e.decrypt ? a.cipher.createDecipher(r, e.key) : a.cipher.createCipher(r, e.key)).start;
return t.start = function (e, r) {
var i = null;
r instanceof a.util.ByteBuffer && (i = r, r = {}), (r = r || {}).output = i, r.iv = e, n.call(t, r);
}, t;
}
}, function (e, t, r) {
var a = r(0);
a.pki = a.pki || {};
var n = e.exports = a.pki.oids = a.oids = a.oids || {};
function i(e, t) {
n[e] = t, n[t] = e;
}
function s(e, t) {
n[e] = t;
}
i("1.2.840.113549.1.1.1", "rsaEncryption"), i("1.2.840.113549.1.1.4", "md5WithRSAEncryption"), i("1.2.840.113549.1.1.5", "sha1WithRSAEncryption"), i("1.2.840.113549.1.1.7", "RSAES-OAEP"), i("1.2.840.113549.1.1.8", "mgf1"), i("1.2.840.113549.1.1.9", "pSpecified"), i("1.2.840.113549.1.1.10", "RSASSA-PSS"), i("1.2.840.113549.1.1.11", "sha256WithRSAEncryption"), i("1.2.840.113549.1.1.12", "sha384WithRSAEncryption"), i("1.2.840.113549.1.1.13", "sha512WithRSAEncryption"), i("1.3.101.112", "EdDSA25519"), i("1.2.840.10040.4.3", "dsa-with-sha1"), i("1.3.14.3.2.7", "desCBC"), i("1.3.14.3.2.26", "sha1"), i("2.16.840.1.101.3.4.2.1", "sha256"), i("2.16.840.1.101.3.4.2.2", "sha384"), i("2.16.840.1.101.3.4.2.3", "sha512"), i("1.2.840.113549.2.5", "md5"), i("1.2.840.113549.1.7.1", "data"), i("1.2.840.113549.1.7.2", "signedData"), i("1.2.840.113549.1.7.3", "envelopedData"), i("1.2.840.113549.1.7.4", "signedAndEnvelopedData"), i("1.2.840.113549.1.7.5", "digestedData"), i("1.2.840.113549.1.7.6", "encryptedData"), i("1.2.840.113549.1.9.1", "emailAddress"), i("1.2.840.113549.1.9.2", "unstructuredName"), i("1.2.840.113549.1.9.3", "contentType"), i("1.2.840.113549.1.9.4", "messageDigest"), i("1.2.840.113549.1.9.5", "signingTime"), i("1.2.840.113549.1.9.6", "counterSignature"), i("1.2.840.113549.1.9.7", "challengePassword"), i("1.2.840.113549.1.9.8", "unstructuredAddress"), i("1.2.840.113549.1.9.14", "extensionRequest"), i("1.2.840.113549.1.9.20", "friendlyName"), i("1.2.840.113549.1.9.21", "localKeyId"), i("1.2.840.113549.1.9.22.1", "x509Certificate"), i("1.2.840.113549.1.12.10.1.1", "keyBag"), i("1.2.840.113549.1.12.10.1.2", "pkcs8ShroudedKeyBag"), i("1.2.840.113549.1.12.10.1.3", "certBag"), i("1.2.840.113549.1.12.10.1.4", "crlBag"), i("1.2.840.113549.1.12.10.1.5", "secretBag"), i("1.2.840.113549.1.12.10.1.6", "safeContentsBag"), i("1.2.840.113549.1.5.13", "pkcs5PBES2"), i("1.2.840.113549.1.5.12", "pkcs5PBKDF2"), i("1.2.840.113549.1.12.1.1", "pbeWithSHAAnd128BitRC4"), i("1.2.840.113549.1.12.1.2", "pbeWithSHAAnd40BitRC4"), i("1.2.840.113549.1.12.1.3", "pbeWithSHAAnd3-KeyTripleDES-CBC"), i("1.2.840.113549.1.12.1.4", "pbeWithSHAAnd2-KeyTripleDES-CBC"), i("1.2.840.113549.1.12.1.5", "pbeWithSHAAnd128BitRC2-CBC"), i("1.2.840.113549.1.12.1.6", "pbewithSHAAnd40BitRC2-CBC"), i("1.2.840.113549.2.7", "hmacWithSHA1"), i("1.2.840.113549.2.8", "hmacWithSHA224"), i("1.2.840.113549.2.9", "hmacWithSHA256"), i("1.2.840.113549.2.10", "hmacWithSHA384"), i("1.2.840.113549.2.11", "hmacWithSHA512"), i("1.2.840.113549.3.7", "des-EDE3-CBC"), i("2.16.840.1.101.3.4.1.2", "aes128-CBC"), i("2.16.840.1.101.3.4.1.22", "aes192-CBC"), i("2.16.840.1.101.3.4.1.42", "aes256-CBC"), i("2.5.4.3", "commonName"), i("2.5.4.4", "surname"), i("2.5.4.5", "serialNumber"), i("2.5.4.6", "countryName"), i("2.5.4.7", "localityName"), i("2.5.4.8", "stateOrProvinceName"), i("2.5.4.9", "streetAddress"), i("2.5.4.10", "organizationName"), i("2.5.4.11", "organizationalUnitName"), i("2.5.4.12", "title"), i("2.5.4.13", "description"), i("2.5.4.15", "businessCategory"), i("2.5.4.17", "postalCode"), i("2.5.4.42", "givenName"), i("1.3.6.1.4.1.311.60.2.1.2", "jurisdictionOfIncorporationStateOrProvinceName"), i("1.3.6.1.4.1.311.60.2.1.3", "jurisdictionOfIncorporationCountryName"), i("2.16.840.1.113730.1.1", "nsCertType"), i("2.16.840.1.113730.1.13", "nsComment"), s("2.5.29.1", "authorityKeyIdentifier"), s("2.5.29.2", "keyAttributes"), s("2.5.29.3", "certificatePolicies"), s("2.5.29.4", "keyUsageRestriction"), s("2.5.29.5", "policyMapping"), s("2.5.29.6", "subtreesConstraint"), s("2.5.29.7", "subjectAltName"), s("2.5.29.8", "issuerAltName"), s("2.5.29.9", "subjectDirectoryAttributes"), s("2.5.29.10", "basicConstraints"), s("2.5.29.11", "nameConstraints"), s("2.5.29.12", "policyConstraints"), s("2.5.29.13", "basicConstraints"), i("2.5.29.14", "subjectKeyIdentifier"), i("2.5.29.15", "keyUsage"), s("2.5.29.16", "privateKeyUsagePeriod"), i("2.5.29.17", "subjectAltName"), i("2.5.29.18", "issuerAltName"), i("2.5.29.19", "basicConstraints"), s("2.5.29.20", "cRLNumber"), s("2.5.29.21", "cRLReason"), s("2.5.29.22", "expirationDate"), s("2.5.29.23", "instructionCode"), s("2.5.29.24", "invalidityDate"), s("2.5.29.25", "cRLDistributionPoints"), s("2.5.29.26", "issuingDistributionPoint"), s("2.5.29.27", "deltaCRLIndicator"), s("2.5.29.28", "issuingDistributionPoint"), s("2.5.29.29", "certificateIssuer"), s("2.5.29.30", "nameConstraints"), i("2.5.29.31", "cRLDistributionPoints"), i("2.5.29.32", "certificatePolicies"), s("2.5.29.33", "policyMappings"), s("2.5.29.34", "policyConstraints"), i("2.5.29.35", "authorityKeyIdentifier"), s("2.5.29.36", "policyConstraints"), i("2.5.29.37", "extKeyUsage"), s("2.5.29.46", "freshestCRL"), s("2.5.29.54", "inhibitAnyPolicy"), i("1.3.6.1.4.1.11129.2.4.2", "timestampList"), i("1.3.6.1.5.5.7.1.1", "authorityInfoAccess"), i("1.3.6.1.5.5.7.3.1", "serverAuth"), i("1.3.6.1.5.5.7.3.2", "clientAuth"), i("1.3.6.1.5.5.7.3.3", "codeSigning"), i("1.3.6.1.5.5.7.3.4", "emailProtection"), i("1.3.6.1.5.5.7.3.8", "timeStamping");
}, function (e, t, r) {
var a = r(0);
r(1);
var n = e.exports = a.pem = a.pem || {};
function i(e) {
for (var t = e.name + ": ", r = [], a = function (e, t) {
return " " + t;
}, n = 0; n < e.values.length; ++n) r.push(e.values[n].replace(/^(\S+\r\n)/, a));
t += r.join(",") + "\r\n";
var i = 0,
s = -1;
for (n = 0; n < t.length; ++n, ++i) if (i > 65 && -1 !== s) {
var o = t[s];
"," === o ? (++s, t = t.substr(0, s) + "\r\n " + t.substr(s)) : t = t.substr(0, s) + "\r\n" + o + t.substr(s + 1), i = n - s - 1, s = -1, ++n;
} else " " !== t[n] && "\t" !== t[n] && "," !== t[n] || (s = n);
return t;
}
function s(e) {
return e.replace(/^\s+/, "");
}
n.encode = function (e, t) {
t = t || {};
var r,
n = "-----BEGIN " + e.type + "-----\r\n";
if (e.procType && (n += i(r = {
name: "Proc-Type",
values: [String(e.procType.version), e.procType.type]
})), e.contentDomain && (n += i(r = {
name: "Content-Domain",
values: [e.contentDomain]
})), e.dekInfo && (r = {
name: "DEK-Info",
values: [e.dekInfo.algorithm]
}, e.dekInfo.parameters && r.values.push(e.dekInfo.parameters), n += i(r)), e.headers) for (var s = 0; s < e.headers.length; ++s) n += i(e.headers[s]);
return e.procType && (n += "\r\n"), n += a.util.encode64(e.body, t.maxline || 64) + "\r\n", n += "-----END " + e.type + "-----\r\n";
}, n.decode = function (e) {
for (var t, r = [], n = /\s*-----BEGIN ([A-Z0-9- ]+)-----\r?\n?([\x21-\x7e\s]+?(?:\r?\n\r?\n))?([:A-Za-z0-9+\/=\s]+?)-----END \1-----/g, i = /([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/, o = /\r?\n/; t = n.exec(e);) {
var c = {
type: t[1],
procType: null,
contentDomain: null,
dekInfo: null,
headers: [],
body: a.util.decode64(t[3])
};
if (r.push(c), t[2]) {
for (var u = t[2].split(o), l = 0; t && l < u.length;) {
for (var p = u[l].replace(/\s+$/, ""), f = l + 1; f < u.length; ++f) {
var h = u[f];
if (!/\s/.test(h[0])) break;
p += h, l = f;
}
if (t = p.match(i)) {
for (var d = {
name: t[1],
values: []
}, y = t[2].split(","), g = 0; g < y.length; ++g) d.values.push(s(y[g]));
if (c.procType) {
if (c.contentDomain || "Content-Domain" !== d.name) {
if (c.dekInfo || "DEK-Info" !== d.name) c.headers.push(d);else {
if (0 === d.values.length) throw new Error('Invalid PEM formatted message. The "DEK-Info" header must have at least one subfield.');
c.dekInfo = {
algorithm: y[0],
parameters: y[1] || null
};
}
} else c.contentDomain = y[0] || "";
} else {
if ("Proc-Type" !== d.name) throw new Error('Invalid PEM formatted message. The first encapsulated header must be "Proc-Type".');
if (2 !== d.values.length) throw new Error('Invalid PEM formatted message. The "Proc-Type" header must have two subfields.');
c.procType = {
version: y[0],
type: y[1]
};
}
}
++l;
}
if ("ENCRYPTED" === c.procType && !c.dekInfo) throw new Error('Invalid PEM formatted message. The "DEK-Info" header must be present if "Proc-Type" is "ENCRYPTED".');
}
}
if (0 === r.length) throw new Error("Invalid PEM formatted message.");
return r;
};
}, function (e, t, r) {
var a = r(0);
r(4), r(1), (e.exports = a.hmac = a.hmac || {}).create = function () {
var e = null,
t = null,
r = null,
n = null,
i = {
start: function (i, s) {
if (null !== i) if ("string" == typeof i) {
if (!((i = i.toLowerCase()) in a.md.algorithms)) throw new Error('Unknown hash algorithm "' + i + '"');
t = a.md.algorithms[i].create();
} else t = i;
if (null === s) s = e;else {
if ("string" == typeof s) s = a.util.createBuffer(s);else if (a.util.isArray(s)) {
var o = s;
s = a.util.createBuffer();
for (var c = 0; c < o.length; ++c) s.putByte(o[c]);
}
var u = s.length();
u > t.blockLength && (t.start(), t.update(s.bytes()), s = t.digest()), r = a.util.createBuffer(), n = a.util.createBuffer(), u = s.length();
for (c = 0; c < u; ++c) {
o = s.at(c);
r.putByte(54 ^ o), n.putByte(92 ^ o);
}
if (u < t.blockLength) for (o = t.blockLength - u, c = 0; c < o; ++c) r.putByte(54), n.putByte(92);
e = s, r = r.bytes(), n = n.bytes();
}
t.start(), t.update(r);
},
update: function (e) {
t.update(e);
},
getMac: function () {
var e = t.digest().bytes();
return t.start(), t.update(n), t.update(e), t.digest();
}
};
return i.digest = i.getMac, i;
};
}, function (e, t, r) {
var a = r(0);
r(4), r(1);
var n = e.exports = a.sha1 = a.sha1 || {};
a.md.sha1 = a.md.algorithms.sha1 = n, n.create = function () {
s || (i = String.fromCharCode(128), i += a.util.fillString(String.fromCharCode(0), 64), s = !0);
var e = null,
t = a.util.createBuffer(),
r = new Array(80),
n = {
algorithm: "sha1",
blockLength: 64,
digestLength: 20,
messageLength: 0,
fullMessageLength: null,
messageLengthSize: 8,
start: function () {
n.messageLength = 0, n.fullMessageLength = n.messageLength64 = [];
for (var r = n.messageLengthSize / 4, i = 0; i < r; ++i) n.fullMessageLength.push(0);
return t = a.util.createBuffer(), e = {
h0: 1732584193,
h1: 4023233417,
h2: 2562383102,
h3: 271733878,
h4: 3285377520
}, n;
}
};
return n.start(), n.update = function (i, s) {
"utf8" === s && (i = a.util.encodeUtf8(i));
var c = i.length;
n.messageLength += c, c = [c / 4294967296 >>> 0, c >>> 0];
for (var u = n.fullMessageLength.length - 1; u >= 0; --u) n.fullMessageLength[u] += c[1], c[1] = c[0] + (n.fullMessageLength[u] / 4294967296 >>> 0), n.fullMessageLength[u] = n.fullMessageLength[u] >>> 0, c[0] = c[1] / 4294967296 >>> 0;
return t.putBytes(i), o(e, r, t), (t.read > 2048 || 0 === t.length()) && t.compact(), n;
}, n.digest = function () {
var s = a.util.createBuffer();
s.putBytes(t.bytes());
var c,
u = n.fullMessageLength[n.fullMessageLength.length - 1] + n.messageLengthSize & n.blockLength - 1;
s.putBytes(i.substr(0, n.blockLength - u));
for (var l = 8 * n.fullMessageLength[0], p = 0; p < n.fullMessageLength.length - 1; ++p) l += (c = 8 * n.fullMessageLength[p + 1]) / 4294967296 >>> 0, s.putInt32(l >>> 0), l = c >>> 0;
s.putInt32(l);
var f = {
h0: e.h0,
h1: e.h1,
h2: e.h2,
h3: e.h3,
h4: e.h4
};
o(f, r, s);
var h = a.util.createBuffer();
return h.putInt32(f.h0), h.putInt32(f.h1), h.putInt32(f.h2), h.putInt32(f.h3), h.putInt32(f.h4), h;
}, n;
};
var i = null,
s = !1;
function o(e, t, r) {
for (var a, n, i, s, o, c, u, l = r.length(); l >= 64;) {
for (n = e.h0, i = e.h1, s = e.h2, o = e.h3, c = e.h4, u = 0; u < 16; ++u) a = r.getInt32(), t[u] = a, a = (n << 5 | n >>> 27) + (o ^ i & (s ^ o)) + c + 1518500249 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
for (; u < 20; ++u) a = (a = t[u - 3] ^ t[u - 8] ^ t[u - 14] ^ t[u - 16]) << 1 | a >>> 31, t[u] = a, a = (n << 5 | n >>> 27) + (o ^ i & (s ^ o)) + c + 1518500249 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
for (; u < 32; ++u) a = (a = t[u - 3] ^ t[u - 8] ^ t[u - 14] ^ t[u - 16]) << 1 | a >>> 31, t[u] = a, a = (n << 5 | n >>> 27) + (i ^ s ^ o) + c + 1859775393 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
for (; u < 40; ++u) a = (a = t[u - 6] ^ t[u - 16] ^ t[u - 28] ^ t[u - 32]) << 2 | a >>> 30, t[u] = a, a = (n << 5 | n >>> 27) + (i ^ s ^ o) + c + 1859775393 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
for (; u < 60; ++u) a = (a = t[u - 6] ^ t[u - 16] ^ t[u - 28] ^ t[u - 32]) << 2 | a >>> 30, t[u] = a, a = (n << 5 | n >>> 27) + (i & s | o & (i ^ s)) + c + 2400959708 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
for (; u < 80; ++u) a = (a = t[u - 6] ^ t[u - 16] ^ t[u - 28] ^ t[u - 32]) << 2 | a >>> 30, t[u] = a, a = (n << 5 | n >>> 27) + (i ^ s ^ o) + c + 3395469782 + a, c = o, o = s, s = (i << 30 | i >>> 2) >>> 0, i = n, n = a;
e.h0 = e.h0 + n | 0, e.h1 = e.h1 + i | 0, e.h2 = e.h2 + s | 0, e.h3 = e.h3 + o | 0, e.h4 = e.h4 + c | 0, l -= 64;
}
}
}, function (e, t, r) {
var a = r(0);
function n(e, t) {
a.cipher.registerAlgorithm(e, function () {
return new a.des.Algorithm(e, t);
});
}
r(13), r(19), r(1), e.exports = a.des = a.des || {}, a.des.startEncrypting = function (e, t, r, a) {
var n = d({
key: e,
output: r,
decrypt: !1,
mode: a || (null === t ? "ECB" : "CBC")
});
return n.start(t), n;
}, a.des.createEncryptionCipher = function (e, t) {
return d({
key: e,
output: null,
decrypt: !1,
mode: t
});
}, a.des.startDecrypting = function (e, t, r, a) {
var n = d({
key: e,
output: r,
decrypt: !0,
mode: a || (null === t ? "ECB" : "CBC")
});
return n.start(t), n;
}, a.des.createDecryptionCipher = function (e, t) {
return d({
key: e,
output: null,
decrypt: !0,
mode: t
});
}, a.des.Algorithm = function (e, t) {
var r = this;
r.name = e, r.mode = new t({
blockSize: 8,
cipher: {
encrypt: function (e, t) {
return h(r._keys, e, t, !1);
},
decrypt: function (e, t) {
return h(r._keys, e, t, !0);
}
}
}), r._init = !1;
}, a.des.Algorithm.prototype.initialize = function (e) {
if (!this._init) {
var t = a.util.createBuffer(e.key);
if (0 === this.name.indexOf("3DES") && 24 !== t.length()) throw new Error("Invalid Triple-DES key size: " + 8 * t.length());
this._keys = function (e) {
for (var t, r = [0, 4, 536870912, 536870916, 65536, 65540, 536936448, 536936452, 512, 516, 536871424, 536871428, 66048, 66052, 536936960, 536936964], a = [0, 1, 1048576, 1048577, 67108864, 67108865, 68157440, 68157441, 256, 257, 1048832, 1048833, 67109120, 67109121, 68157696, 68157697], n = [0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272, 0, 8, 2048, 2056, 16777216, 16777224, 16779264, 16779272], i = [0, 2097152, 134217728, 136314880, 8192, 2105344, 134225920, 136323072, 131072, 2228224, 134348800, 136445952, 139264, 2236416, 134356992, 136454144], s = [0, 262144, 16, 262160, 0, 262144, 16, 262160, 4096, 266240, 4112, 266256, 4096, 266240, 4112, 266256], o = [0, 1024, 32, 1056, 0, 1024, 32, 1056, 33554432, 33555456, 33554464, 33555488, 33554432, 33555456, 33554464, 33555488], c = [0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746, 0, 268435456, 524288, 268959744, 2, 268435458, 524290, 268959746], u = [0, 65536, 2048, 67584, 536870912, 536936448, 536872960, 536938496, 131072, 196608, 133120, 198656, 537001984, 537067520, 537004032, 537069568], l = [0, 262144, 0, 262144, 2, 262146, 2, 262146, 33554432, 33816576, 33554432, 33816576, 33554434, 33816578, 33554434, 33816578], p = [0, 268435456, 8, 268435464, 0, 268435456, 8, 268435464, 1024, 268436480, 1032, 268436488, 1024, 268436480, 1032, 268436488], f = [0, 32, 0, 32, 1048576, 1048608, 1048576, 1048608, 8192, 8224, 8192, 8224, 1056768, 1056800, 1056768, 1056800], h = [0, 16777216, 512, 16777728, 2097152, 18874368, 2097664, 18874880, 67108864, 83886080, 67109376, 83886592, 69206016, 85983232, 69206528, 85983744], d = [0, 4096, 134217728, 134221824, 524288, 528384, 134742016, 134746112, 16, 4112, 134217744, 134221840, 524304, 528400, 134742032, 134746128], y = [0, 4, 256, 260, 0, 4, 256, 260, 1, 5, 257, 261, 1, 5, 257, 261], g = e.length() > 8 ? 3 : 1, m = [], v = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0], C = 0, E = 0; E < g; E++) {
var S = e.getInt32(),
T = e.getInt32();
S ^= (t = 252645135 & (S >>> 4 ^ T)) << 4, S ^= t = 65535 & ((T ^= t) >>> -16 ^ S), S ^= (t = 858993459 & (S >>> 2 ^ (T ^= t << -16))) << 2, S ^= t = 65535 & ((T ^= t) >>> -16 ^ S), S ^= (t = 1431655765 & (S >>> 1 ^ (T ^= t << -16))) << 1, S ^= t = 16711935 & ((T ^= t) >>> 8 ^ S), t = (S ^= (t = 1431655765 & (S >>> 1 ^ (T ^= t << 8))) << 1) << 8 | (T ^= t) >>> 20 & 240, S = T << 24 | T << 8 & 16711680 | T >>> 8 & 65280 | T >>> 24 & 240, T = t;
for (var I = 0; I < v.length; ++I) {
v[I] ? (S = S << 2 | S >>> 26, T = T << 2 | T >>> 26) : (S = S << 1 | S >>> 27, T = T << 1 | T >>> 27);
var A = r[(S &= -15) >>> 28] | a[S >>> 24 & 15] | n[S >>> 20 & 15] | i[S >>> 16 & 15] | s[S >>> 12 & 15] | o[S >>> 8 & 15] | c[S >>> 4 & 15],
B = u[(T &= -15) >>> 28] | l[T >>> 24 & 15] | p[T >>> 20 & 15] | f[T >>> 16 & 15] | h[T >>> 12 & 15] | d[T >>> 8 & 15] | y[T >>> 4 & 15];
t = 65535 & (B >>> 16 ^ A), m[C++] = A ^ t, m[C++] = B ^ t << 16;
}
}
return m;
}(t), this._init = !0;
}
}, n("DES-ECB", a.cipher.modes.ecb), n("DES-CBC", a.cipher.modes.cbc), n("DES-CFB", a.cipher.modes.cfb), n("DES-OFB", a.cipher.modes.ofb), n("DES-CTR", a.cipher.modes.ctr), n("3DES-ECB", a.cipher.modes.ecb), n("3DES-CBC", a.cipher.modes.cbc), n("3DES-CFB", a.cipher.modes.cfb), n("3DES-OFB", a.cipher.modes.ofb), n("3DES-CTR", a.cipher.modes.ctr);
var i = [16843776, 0, 65536, 16843780, 16842756, 66564, 4, 65536, 1024, 16843776, 16843780, 1024, 16778244, 16842756, 16777216, 4, 1028, 16778240, 16778240, 66560, 66560, 16842752, 16842752, 16778244, 65540, 16777220, 16777220, 65540, 0, 1028, 66564, 16777216, 65536, 16843780, 4, 16842752, 16843776, 16777216, 16777216, 1024, 16842756, 65536, 66560, 16777220, 1024, 4, 16778244, 66564, 16843780, 65540, 16842752, 16778244, 16777220, 1028, 66564, 16843776, 1028, 16778240, 16778240, 0, 65540, 66560, 0, 16842756],
s = [-2146402272, -2147450880, 32768, 1081376, 1048576, 32, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 1048576, 32, -2146435040, 1081344, 1048608, -2147450848, 0, -2147483648, 32768, 1081376, -2146435072, 1048608, -2147483616, 0, 1081344, 32800, -2146402304, -2146435072, 32800, 0, 1081376, -2146435040, 1048576, -2147450848, -2146435072, -2146402304, 32768, -2146435072, -2147450880, 32, -2146402272, 1081376, 32, 32768, -2147483648, 32800, -2146402304, 1048576, -2147483616, 1048608, -2147450848, -2147483616, 1048608, 1081344, 0, -2147450880, 32800, -2147483648, -2146435040, -2146402272, 1081344],
o = [520, 134349312, 0, 134348808, 134218240, 0, 131592, 134218240, 131080, 134217736, 134217736, 131072, 134349320, 131080, 134348800, 520, 134217728, 8, 134349312, 512, 131584, 134348800, 134348808, 131592, 134218248, 131584, 131072, 134218248, 8, 134349320, 512, 134217728, 134349312, 134217728, 131080, 520, 131072, 134349312, 134218240, 0, 512, 131080, 134349320, 134218240, 134217736, 512, 0, 134348808, 134218248, 131072, 134217728, 134349320, 8, 131592, 131584, 134217736, 134348800, 134218248, 520, 134348800, 131592, 8, 134348808, 131584],
c = [8396801, 8321, 8321, 128, 8396928, 8388737, 8388609, 8193, 0, 8396800, 8396800, 8396929, 129, 0, 8388736, 8388609, 1, 8192, 8388608, 8396801, 128, 8388608, 8193, 8320, 8388737, 1, 8320, 8388736, 8192, 8396928, 8396929, 129, 8388736, 8388609, 8396800, 8396929, 129, 0, 0, 8396800, 8320, 8388736, 8388737, 1, 8396801, 8321, 8321, 128, 8396929, 129, 1, 8192, 8388609, 8193, 8396928, 8388737, 8193, 8320, 8388608, 8396801, 128, 8388608, 8192, 8396928],
u = [256, 34078976, 34078720, 1107296512, 524288, 256, 1073741824, 34078720, 1074266368, 524288, 33554688, 1074266368, 1107296512, 1107820544, 524544, 1073741824, 33554432, 1074266112, 1074266112, 0, 1073742080, 1107820800, 1107820800, 33554688, 1107820544, 1073742080, 0, 1107296256, 34078976, 33554432, 1107296256, 524544, 524288, 1107296512, 256, 33554432, 1073741824, 34078720, 1107296512, 1074266368, 33554688, 1073741824, 1107820544, 34078976, 1074266368, 256, 33554432, 1107820544, 1107820800, 524544, 1107296256, 1107820800, 34078720, 0, 1074266112, 1107296256, 524544, 33554688, 1073742080, 524288, 0, 1074266112, 34078976, 1073742080],
l = [536870928, 541065216, 16384, 541081616, 541065216, 16, 541081616, 4194304, 536887296, 4210704, 4194304, 536870928, 4194320, 536887296, 536870912, 16400, 0, 4194320, 536887312, 16384, 4210688, 536887312, 16, 541065232, 541065232, 0, 4210704, 541081600, 16400, 4210688, 541081600, 536870912, 536887296, 16, 541065232, 4210688, 541081616, 4194304, 16400, 536870928, 4194304, 536887296, 536870912, 16400, 536870928, 541081616, 4210688, 541065216, 4210704, 541081600, 0, 541065232, 16, 16384, 541065216, 4210704, 16384, 4194320, 536887312, 0, 541081600, 536870912, 4194320, 536887312],
p = [2097152, 69206018, 67110914, 0, 2048, 67110914, 2099202, 69208064, 69208066, 2097152, 0, 67108866, 2, 67108864, 69206018, 2050, 67110912, 2099202, 2097154, 67110912, 67108866, 69206016, 69208064, 2097154, 69206016, 2048, 2050, 69208066, 2099200, 2, 67108864, 2099200, 67108864, 2099200, 2097152, 67110914, 67110914, 69206018, 69206018, 2, 2097154, 67108864, 67110912, 2097152, 69208064, 2050, 2099202, 69208064, 2050, 67108866, 69208066, 69206016, 2099200, 0, 2, 69208066, 0, 2099202, 69206016, 2048, 67108866, 67110912, 2048, 2097154],
f = [268439616, 4096, 262144, 268701760, 268435456, 268439616, 64, 268435456, 262208, 268697600, 268701760, 266240, 268701696, 266304, 4096, 64, 268697600, 268435520, 268439552, 4160, 266240, 262208, 268697664, 268701696, 4160, 0, 0, 268697664, 268435520, 268439552, 266304, 262144, 266304, 262144, 268701696, 4096, 64, 268697664, 4096, 266304, 268439552, 64, 268435520, 268697600, 268697664, 268435456, 262144, 268439616, 0, 268701760, 262208, 268435520, 268697600, 268439552, 268439616, 0, 268701760, 266240, 266240, 4160, 4160, 262208, 268435456, 268701696];
function h(e, t, r, a) {
var n,
h,
d = 32 === e.length ? 3 : 9;
n = 3 === d ? a ? [30, -2, -2] : [0, 32, 2] : a ? [94, 62, -2, 32, 64, 2, 30, -2, -2] : [0, 32, 2, 62, 30, -2, 64, 96, 2];
var y = t[0],
g = t[1];
y ^= (h = 252645135 & (y >>> 4 ^ g)) << 4, y ^= (h = 65535 & (y >>> 16 ^ (g ^= h))) << 16, y ^= h = 858993459 & ((g ^= h) >>> 2 ^ y), y ^= h = 16711935 & ((g ^= h << 2) >>> 8 ^ y), y = (y ^= (h = 1431655765 & (y >>> 1 ^ (g ^= h << 8))) << 1) << 1 | y >>> 31, g = (g ^= h) << 1 | g >>> 31;
for (var m = 0; m < d; m += 3) {
for (var v = n[m + 1], C = n[m + 2], E = n[m]; E != v; E += C) {
var S = g ^ e[E],
T = (g >>> 4 | g << 28) ^ e[E + 1];
h = y, y = g, g = h ^ (s[S >>> 24 & 63] | c[S >>> 16 & 63] | l[S >>> 8 & 63] | f[63 & S] | i[T >>> 24 & 63] | o[T >>> 16 & 63] | u[T >>> 8 & 63] | p[63 & T]);
}
h = y, y = g, g = h;
}
g = g >>> 1 | g << 31, g ^= h = 1431655765 & ((y = y >>> 1 | y << 31) >>> 1 ^ g), g ^= (h = 16711935 & (g >>> 8 ^ (y ^= h << 1))) << 8, g ^= (h = 858993459 & (g >>> 2 ^ (y ^= h))) << 2, g ^= h = 65535 & ((y ^= h) >>> 16 ^ g), g ^= h = 252645135 & ((y ^= h << 16) >>> 4 ^ g), y ^= h << 4, r[0] = y, r[1] = g;
}
function d(e) {
var t,
r = "DES-" + ((e = e || {}).mode || "CBC").toUpperCase(),
n = (t = e.decrypt ? a.cipher.createDecipher(r, e.key) : a.cipher.createCipher(r, e.key)).start;
return t.start = function (e, r) {
var i = null;
r instanceof a.util.ByteBuffer && (i = r, r = {}), (r = r || {}).output = i, r.iv = e, n.call(t, r);
}, t;
}
}, function (e, t, r) {
var a = r(0);
if (r(3), r(12), r(6), r(26), r(27), r(2), r(1), void 0 === n) var n = a.jsbn.BigInteger;
var i = a.util.isNodejs ? r(16) : null,
s = a.asn1,
o = a.util;
a.pki = a.pki || {}, e.exports = a.pki.rsa = a.rsa = a.rsa || {};
var c = a.pki,
u = [6, 4, 2, 4, 2, 4, 6, 2],
l = {
name: "PrivateKeyInfo",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PrivateKeyInfo.version",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyVersion"
}, {
name: "PrivateKeyInfo.privateKeyAlgorithm",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
value: [{
name: "AlgorithmIdentifier.algorithm",
tagClass: s.Class.UNIVERSAL,
type: s.Type.OID,
constructed: !1,
capture: "privateKeyOid"
}]
}, {
name: "PrivateKeyInfo",
tagClass: s.Class.UNIVERSAL,
type: s.Type.OCTETSTRING,
constructed: !1,
capture: "privateKey"
}]
},
p = {
name: "RSAPrivateKey",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
value: [{
name: "RSAPrivateKey.version",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyVersion"
}, {
name: "RSAPrivateKey.modulus",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyModulus"
}, {
name: "RSAPrivateKey.publicExponent",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyPublicExponent"
}, {
name: "RSAPrivateKey.privateExponent",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyPrivateExponent"
}, {
name: "RSAPrivateKey.prime1",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyPrime1"
}, {
name: "RSAPrivateKey.prime2",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyPrime2"
}, {
name: "RSAPrivateKey.exponent1",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyExponent1"
}, {
name: "RSAPrivateKey.exponent2",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyExponent2"
}, {
name: "RSAPrivateKey.coefficient",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "privateKeyCoefficient"
}]
},
f = {
name: "RSAPublicKey",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
value: [{
name: "RSAPublicKey.modulus",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "publicKeyModulus"
}, {
name: "RSAPublicKey.exponent",
tagClass: s.Class.UNIVERSAL,
type: s.Type.INTEGER,
constructed: !1,
capture: "publicKeyExponent"
}]
},
h = a.pki.rsa.publicKeyValidator = {
name: "SubjectPublicKeyInfo",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
captureAsn1: "subjectPublicKeyInfo",
value: [{
name: "SubjectPublicKeyInfo.AlgorithmIdentifier",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
value: [{
name: "AlgorithmIdentifier.algorithm",
tagClass: s.Class.UNIVERSAL,
type: s.Type.OID,
constructed: !1,
capture: "publicKeyOid"
}]
}, {
name: "SubjectPublicKeyInfo.subjectPublicKey",
tagClass: s.Class.UNIVERSAL,
type: s.Type.BITSTRING,
constructed: !1,
value: [{
name: "SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey",
tagClass: s.Class.UNIVERSAL,
type: s.Type.SEQUENCE,
constructed: !0,
optional: !0,
captureAsn1: "rsaPublicKey"
}]
}]
},
d = function (e) {
var t;
if (!(e.algorithm in c.oids)) {
var r = new Error("Unknown message digest algorithm.");
throw r.algorithm = e.algorithm, r;
}
t = c.oids[e.algorithm];
var a = s.oidToDer(t).getBytes(),
n = s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, []),
i = s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, []);
i.value.push(s.create(s.Class.UNIVERSAL, s.Type.OID, !1, a)), i.value.push(s.create(s.Class.UNIVERSAL, s.Type.NULL, !1, ""));
var o = s.create(s.Class.UNIVERSAL, s.Type.OCTETSTRING, !1, e.digest().getBytes());
return n.value.push(i), n.value.push(o), s.toDer(n).getBytes();
},
y = function (e, t, r) {
if (r) return e.modPow(t.e, t.n);
if (!t.p || !t.q) return e.modPow(t.d, t.n);
var i;
t.dP || (t.dP = t.d.mod(t.p.subtract(n.ONE))), t.dQ || (t.dQ = t.d.mod(t.q.subtract(n.ONE))), t.qInv || (t.qInv = t.q.modInverse(t.p));
do {
i = new n(a.util.bytesToHex(a.random.getBytes(t.n.bitLength() / 8)), 16);
} while (i.compareTo(t.n) >= 0 || !i.gcd(t.n).equals(n.ONE));
for (var s = (e = e.multiply(i.modPow(t.e, t.n)).mod(t.n)).mod(t.p).modPow(t.dP, t.p), o = e.mod(t.q).modPow(t.dQ, t.q); s.compareTo(o) < 0;) s = s.add(t.p);
var c = s.subtract(o).multiply(t.qInv).mod(t.p).multiply(t.q).add(o);
return c = c.multiply(i.modInverse(t.n)).mod(t.n);
};
function g(e, t, r) {
var n = a.util.createBuffer(),
i = Math.ceil(t.n.bitLength() / 8);
if (e.length > i - 11) {
var s = new Error("Message is too long for PKCS#1 v1.5 padding.");
throw s.length = e.length, s.max = i - 11, s;
}
n.putByte(0), n.putByte(r);
var o,
c = i - 3 - e.length;
if (0 === r || 1 === r) {
o = 0 === r ? 0 : 255;
for (var u = 0; u < c; ++u) n.putByte(o);
} else for (; c > 0;) {
var l = 0,
p = a.random.getBytes(c);
for (u = 0; u < c; ++u) 0 === (o = p.charCodeAt(u)) ? ++l : n.putByte(o);
c = l;
}
return n.putByte(0), n.putBytes(e), n;
}
function m(e, t, r, n) {
var i = Math.ceil(t.n.bitLength() / 8),
s = a.util.createBuffer(e),
o = s.getByte(),
c = s.getByte();
if (0 !== o || r && 0 !== c && 1 !== c || !r && 2 != c || r && 0 === c && void 0 === n) throw new Error("Encryption block is invalid.");
var u = 0;
if (0 === c) {
u = i - 3 - n;
for (var l = 0; l < u; ++l) if (0 !== s.getByte()) throw new Error("Encryption block is invalid.");
} else if (1 === c) for (u = 0; s.length() > 1;) {
if (255 !== s.getByte()) {
--s.read;
break;
}
++u;
} else if (2 === c) for (u = 0; s.length() > 1;) {
if (0 === s.getByte()) {
--s.read;
break;
}
++u;
}
if (0 !== s.getByte() || u !== i - 3 - s.length()) throw new Error("Encryption block is invalid.");
return s.getBytes();
}
function v(e, t, r) {
"function" == typeof t && (r = t, t = {});
var i = {
algorithm: {
name: (t = t || {}).algorithm || "PRIMEINC",
options: {
workers: t.workers || 2,
workLoad: t.workLoad || 100,
workerScript: t.workerScript
}
}
};
function s() {
o(e.pBits, function (t, a) {
return t ? r(t) : (e.p = a, null !== e.q ? u(t, e.q) : void o(e.qBits, u));
});
}
function o(e, t) {
a.prime.generateProbablePrime(e, i, t);
}
function u(t, a) {
if (t) return r(t);
if (e.q = a, e.p.compareTo(e.q) < 0) {
var i = e.p;
e.p = e.q, e.q = i;
}
if (0 !== e.p.subtract(n.ONE).gcd(e.e).compareTo(n.ONE)) return e.p = null, void s();
if (0 !== e.q.subtract(n.ONE).gcd(e.e).compareTo(n.ONE)) return e.q = null, void o(e.qBits, u);
if (e.p1 = e.p.subtract(n.ONE), e.q1 = e.q.subtract(n.ONE), e.phi = e.p1.multiply(e.q1), 0 !== e.phi.gcd(e.e).compareTo(n.ONE)) return e.p = e.q = null, void s();
if (e.n = e.p.multiply(e.q), e.n.bitLength() !== e.bits) return e.q = null, void o(e.qBits, u);
var l = e.e.modInverse(e.phi);
e.keys = {
privateKey: c.rsa.setPrivateKey(e.n, e.e, l, e.p, e.q, l.mod(e.p1), l.mod(e.q1), e.q.modInverse(e.p)),
publicKey: c.rsa.setPublicKey(e.n, e.e)
}, r(null, e.keys);
}
"prng" in t && (i.prng = t.prng), s();
}
function C(e) {
var t = e.toString(16);
t[0] >= "8" && (t = "00" + t);
var r = a.util.hexToBytes(t);
return r.length > 1 && (0 === r.charCodeAt(0) && 0 == (128 & r.charCodeAt(1)) || 255 === r.charCodeAt(0) && 128 == (128 & r.charCodeAt(1))) ? r.substr(1) : r;
}
function E(e) {
return e <= 100 ? 27 : e <= 150 ? 18 : e <= 200 ? 15 : e <= 250 ? 12 : e <= 300 ? 9 : e <= 350 ? 8 : e <= 400 ? 7 : e <= 500 ? 6 : e <= 600 ? 5 : e <= 800 ? 4 : e <= 1250 ? 3 : 2;
}
function S(e) {
return a.util.isNodejs && "function" == typeof i[e];
}
function T(e) {
return void 0 !== o.globalScope && "object" == typeof o.globalScope.crypto && "object" == typeof o.globalScope.crypto.subtle && "function" == typeof o.globalScope.crypto.subtle[e];
}
function I(e) {
return void 0 !== o.globalScope && "object" == typeof o.globalScope.msCrypto && "object" == typeof o.globalScope.msCrypto.subtle && "function" == typeof o.globalScope.msCrypto.subtle[e];
}
function A(e) {
for (var t = a.util.hexToBytes(e.toString(16)), r = new Uint8Array(t.length), n = 0; n < t.length; ++n) r[n] = t.charCodeAt(n);
return r;
}
c.rsa.encrypt = function (e, t, r) {
var i,
s = r,
o = Math.ceil(t.n.bitLength() / 8);
!1 !== r && !0 !== r ? (s = 2 === r, i = g(e, t, r)) : (i = a.util.createBuffer()).putBytes(e);
for (var c = new n(i.toHex(), 16), u = y(c, t, s).toString(16), l = a.util.createBuffer(), p = o - Math.ceil(u.length / 2); p > 0;) l.putByte(0), --p;
return l.putBytes(a.util.hexToBytes(u)), l.getBytes();
}, c.rsa.decrypt = function (e, t, r, i) {
var s = Math.ceil(t.n.bitLength() / 8);
if (e.length !== s) {
var o = new Error("Encrypted message length is invalid.");
throw o.length = e.length, o.expected = s, o;
}
var c = new n(a.util.createBuffer(e).toHex(), 16);
if (c.compareTo(t.n) >= 0) throw new Error("Encrypted message is invalid.");
for (var u = y(c, t, r).toString(16), l = a.util.createBuffer(), p = s - Math.ceil(u.length / 2); p > 0;) l.putByte(0), --p;
return l.putBytes(a.util.hexToBytes(u)), !1 !== i ? m(l.getBytes(), t, r) : l.getBytes();
}, c.rsa.createKeyPairGenerationState = function (e, t, r) {
"string" == typeof e && (e = parseInt(e, 10)), e = e || 2048;
var i,
s = (r = r || {}).prng || a.random,
o = {
nextBytes: function (e) {
for (var t = s.getBytesSync(e.length), r = 0; r < e.length; ++r) e[r] = t.charCodeAt(r);
}
},
c = r.algorithm || "PRIMEINC";
if ("PRIMEINC" !== c) throw new Error("Invalid key generation algorithm: " + c);
return (i = {
algorithm: c,
state: 0,
bits: e,
rng: o,
eInt: t || 65537,
e: new n(null),
p: null,
q: null,
qBits: e >> 1,
pBits: e - (e >> 1),
pqState: 0,
num: null,
keys: null
}).e.fromInt(i.eInt), i;
}, c.rsa.stepKeyPairGenerationState = function (e, t) {
"algorithm" in e || (e.algorithm = "PRIMEINC");
var r = new n(null);
r.fromInt(30);
for (var a, i = 0, s = function (e, t) {
return e | t;
}, o = +new Date(), l = 0; null === e.keys && (t <= 0 || l < t);) {
if (0 === e.state) {
var p = null === e.p ? e.pBits : e.qBits,
f = p - 1;
0 === e.pqState ? (e.num = new n(p, e.rng), e.num.testBit(f) || e.num.bitwiseTo(n.ONE.shiftLeft(f), s, e.num), e.num.dAddOffset(31 - e.num.mod(r).byteValue(), 0), i = 0, ++e.pqState) : 1 === e.pqState ? e.num.bitLength() > p ? e.pqState = 0 : e.num.isProbablePrime(E(e.num.bitLength())) ? ++e.pqState : e.num.dAddOffset(u[i++ % 8], 0) : 2 === e.pqState ? e.pqState = 0 === e.num.subtract(n.ONE).gcd(e.e).compareTo(n.ONE) ? 3 : 0 : 3 === e.pqState && (e.pqState = 0, null === e.p ? e.p = e.num : e.q = e.num, null !== e.p && null !== e.q && ++e.state, e.num = null);
} else if (1 === e.state) e.p.compareTo(e.q) < 0 && (e.num = e.p, e.p = e.q, e.q = e.num), ++e.state;else if (2 === e.state) e.p1 = e.p.subtract(n.ONE), e.q1 = e.q.subtract(n.ONE), e.phi = e.p1.multiply(e.q1), ++e.state;else if (3 === e.state) 0 === e.phi.gcd(e.e).compareTo(n.ONE) ? ++e.state : (e.p = null, e.q = null, e.state = 0);else if (4 === e.state) e.n = e.p.multiply(e.q), e.n.bitLength() === e.bits ? ++e.state : (e.q = null, e.state = 0);else if (5 === e.state) {
var h = e.e.modInverse(e.phi);
e.keys = {
privateKey: c.rsa.setPrivateKey(e.n, e.e, h, e.p, e.q, h.mod(e.p1), h.mod(e.q1), e.q.modInverse(e.p)),
publicKey: c.rsa.setPublicKey(e.n, e.e)
};
}
l += (a = +new Date()) - o, o = a;
}
return null !== e.keys;
}, c.rsa.generateKeyPair = function (e, t, r, n) {
if (1 === arguments.length ? "object" == typeof e ? (r = e, e = void 0) : "function" == typeof e && (n = e, e = void 0) : 2 === arguments.length ? "number" == typeof e ? "function" == typeof t ? (n = t, t = void 0) : "number" != typeof t && (r = t, t = void 0) : (r = e, n = t, e = void 0, t = void 0) : 3 === arguments.length && ("number" == typeof t ? "function" == typeof r && (n = r, r = void 0) : (n = r, r = t, t = void 0)), r = r || {}, void 0 === e && (e = r.bits || 2048), void 0 === t && (t = r.e || 65537), !a.options.usePureJavaScript && !r.prng && e >= 256 && e <= 16384 && (65537 === t || 3 === t)) if (n) {
if (S("generateKeyPair")) return i.generateKeyPair("rsa", {
modulusLength: e,
publicExponent: t,
publicKeyEncoding: {
type: "spki",
format: "pem"
},
privateKeyEncoding: {
type: "pkcs8",
format: "pem"
}
}, function (e, t, r) {
if (e) return n(e);
n(null, {
privateKey: c.privateKeyFromPem(r),
publicKey: c.publicKeyFromPem(t)
});
});
if (T("generateKey") && T("exportKey")) return o.globalScope.crypto.subtle.generateKey({
name: "RSASSA-PKCS1-v1_5",
modulusLength: e,
publicExponent: A(t),
hash: {
name: "SHA-256"
}
}, !0, ["sign", "verify"]).then(function (e) {
return o.globalScope.crypto.subtle.exportKey("pkcs8", e.privateKey);
}).then(void 0, function (e) {
n(e);
}).then(function (e) {
if (e) {
var t = c.privateKeyFromAsn1(s.fromDer(a.util.createBuffer(e)));
n(null, {
privateKey: t,
publicKey: c.setRsaPublicKey(t.n, t.e)
});
}
});
if (I("generateKey") && I("exportKey")) {
var u = o.globalScope.msCrypto.subtle.generateKey({
name: "RSASSA-PKCS1-v1_5",
modulusLength: e,
publicExponent: A(t),
hash: {
name: "SHA-256"
}
}, !0, ["sign", "verify"]);
return u.oncomplete = function (e) {
var t = e.target.result,
r = o.globalScope.msCrypto.subtle.exportKey("pkcs8", t.privateKey);
r.oncomplete = function (e) {
var t = e.target.result,
r = c.privateKeyFromAsn1(s.fromDer(a.util.createBuffer(t)));
n(null, {
privateKey: r,
publicKey: c.setRsaPublicKey(r.n, r.e)
});
}, r.onerror = function (e) {
n(e);
};
}, void (u.onerror = function (e) {
n(e);
});
}
} else if (S("generateKeyPairSync")) {
var l = i.generateKeyPairSync("rsa", {
modulusLength: e,
publicExponent: t,
publicKeyEncoding: {
type: "spki",
format: "pem"
},
privateKeyEncoding: {
type: "pkcs8",
format: "pem"
}
});
return {
privateKey: c.privateKeyFromPem(l.privateKey),
publicKey: c.publicKeyFromPem(l.publicKey)
};
}
var p = c.rsa.createKeyPairGenerationState(e, t, r);
if (!n) return c.rsa.stepKeyPairGenerationState(p, 0), p.keys;
v(p, r, n);
}, c.setRsaPublicKey = c.rsa.setPublicKey = function (e, t) {
var r = {
n: e,
e: t,
encrypt: function (e, t, n) {
if ("string" == typeof t ? t = t.toUpperCase() : void 0 === t && (t = "RSAES-PKCS1-V1_5"), "RSAES-PKCS1-V1_5" === t) t = {
encode: function (e, t, r) {
return g(e, t, 2).getBytes();
}
};else if ("RSA-OAEP" === t || "RSAES-OAEP" === t) t = {
encode: function (e, t) {
return a.pkcs1.encode_rsa_oaep(t, e, n);
}
};else if (-1 !== ["RAW", "NONE", "NULL", null].indexOf(t)) t = {
encode: function (e) {
return e;
}
};else if ("string" == typeof t) throw new Error('Unsupported encryption scheme: "' + t + '".');
var i = t.encode(e, r, !0);
return c.rsa.encrypt(i, r, !0);
},
verify: function (e, t, a) {
"string" == typeof a ? a = a.toUpperCase() : void 0 === a && (a = "RSASSA-PKCS1-V1_5"), "RSASSA-PKCS1-V1_5" === a ? a = {
verify: function (e, t) {
return t = m(t, r, !0), e === s.fromDer(t).value[1].value;
}
} : "NONE" !== a && "NULL" !== a && null !== a || (a = {
verify: function (e, t) {
return e === (t = m(t, r, !0));
}
});
var n = c.rsa.decrypt(t, r, !0, !1);
return a.verify(e, n, r.n.bitLength());
}
};
return r;
}, c.setRsaPrivateKey = c.rsa.setPrivateKey = function (e, t, r, n, i, s, o, u) {
var l = {
n: e,
e: t,
d: r,
p: n,
q: i,
dP: s,
dQ: o,
qInv: u,
decrypt: function (e, t, r) {
"string" == typeof t ? t = t.toUpperCase() : void 0 === t && (t = "RSAES-PKCS1-V1_5");
var n = c.rsa.decrypt(e, l, !1, !1);
if ("RSAES-PKCS1-V1_5" === t) t = {
decode: m
};else if ("RSA-OAEP" === t || "RSAES-OAEP" === t) t = {
decode: function (e, t) {
return a.pkcs1.decode_rsa_oaep(t, e, r);
}
};else {
if (-1 === ["RAW", "NONE", "NULL", null].indexOf(t)) throw new Error('Unsupported encryption scheme: "' + t + '".');
t = {
decode: function (e) {
return e;
}
};
}
return t.decode(n, l, !1);
},
sign: function (e, t) {
var r = !1;
"string" == typeof t && (t = t.toUpperCase()), void 0 === t || "RSASSA-PKCS1-V1_5" === t ? (t = {
encode: d
}, r = 1) : "NONE" !== t && "NULL" !== t && null !== t || (t = {
encode: function () {
return e;
}
}, r = 1);
var a = t.encode(e, l.n.bitLength());
return c.rsa.encrypt(a, l, r);
}
};
return l;
}, c.wrapRsaPrivateKey = function (e) {
return s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, s.integerToDer(0).getBytes()), s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.OID, !1, s.oidToDer(c.oids.rsaEncryption).getBytes()), s.create(s.Class.UNIVERSAL, s.Type.NULL, !1, "")]), s.create(s.Class.UNIVERSAL, s.Type.OCTETSTRING, !1, s.toDer(e).getBytes())]);
}, c.privateKeyFromAsn1 = function (e) {
var t,
r,
i,
o,
u,
f,
h,
d,
y = {},
g = [];
if (s.validate(e, l, y, g) && (e = s.fromDer(a.util.createBuffer(y.privateKey))), y = {}, g = [], !s.validate(e, p, y, g)) {
var m = new Error("Cannot read private key. ASN.1 object does not contain an RSAPrivateKey.");
throw m.errors = g, m;
}
return t = a.util.createBuffer(y.privateKeyModulus).toHex(), r = a.util.createBuffer(y.privateKeyPublicExponent).toHex(), i = a.util.createBuffer(y.privateKeyPrivateExponent).toHex(), o = a.util.createBuffer(y.privateKeyPrime1).toHex(), u = a.util.createBuffer(y.privateKeyPrime2).toHex(), f = a.util.createBuffer(y.privateKeyExponent1).toHex(), h = a.util.createBuffer(y.privateKeyExponent2).toHex(), d = a.util.createBuffer(y.privateKeyCoefficient).toHex(), c.setRsaPrivateKey(new n(t, 16), new n(r, 16), new n(i, 16), new n(o, 16), new n(u, 16), new n(f, 16), new n(h, 16), new n(d, 16));
}, c.privateKeyToAsn1 = c.privateKeyToRSAPrivateKey = function (e) {
return s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, s.integerToDer(0).getBytes()), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.n)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.e)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.d)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.p)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.q)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.dP)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.dQ)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.qInv))]);
}, c.publicKeyFromAsn1 = function (e) {
var t = {},
r = [];
if (s.validate(e, h, t, r)) {
var i,
o = s.derToOid(t.publicKeyOid);
if (o !== c.oids.rsaEncryption) throw (i = new Error("Cannot read public key. Unknown OID.")).oid = o, i;
e = t.rsaPublicKey;
}
if (r = [], !s.validate(e, f, t, r)) throw (i = new Error("Cannot read public key. ASN.1 object does not contain an RSAPublicKey.")).errors = r, i;
var u = a.util.createBuffer(t.publicKeyModulus).toHex(),
l = a.util.createBuffer(t.publicKeyExponent).toHex();
return c.setRsaPublicKey(new n(u, 16), new n(l, 16));
}, c.publicKeyToAsn1 = c.publicKeyToSubjectPublicKeyInfo = function (e) {
return s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.OID, !1, s.oidToDer(c.oids.rsaEncryption).getBytes()), s.create(s.Class.UNIVERSAL, s.Type.NULL, !1, "")]), s.create(s.Class.UNIVERSAL, s.Type.BITSTRING, !1, [c.publicKeyToRSAPublicKey(e)])]);
}, c.publicKeyToRSAPublicKey = function (e) {
return s.create(s.Class.UNIVERSAL, s.Type.SEQUENCE, !0, [s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.n)), s.create(s.Class.UNIVERSAL, s.Type.INTEGER, !1, C(e.e))]);
};
}, function (e, t, r) {
var a,
n = r(0);
e.exports = n.jsbn = n.jsbn || {};
function i(e, t, r) {
this.data = [], null != e && ("number" == typeof e ? this.fromNumber(e, t, r) : null == t && "string" != typeof e ? this.fromString(e, 256) : this.fromString(e, t));
}
function s() {
return new i(null);
}
function o(e, t, r, a, n, i) {
for (var s = 16383 & t, o = t >> 14; --i >= 0;) {
var c = 16383 & this.data[e],
u = this.data[e++] >> 14,
l = o * c + u * s;
n = ((c = s * c + ((16383 & l) << 14) + r.data[a] + n) >> 28) + (l >> 14) + o * u, r.data[a++] = 268435455 & c;
}
return n;
}
n.jsbn.BigInteger = i, "undefined" == typeof navigator ? (i.prototype.am = o, a = 28) : "Microsoft Internet Explorer" == navigator.appName ? (i.prototype.am = function (e, t, r, a, n, i) {
for (var s = 32767 & t, o = t >> 15; --i >= 0;) {
var c = 32767 & this.data[e],
u = this.data[e++] >> 15,
l = o * c + u * s;
n = ((c = s * c + ((32767 & l) << 15) + r.data[a] + (1073741823 & n)) >>> 30) + (l >>> 15) + o * u + (n >>> 30), r.data[a++] = 1073741823 & c;
}
return n;
}, a = 30) : "Netscape" != navigator.appName ? (i.prototype.am = function (e, t, r, a, n, i) {
for (; --i >= 0;) {
var s = t * this.data[e++] + r.data[a] + n;
n = Math.floor(s / 67108864), r.data[a++] = 67108863 & s;
}
return n;
}, a = 26) : (i.prototype.am = o, a = 28), i.prototype.DB = a, i.prototype.DM = (1 << a) - 1, i.prototype.DV = 1 << a;
i.prototype.FV = Math.pow(2, 52), i.prototype.F1 = 52 - a, i.prototype.F2 = 2 * a - 52;
var c,
u,
l = new Array();
for (c = "0".charCodeAt(0), u = 0; u <= 9; ++u) l[c++] = u;
for (c = "a".charCodeAt(0), u = 10; u < 36; ++u) l[c++] = u;
for (c = "A".charCodeAt(0), u = 10; u < 36; ++u) l[c++] = u;
function p(e) {
return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(e);
}
function f(e, t) {
var r = l[e.charCodeAt(t)];
return null == r ? -1 : r;
}
function h(e) {
var t = s();
return t.fromInt(e), t;
}
function d(e) {
var t,
r = 1;
return 0 != (t = e >>> 16) && (e = t, r += 16), 0 != (t = e >> 8) && (e = t, r += 8), 0 != (t = e >> 4) && (e = t, r += 4), 0 != (t = e >> 2) && (e = t, r += 2), 0 != (t = e >> 1) && (e = t, r += 1), r;
}
function y(e) {
this.m = e;
}
function g(e) {
this.m = e, this.mp = e.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << e.DB - 15) - 1, this.mt2 = 2 * e.t;
}
function m(e, t) {
return e & t;
}
function v(e, t) {
return e | t;
}
function C(e, t) {
return e ^ t;
}
function E(e, t) {
return e & ~t;
}
function S(e) {
if (0 == e) return -1;
var t = 0;
return 0 == (65535 & e) && (e >>= 16, t += 16), 0 == (255 & e) && (e >>= 8, t += 8), 0 == (15 & e) && (e >>= 4, t += 4), 0 == (3 & e) && (e >>= 2, t += 2), 0 == (1 & e) && ++t, t;
}
function T(e) {
for (var t = 0; 0 != e;) e &= e - 1, ++t;
return t;
}
function I() {}
function A(e) {
return e;
}
function B(e) {
this.r2 = s(), this.q3 = s(), i.ONE.dlShiftTo(2 * e.t, this.r2), this.mu = this.r2.divide(e), this.m = e;
}
y.prototype.convert = function (e) {
return e.s < 0 || e.compareTo(this.m) >= 0 ? e.mod(this.m) : e;
}, y.prototype.revert = function (e) {
return e;
}, y.prototype.reduce = function (e) {
e.divRemTo(this.m, null, e);
}, y.prototype.mulTo = function (e, t, r) {
e.multiplyTo(t, r), this.reduce(r);
}, y.prototype.sqrTo = function (e, t) {
e.squareTo(t), this.reduce(t);
}, g.prototype.convert = function (e) {
var t = s();
return e.abs().dlShiftTo(this.m.t, t), t.divRemTo(this.m, null, t), e.s < 0 && t.compareTo(i.ZERO) > 0 && this.m.subTo(t, t), t;
}, g.prototype.revert = function (e) {
var t = s();
return e.copyTo(t), this.reduce(t), t;
}, g.prototype.reduce = function (e) {
for (; e.t <= this.mt2;) e.data[e.t++] = 0;
for (var t = 0; t < this.m.t; ++t) {
var r = 32767 & e.data[t],
a = r * this.mpl + ((r * this.mph + (e.data[t] >> 15) * this.mpl & this.um) << 15) & e.DM;
for (r = t + this.m.t, e.data[r] += this.m.am(0, a, e, t, 0, this.m.t); e.data[r] >= e.DV;) e.data[r] -= e.DV, e.data[++r]++;
}
e.clamp(), e.drShiftTo(this.m.t, e), e.compareTo(this.m) >= 0 && e.subTo(this.m, e);
}, g.prototype.mulTo = function (e, t, r) {
e.multiplyTo(t, r), this.reduce(r);
}, g.prototype.sqrTo = function (e, t) {
e.squareTo(t), this.reduce(t);
}, i.prototype.copyTo = function (e) {
for (var t = this.t - 1; t >= 0; --t) e.data[t] = this.data[t];
e.t = this.t, e.s = this.s;
}, i.prototype.fromInt = function (e) {
this.t = 1, this.s = e < 0 ? -1 : 0, e > 0 ? this.data[0] = e : e < -1 ? this.data[0] = e + this.DV : this.t = 0;
}, i.prototype.fromString = function (e, t) {
var r;
if (16 == t) r = 4;else if (8 == t) r = 3;else if (256 == t) r = 8;else if (2 == t) r = 1;else if (32 == t) r = 5;else {
if (4 != t) return void this.fromRadix(e, t);
r = 2;
}
this.t = 0, this.s = 0;
for (var a = e.length, n = !1, s = 0; --a >= 0;) {
var o = 8 == r ? 255 & e[a] : f(e, a);
o < 0 ? "-" == e.charAt(a) && (n = !0) : (n = !1, 0 == s ? this.data[this.t++] = o : s + r > this.DB ? (this.data[this.t - 1] |= (o & (1 << this.DB - s) - 1) << s, this.data[this.t++] = o >> this.DB - s) : this.data[this.t - 1] |= o << s, (s += r) >= this.DB && (s -= this.DB));
}
8 == r && 0 != (128 & e[0]) && (this.s = -1, s > 0 && (this.data[this.t - 1] |= (1 << this.DB - s) - 1 << s)), this.clamp(), n && i.ZERO.subTo(this, this);
}, i.prototype.clamp = function () {
for (var e = this.s & this.DM; this.t > 0 && this.data[this.t - 1] == e;) --this.t;
}, i.prototype.dlShiftTo = function (e, t) {
var r;
for (r = this.t - 1; r >= 0; --r) t.data[r + e] = this.data[r];
for (r = e - 1; r >= 0; --r) t.data[r] = 0;
t.t = this.t + e, t.s = this.s;
}, i.prototype.drShiftTo = function (e, t) {
for (var r = e; r < this.t; ++r) t.data[r - e] = this.data[r];
t.t = Math.max(this.t - e, 0), t.s = this.s;
}, i.prototype.lShiftTo = function (e, t) {
var r,
a = e % this.DB,
n = this.DB - a,
i = (1 << n) - 1,
s = Math.floor(e / this.DB),
o = this.s << a & this.DM;
for (r = this.t - 1; r >= 0; --r) t.data[r + s + 1] = this.data[r] >> n | o, o = (this.data[r] & i) << a;
for (r = s - 1; r >= 0; --r) t.data[r] = 0;
t.data[s] = o, t.t = this.t + s + 1, t.s = this.s, t.clamp();
}, i.prototype.rShiftTo = function (e, t) {
t.s = this.s;
var r = Math.floor(e / this.DB);
if (r >= this.t) t.t = 0;else {
var a = e % this.DB,
n = this.DB - a,
i = (1 << a) - 1;
t.data[0] = this.data[r] >> a;
for (var s = r + 1; s < this.t; ++s) t.data[s - r - 1] |= (this.data[s] & i) << n, t.data[s - r] = this.data[s] >> a;
a > 0 && (t.data[this.t - r - 1] |= (this.s & i) << n), t.t = this.t - r, t.clamp();
}
}, i.prototype.subTo = function (e, t) {
for (var r = 0, a = 0, n = Math.min(e.t, this.t); r < n;) a += this.data[r] - e.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
if (e.t < this.t) {
for (a -= e.s; r < this.t;) a += this.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
a += this.s;
} else {
for (a += this.s; r < e.t;) a -= e.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
a -= e.s;
}
t.s = a < 0 ? -1 : 0, a < -1 ? t.data[r++] = this.DV + a : a > 0 && (t.data[r++] = a), t.t = r, t.clamp();
}, i.prototype.multiplyTo = function (e, t) {
var r = this.abs(),
a = e.abs(),
n = r.t;
for (t.t = n + a.t; --n >= 0;) t.data[n] = 0;
for (n = 0; n < a.t; ++n) t.data[n + r.t] = r.am(0, a.data[n], t, n, 0, r.t);
t.s = 0, t.clamp(), this.s != e.s && i.ZERO.subTo(t, t);
}, i.prototype.squareTo = function (e) {
for (var t = this.abs(), r = e.t = 2 * t.t; --r >= 0;) e.data[r] = 0;
for (r = 0; r < t.t - 1; ++r) {
var a = t.am(r, t.data[r], e, 2 * r, 0, 1);
(e.data[r + t.t] += t.am(r + 1, 2 * t.data[r], e, 2 * r + 1, a, t.t - r - 1)) >= t.DV && (e.data[r + t.t] -= t.DV, e.data[r + t.t + 1] = 1);
}
e.t > 0 && (e.data[e.t - 1] += t.am(r, t.data[r], e, 2 * r, 0, 1)), e.s = 0, e.clamp();
}, i.prototype.divRemTo = function (e, t, r) {
var a = e.abs();
if (!(a.t <= 0)) {
var n = this.abs();
if (n.t < a.t) return null != t && t.fromInt(0), void (null != r && this.copyTo(r));
null == r && (r = s());
var o = s(),
c = this.s,
u = e.s,
l = this.DB - d(a.data[a.t - 1]);
l > 0 ? (a.lShiftTo(l, o), n.lShiftTo(l, r)) : (a.copyTo(o), n.copyTo(r));
var p = o.t,
f = o.data[p - 1];
if (0 != f) {
var h = f * (1 << this.F1) + (p > 1 ? o.data[p - 2] >> this.F2 : 0),
y = this.FV / h,
g = (1 << this.F1) / h,
m = 1 << this.F2,
v = r.t,
C = v - p,
E = null == t ? s() : t;
for (o.dlShiftTo(C, E), r.compareTo(E) >= 0 && (r.data[r.t++] = 1, r.subTo(E, r)), i.ONE.dlShiftTo(p, E), E.subTo(o, o); o.t < p;) o.data[o.t++] = 0;
for (; --C >= 0;) {
var S = r.data[--v] == f ? this.DM : Math.floor(r.data[v] * y + (r.data[v - 1] + m) * g);
if ((r.data[v] += o.am(0, S, r, C, 0, p)) < S) for (o.dlShiftTo(C, E), r.subTo(E, r); r.data[v] < --S;) r.subTo(E, r);
}
null != t && (r.drShiftTo(p, t), c != u && i.ZERO.subTo(t, t)), r.t = p, r.clamp(), l > 0 && r.rShiftTo(l, r), c < 0 && i.ZERO.subTo(r, r);
}
}
}, i.prototype.invDigit = function () {
if (this.t < 1) return 0;
var e = this.data[0];
if (0 == (1 & e)) return 0;
var t = 3 & e;
return (t = (t = (t = (t = t * (2 - (15 & e) * t) & 15) * (2 - (255 & e) * t) & 255) * (2 - ((65535 & e) * t & 65535)) & 65535) * (2 - e * t % this.DV) % this.DV) > 0 ? this.DV - t : -t;
}, i.prototype.isEven = function () {
return 0 == (this.t > 0 ? 1 & this.data[0] : this.s);
}, i.prototype.exp = function (e, t) {
if (e > 4294967295 || e < 1) return i.ONE;
var r = s(),
a = s(),
n = t.convert(this),
o = d(e) - 1;
for (n.copyTo(r); --o >= 0;) if (t.sqrTo(r, a), (e & 1 << o) > 0) t.mulTo(a, n, r);else {
var c = r;
r = a, a = c;
}
return t.revert(r);
}, i.prototype.toString = function (e) {
if (this.s < 0) return "-" + this.negate().toString(e);
var t;
if (16 == e) t = 4;else if (8 == e) t = 3;else if (2 == e) t = 1;else if (32 == e) t = 5;else {
if (4 != e) return this.toRadix(e);
t = 2;
}
var r,
a = (1 << t) - 1,
n = !1,
i = "",
s = this.t,
o = this.DB - s * this.DB % t;
if (s-- > 0) for (o < this.DB && (r = this.data[s] >> o) > 0 && (n = !0, i = p(r)); s >= 0;) o < t ? (r = (this.data[s] & (1 << o) - 1) << t - o, r |= this.data[--s] >> (o += this.DB - t)) : (r = this.data[s] >> (o -= t) & a, o <= 0 && (o += this.DB, --s)), r > 0 && (n = !0), n && (i += p(r));
return n ? i : "0";
}, i.prototype.negate = function () {
var e = s();
return i.ZERO.subTo(this, e), e;
}, i.prototype.abs = function () {
return this.s < 0 ? this.negate() : this;
}, i.prototype.compareTo = function (e) {
var t = this.s - e.s;
if (0 != t) return t;
var r = this.t;
if (0 != (t = r - e.t)) return this.s < 0 ? -t : t;
for (; --r >= 0;) if (0 != (t = this.data[r] - e.data[r])) return t;
return 0;
}, i.prototype.bitLength = function () {
return this.t <= 0 ? 0 : this.DB * (this.t - 1) + d(this.data[this.t - 1] ^ this.s & this.DM);
}, i.prototype.mod = function (e) {
var t = s();
return this.abs().divRemTo(e, null, t), this.s < 0 && t.compareTo(i.ZERO) > 0 && e.subTo(t, t), t;
}, i.prototype.modPowInt = function (e, t) {
var r;
return r = e < 256 || t.isEven() ? new y(t) : new g(t), this.exp(e, r);
}, i.ZERO = h(0), i.ONE = h(1), I.prototype.convert = A, I.prototype.revert = A, I.prototype.mulTo = function (e, t, r) {
e.multiplyTo(t, r);
}, I.prototype.sqrTo = function (e, t) {
e.squareTo(t);
}, B.prototype.convert = function (e) {
if (e.s < 0 || e.t > 2 * this.m.t) return e.mod(this.m);
if (e.compareTo(this.m) < 0) return e;
var t = s();
return e.copyTo(t), this.reduce(t), t;
}, B.prototype.revert = function (e) {
return e;
}, B.prototype.reduce = function (e) {
for (e.drShiftTo(this.m.t - 1, this.r2), e.t > this.m.t + 1 && (e.t = this.m.t + 1, e.clamp()), this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3), this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); e.compareTo(this.r2) < 0;) e.dAddOffset(1, this.m.t + 1);
for (e.subTo(this.r2, e); e.compareTo(this.m) >= 0;) e.subTo(this.m, e);
}, B.prototype.mulTo = function (e, t, r) {
e.multiplyTo(t, r), this.reduce(r);
}, B.prototype.sqrTo = function (e, t) {
e.squareTo(t), this.reduce(t);
};
var b = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509],
N = (1 << 26) / b[b.length - 1];
i.prototype.chunkSize = function (e) {
return Math.floor(Math.LN2 * this.DB / Math.log(e));
}, i.prototype.toRadix = function (e) {
if (null == e && (e = 10), 0 == this.signum() || e < 2 || e > 36) return "0";
var t = this.chunkSize(e),
r = Math.pow(e, t),
a = h(r),
n = s(),
i = s(),
o = "";
for (this.divRemTo(a, n, i); n.signum() > 0;) o = (r + i.intValue()).toString(e).substr(1) + o, n.divRemTo(a, n, i);
return i.intValue().toString(e) + o;
}, i.prototype.fromRadix = function (e, t) {
this.fromInt(0), null == t && (t = 10);
for (var r = this.chunkSize(t), a = Math.pow(t, r), n = !1, s = 0, o = 0, c = 0; c < e.length; ++c) {
var u = f(e, c);
u < 0 ? "-" == e.charAt(c) && 0 == this.signum() && (n = !0) : (o = t * o + u, ++s >= r && (this.dMultiply(a), this.dAddOffset(o, 0), s = 0, o = 0));
}
s > 0 && (this.dMultiply(Math.pow(t, s)), this.dAddOffset(o, 0)), n && i.ZERO.subTo(this, this);
}, i.prototype.fromNumber = function (e, t, r) {
if ("number" == typeof t) {
if (e < 2) this.fromInt(1);else for (this.fromNumber(e, r), this.testBit(e - 1) || this.bitwiseTo(i.ONE.shiftLeft(e - 1), v, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(t);) this.dAddOffset(2, 0), this.bitLength() > e && this.subTo(i.ONE.shiftLeft(e - 1), this);
} else {
var a = new Array(),
n = 7 & e;
a.length = 1 + (e >> 3), t.nextBytes(a), n > 0 ? a[0] &= (1 << n) - 1 : a[0] = 0, this.fromString(a, 256);
}
}, i.prototype.bitwiseTo = function (e, t, r) {
var a,
n,
i = Math.min(e.t, this.t);
for (a = 0; a < i; ++a) r.data[a] = t(this.data[a], e.data[a]);
if (e.t < this.t) {
for (n = e.s & this.DM, a = i; a < this.t; ++a) r.data[a] = t(this.data[a], n);
r.t = this.t;
} else {
for (n = this.s & this.DM, a = i; a < e.t; ++a) r.data[a] = t(n, e.data[a]);
r.t = e.t;
}
r.s = t(this.s, e.s), r.clamp();
}, i.prototype.changeBit = function (e, t) {
var r = i.ONE.shiftLeft(e);
return this.bitwiseTo(r, t, r), r;
}, i.prototype.addTo = function (e, t) {
for (var r = 0, a = 0, n = Math.min(e.t, this.t); r < n;) a += this.data[r] + e.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
if (e.t < this.t) {
for (a += e.s; r < this.t;) a += this.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
a += this.s;
} else {
for (a += this.s; r < e.t;) a += e.data[r], t.data[r++] = a & this.DM, a >>= this.DB;
a += e.s;
}
t.s = a < 0 ? -1 : 0, a > 0 ? t.data[r++] = a : a < -1 && (t.data[r++] = this.DV + a), t.t = r, t.clamp();
}, i.prototype.dMultiply = function (e) {
this.data[this.t] = this.am(0, e - 1, this, 0, 0, this.t), ++this.t, this.clamp();
}, i.prototype.dAddOffset = function (e, t) {
if (0 != e) {
for (; this.t <= t;) this.data[this.t++] = 0;
for (this.data[t] += e; this.data[t] >= this.DV;) this.data[t] -= this.DV, ++t >= this.t && (this.data[this.t++] = 0), ++this.data[t];
}
}, i.prototype.multiplyLowerTo = function (e, t, r) {
var a,
n = Math.min(this.t + e.t, t);
for (r.s = 0, r.t = n; n > 0;) r.data[--n] = 0;
for (a = r.t - this.t; n < a; ++n) r.data[n + this.t] = this.am(0, e.data[n], r, n, 0, this.t);
for (a = Math.min(e.t, t); n < a; ++n) this.am(0, e.data[n], r, n, 0, t - n);
r.clamp();
}, i.prototype.multiplyUpperTo = function (e, t, r) {
--t;
var a = r.t = this.t + e.t - t;
for (r.s = 0; --a >= 0;) r.data[a] = 0;
for (a = Math.max(t - this.t, 0); a < e.t; ++a) r.data[this.t + a - t] = this.am(t - a, e.data[a], r, 0, 0, this.t + a - t);
r.clamp(), r.drShiftTo(1, r);
}, i.prototype.modInt = function (e) {
if (e <= 0) return 0;
var t = this.DV % e,
r = this.s < 0 ? e - 1 : 0;
if (this.t > 0) if (0 == t) r = this.data[0] % e;else for (var a = this.t - 1; a >= 0; --a) r = (t * r + this.data[a]) % e;
return r;
}, i.prototype.millerRabin = function (e) {
var t = this.subtract(i.ONE),
r = t.getLowestSetBit();
if (r <= 0) return !1;
for (var a, n = t.shiftRight(r), s = {
nextBytes: function (e) {
for (var t = 0; t < e.length; ++t) e[t] = Math.floor(256 * Math.random());
}
}, o = 0; o < e; ++o) {
do {
a = new i(this.bitLength(), s);
} while (a.compareTo(i.ONE) <= 0 || a.compareTo(t) >= 0);
var c = a.modPow(n, this);
if (0 != c.compareTo(i.ONE) && 0 != c.compareTo(t)) {
for (var u = 1; u++ < r && 0 != c.compareTo(t);) if (0 == (c = c.modPowInt(2, this)).compareTo(i.ONE)) return !1;
if (0 != c.compareTo(t)) return !1;
}
}
return !0;
}, i.prototype.clone = function () {
var e = s();
return this.copyTo(e), e;
}, i.prototype.intValue = function () {
if (this.s < 0) {
if (1 == this.t) return this.data[0] - this.DV;
if (0 == this.t) return -1;
} else {
if (1 == this.t) return this.data[0];
if (0 == this.t) return 0;
}
return (this.data[1] & (1 << 32 - this.DB) - 1) << this.DB | this.data[0];
}, i.prototype.byteValue = function () {
return 0 == this.t ? this.s : this.data[0] << 24 >> 24;
}, i.prototype.shortValue = function () {
return 0 == this.t ? this.s : this.data[0] << 16 >> 16;
}, i.prototype.signum = function () {
return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this.data[0] <= 0 ? 0 : 1;
}, i.prototype.toByteArray = function () {
var e = this.t,
t = new Array();
t[0] = this.s;
var r,
a = this.DB - e * this.DB % 8,
n = 0;
if (e-- > 0) for (a < this.DB && (r = this.data[e] >> a) != (this.s & this.DM) >> a && (t[n++] = r | this.s << this.DB - a); e >= 0;) a < 8 ? (r = (this.data[e] & (1 << a) - 1) << 8 - a, r |= this.data[--e] >> (a += this.DB - 8)) : (r = this.data[e] >> (a -= 8) & 255, a <= 0 && (a += this.DB, --e)), 0 != (128 & r) && (r |= -256), 0 == n && (128 & this.s) != (128 & r) && ++n, (n > 0 || r != this.s) && (t[n++] = r);
return t;
}, i.prototype.equals = function (e) {
return 0 == this.compareTo(e);
}, i.prototype.min = function (e) {
return this.compareTo(e) < 0 ? this : e;
}, i.prototype.max = function (e) {
return this.compareTo(e) > 0 ? this : e;
}, i.prototype.and = function (e) {
var t = s();
return this.bitwiseTo(e, m, t), t;
}, i.prototype.or = function (e) {
var t = s();
return this.bitwiseTo(e, v, t), t;
}, i.prototype.xor = function (e) {
var t = s();
return this.bitwiseTo(e, C, t), t;
}, i.prototype.andNot = function (e) {
var t = s();
return this.bitwiseTo(e, E, t), t;
}, i.prototype.not = function () {
for (var e = s(), t = 0; t < this.t; ++t) e.data[t] = this.DM & ~this.data[t];
return e.t = this.t, e.s = ~this.s, e;
}, i.prototype.shiftLeft = function (e) {
var t = s();
return e < 0 ? this.rShiftTo(-e, t) : this.lShiftTo(e, t), t;
}, i.prototype.shiftRight = function (e) {
var t = s();
return e < 0 ? this.lShiftTo(-e, t) : this.rShiftTo(e, t), t;
}, i.prototype.getLowestSetBit = function () {
for (var e = 0; e < this.t; ++e) if (0 != this.data[e]) return e * this.DB + S(this.data[e]);
return this.s < 0 ? this.t * this.DB : -1;
}, i.prototype.bitCount = function () {
for (var e = 0, t = this.s & this.DM, r = 0; r < this.t; ++r) e += T(this.data[r] ^ t);
return e;
}, i.prototype.testBit = function (e) {
var t = Math.floor(e / this.DB);
return t >= this.t ? 0 != this.s : 0 != (this.data[t] & 1 << e % this.DB);
}, i.prototype.setBit = function (e) {
return this.changeBit(e, v);
}, i.prototype.clearBit = function (e) {
return this.changeBit(e, E);
}, i.prototype.flipBit = function (e) {
return this.changeBit(e, C);
}, i.prototype.add = function (e) {
var t = s();
return this.addTo(e, t), t;
}, i.prototype.subtract = function (e) {
var t = s();
return this.subTo(e, t), t;
}, i.prototype.multiply = function (e) {
var t = s();
return this.multiplyTo(e, t), t;
}, i.prototype.divide = function (e) {
var t = s();
return this.divRemTo(e, t, null), t;
}, i.prototype.remainder = function (e) {
var t = s();
return this.divRemTo(e, null, t), t;
}, i.prototype.divideAndRemainder = function (e) {
var t = s(),
r = s();
return this.divRemTo(e, t, r), new Array(t, r);
}, i.prototype.modPow = function (e, t) {
var r,
a,
n = e.bitLength(),
i = h(1);
if (n <= 0) return i;
r = n < 18 ? 1 : n < 48 ? 3 : n < 144 ? 4 : n < 768 ? 5 : 6, a = n < 8 ? new y(t) : t.isEven() ? new B(t) : new g(t);
var o = new Array(),
c = 3,
u = r - 1,
l = (1 << r) - 1;
if (o[1] = a.convert(this), r > 1) {
var p = s();
for (a.sqrTo(o[1], p); c <= l;) o[c] = s(), a.mulTo(p, o[c - 2], o[c]), c += 2;
}
var f,
m,
v = e.t - 1,
C = !0,
E = s();
for (n = d(e.data[v]) - 1; v >= 0;) {
for (n >= u ? f = e.data[v] >> n - u & l : (f = (e.data[v] & (1 << n + 1) - 1) << u - n, v > 0 && (f |= e.data[v - 1] >> this.DB + n - u)), c = r; 0 == (1 & f);) f >>= 1, --c;
if ((n -= c) < 0 && (n += this.DB, --v), C) o[f].copyTo(i), C = !1;else {
for (; c > 1;) a.sqrTo(i, E), a.sqrTo(E, i), c -= 2;
c > 0 ? a.sqrTo(i, E) : (m = i, i = E, E = m), a.mulTo(E, o[f], i);
}
for (; v >= 0 && 0 == (e.data[v] & 1 << n);) a.sqrTo(i, E), m = i, i = E, E = m, --n < 0 && (n = this.DB - 1, --v);
}
return a.revert(i);
}, i.prototype.modInverse = function (e) {
var t = e.isEven();
if (this.isEven() && t || 0 == e.signum()) return i.ZERO;
for (var r = e.clone(), a = this.clone(), n = h(1), s = h(0), o = h(0), c = h(1); 0 != r.signum();) {
for (; r.isEven();) r.rShiftTo(1, r), t ? (n.isEven() && s.isEven() || (n.addTo(this, n), s.subTo(e, s)), n.rShiftTo(1, n)) : s.isEven() || s.subTo(e, s), s.rShiftTo(1, s);
for (; a.isEven();) a.rShiftTo(1, a), t ? (o.isEven() && c.isEven() || (o.addTo(this, o), c.subTo(e, c)), o.rShiftTo(1, o)) : c.isEven() || c.subTo(e, c), c.rShiftTo(1, c);
r.compareTo(a) >= 0 ? (r.subTo(a, r), t && n.subTo(o, n), s.subTo(c, s)) : (a.subTo(r, a), t && o.subTo(n, o), c.subTo(s, c));
}
return 0 != a.compareTo(i.ONE) ? i.ZERO : c.compareTo(e) >= 0 ? c.subtract(e) : c.signum() < 0 ? (c.addTo(e, c), c.signum() < 0 ? c.add(e) : c) : c;
}, i.prototype.pow = function (e) {
return this.exp(e, new I());
}, i.prototype.gcd = function (e) {
var t = this.s < 0 ? this.negate() : this.clone(),
r = e.s < 0 ? e.negate() : e.clone();
if (t.compareTo(r) < 0) {
var a = t;
t = r, r = a;
}
var n = t.getLowestSetBit(),
i = r.getLowestSetBit();
if (i < 0) return t;
for (n < i && (i = n), i > 0 && (t.rShiftTo(i, t), r.rShiftTo(i, r)); t.signum() > 0;) (n = t.getLowestSetBit()) > 0 && t.rShiftTo(n, t), (n = r.getLowestSetBit()) > 0 && r.rShiftTo(n, r), t.compareTo(r) >= 0 ? (t.subTo(r, t), t.rShiftTo(1, t)) : (r.subTo(t, r), r.rShiftTo(1, r));
return i > 0 && r.lShiftTo(i, r), r;
}, i.prototype.isProbablePrime = function (e) {
var t,
r = this.abs();
if (1 == r.t && r.data[0] <= b[b.length - 1]) {
for (t = 0; t < b.length; ++t) if (r.data[0] == b[t]) return !0;
return !1;
}
if (r.isEven()) return !1;
for (t = 1; t < b.length;) {
for (var a = b[t], n = t + 1; n < b.length && a < N;) a *= b[n++];
for (a = r.modInt(a); t < n;) if (a % b[t++] == 0) return !1;
}
return r.millerRabin(e);
};
}, function (e, t, r) {
var a = r(0);
r(1), e.exports = a.cipher = a.cipher || {}, a.cipher.algorithms = a.cipher.algorithms || {}, a.cipher.createCipher = function (e, t) {
var r = e;
if ("string" == typeof r && (r = a.cipher.getAlgorithm(r)) && (r = r()), !r) throw new Error("Unsupported algorithm: " + e);
return new a.cipher.BlockCipher({
algorithm: r,
key: t,
decrypt: !1
});
}, a.cipher.createDecipher = function (e, t) {
var r = e;
if ("string" == typeof r && (r = a.cipher.getAlgorithm(r)) && (r = r()), !r) throw new Error("Unsupported algorithm: " + e);
return new a.cipher.BlockCipher({
algorithm: r,
key: t,
decrypt: !0
});
}, a.cipher.registerAlgorithm = function (e, t) {
e = e.toUpperCase(), a.cipher.algorithms[e] = t;
}, a.cipher.getAlgorithm = function (e) {
return (e = e.toUpperCase()) in a.cipher.algorithms ? a.cipher.algorithms[e] : null;
};
var n = a.cipher.BlockCipher = function (e) {
this.algorithm = e.algorithm, this.mode = this.algorithm.mode, this.blockSize = this.mode.blockSize, this._finish = !1, this._input = null, this.output = null, this._op = e.decrypt ? this.mode.decrypt : this.mode.encrypt, this._decrypt = e.decrypt, this.algorithm.initialize(e);
};
n.prototype.start = function (e) {
e = e || {};
var t = {};
for (var r in e) t[r] = e[r];
t.decrypt = this._decrypt, this._finish = !1, this._input = a.util.createBuffer(), this.output = e.output || a.util.createBuffer(), this.mode.start(t);
}, n.prototype.update = function (e) {
for (e && this._input.putBuffer(e); !this._op.call(this.mode, this._input, this.output, this._finish) && !this._finish;);
this._input.compact();
}, n.prototype.finish = function (e) {
!e || "ECB" !== this.mode.name && "CBC" !== this.mode.name || (this.mode.pad = function (t) {
return e(this.blockSize, t, !1);
}, this.mode.unpad = function (t) {
return e(this.blockSize, t, !0);
});
var t = {};
return t.decrypt = this._decrypt, t.overflow = this._input.length() % this.blockSize, !(!this._decrypt && this.mode.pad && !this.mode.pad(this._input, t)) && (this._finish = !0, this.update(), !(this._decrypt && this.mode.unpad && !this.mode.unpad(this.output, t)) && !(this.mode.afterFinish && !this.mode.afterFinish(this.output, t)));
};
}, function (e, t, r) {
var a = r(0);
r(4), r(1);
var n = e.exports = a.md5 = a.md5 || {};
a.md.md5 = a.md.algorithms.md5 = n, n.create = function () {
u || function () {
i = String.fromCharCode(128), i += a.util.fillString(String.fromCharCode(0), 64), s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2, 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9], o = [7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21], c = new Array(64);
for (var e = 0; e < 64; ++e) c[e] = Math.floor(4294967296 * Math.abs(Math.sin(e + 1)));
u = !0;
}();
var e = null,
t = a.util.createBuffer(),
r = new Array(16),
n = {
algorithm: "md5",
blockLength: 64,
digestLength: 16,
messageLength: 0,
fullMessageLength: null,
messageLengthSize: 8,
start: function () {
n.messageLength = 0, n.fullMessageLength = n.messageLength64 = [];
for (var r = n.messageLengthSize / 4, i = 0; i < r; ++i) n.fullMessageLength.push(0);
return t = a.util.createBuffer(), e = {
h0: 1732584193,
h1: 4023233417,
h2: 2562383102,
h3: 271733878
}, n;
}
};
return n.start(), n.update = function (i, s) {
"utf8" === s && (i = a.util.encodeUtf8(i));
var o = i.length;
n.messageLength += o, o = [o / 4294967296 >>> 0, o >>> 0];
for (var c = n.fullMessageLength.length - 1; c >= 0; --c) n.fullMessageLength[c] += o[1], o[1] = o[0] + (n.fullMessageLength[c] / 4294967296 >>> 0), n.fullMessageLength[c] = n.fullMessageLength[c] >>> 0, o[0] = o[1] / 4294967296 >>> 0;
return t.putBytes(i), l(e, r, t), (t.read > 2048 || 0 === t.length()) && t.compact(), n;
}, n.digest = function () {
var s = a.util.createBuffer();
s.putBytes(t.bytes());
var o = n.fullMessageLength[n.fullMessageLength.length - 1] + n.messageLengthSize & n.blockLength - 1;
s.putBytes(i.substr(0, n.blockLength - o));
for (var c, u = 0, p = n.fullMessageLength.length - 1; p >= 0; --p) u = (c = 8 * n.fullMessageLength[p] + u) / 4294967296 >>> 0, s.putInt32Le(c >>> 0);
var f = {
h0: e.h0,
h1: e.h1,
h2: e.h2,
h3: e.h3
};
l(f, r, s);
var h = a.util.createBuffer();
return h.putInt32Le(f.h0), h.putInt32Le(f.h1), h.putInt32Le(f.h2), h.putInt32Le(f.h3), h;
}, n;
};
var i = null,
s = null,
o = null,
c = null,
u = !1;
function l(e, t, r) {
for (var a, n, i, u, l, p, f, h = r.length(); h >= 64;) {
for (n = e.h0, i = e.h1, u = e.h2, l = e.h3, f = 0; f < 16; ++f) t[f] = r.getInt32Le(), a = n + (l ^ i & (u ^ l)) + c[f] + t[f], n = l, l = u, u = i, i += a << (p = o[f]) | a >>> 32 - p;
for (; f < 32; ++f) a = n + (u ^ l & (i ^ u)) + c[f] + t[s[f]], n = l, l = u, u = i, i += a << (p = o[f]) | a >>> 32 - p;
for (; f < 48; ++f) a = n + (i ^ u ^ l) + c[f] + t[s[f]], n = l, l = u, u = i, i += a << (p = o[f]) | a >>> 32 - p;
for (; f < 64; ++f) a = n + (u ^ (i | ~l)) + c[f] + t[s[f]], n = l, l = u, u = i, i += a << (p = o[f]) | a >>> 32 - p;
e.h0 = e.h0 + n | 0, e.h1 = e.h1 + i | 0, e.h2 = e.h2 + u | 0, e.h3 = e.h3 + l | 0, h -= 64;
}
}
}, function (e, t, r) {
var a = r(0);
r(8), r(4), r(1);
var n,
i = a.pkcs5 = a.pkcs5 || {};
a.util.isNodejs && !a.options.usePureJavaScript && (n = r(16)), e.exports = a.pbkdf2 = i.pbkdf2 = function (e, t, r, i, s, o) {
if ("function" == typeof s && (o = s, s = null), a.util.isNodejs && !a.options.usePureJavaScript && n.pbkdf2 && (null === s || "object" != typeof s) && (n.pbkdf2Sync.length > 4 || !s || "sha1" === s)) return "string" != typeof s && (s = "sha1"), e = Buffer.from(e, "binary"), t = Buffer.from(t, "binary"), o ? 4 === n.pbkdf2Sync.length ? n.pbkdf2(e, t, r, i, function (e, t) {
if (e) return o(e);
o(null, t.toString("binary"));
}) : n.pbkdf2(e, t, r, i, s, function (e, t) {
if (e) return o(e);
o(null, t.toString("binary"));
}) : 4 === n.pbkdf2Sync.length ? n.pbkdf2Sync(e, t, r, i).toString("binary") : n.pbkdf2Sync(e, t, r, i, s).toString("binary");
if (null == s && (s = "sha1"), "string" == typeof s) {
if (!(s in a.md.algorithms)) throw new Error("Unknown hash algorithm: " + s);
s = a.md[s].create();
}
var c = s.digestLength;
if (i > 4294967295 * c) {
var u = new Error("Derived key is too long.");
if (o) return o(u);
throw u;
}
var l = Math.ceil(i / c),
p = i - (l - 1) * c,
f = a.hmac.create();
f.start(s, e);
var h,
d,
y,
g = "";
if (!o) {
for (var m = 1; m <= l; ++m) {
f.start(null, null), f.update(t), f.update(a.util.int32ToBytes(m)), h = y = f.digest().getBytes();
for (var v = 2; v <= r; ++v) f.start(null, null), f.update(y), d = f.digest().getBytes(), h = a.util.xorBytes(h, d, c), y = d;
g += m < l ? h : h.substr(0, p);
}
return g;
}
m = 1;
function C() {
if (m > l) return o(null, g);
f.start(null, null), f.update(t), f.update(a.util.int32ToBytes(m)), h = y = f.digest().getBytes(), v = 2, E();
}
function E() {
if (v <= r) return f.start(null, null), f.update(y), d = f.digest().getBytes(), h = a.util.xorBytes(h, d, c), y = d, ++v, a.util.setImmediate(E);
g += m < l ? h : h.substr(0, p), ++m, C();
}
C();
};
}, function (e, t) {}, function (e, t, r) {
var a = r(0);
r(5), r(3), r(10), r(4), r(37), r(6), r(7), r(18), r(11), r(1);
var n = a.asn1,
i = e.exports = a.pki = a.pki || {},
s = i.oids,
o = {};
o.CN = s.commonName, o.commonName = "CN", o.C = s.countryName, o.countryName = "C", o.L = s.localityName, o.localityName = "L", o.ST = s.stateOrProvinceName, o.stateOrProvinceName = "ST", o.O = s.organizationName, o.organizationName = "O", o.OU = s.organizationalUnitName, o.organizationalUnitName = "OU", o.E = s.emailAddress, o.emailAddress = "E";
var c = a.pki.rsa.publicKeyValidator,
u = {
name: "Certificate",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "Certificate.TBSCertificate",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "tbsCertificate",
value: [{
name: "Certificate.TBSCertificate.version",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
constructed: !0,
optional: !0,
value: [{
name: "Certificate.TBSCertificate.version.integer",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "certVersion"
}]
}, {
name: "Certificate.TBSCertificate.serialNumber",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "certSerialNumber"
}, {
name: "Certificate.TBSCertificate.signature",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "Certificate.TBSCertificate.signature.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "certinfoSignatureOid"
}, {
name: "Certificate.TBSCertificate.signature.parameters",
tagClass: n.Class.UNIVERSAL,
optional: !0,
captureAsn1: "certinfoSignatureParams"
}]
}, {
name: "Certificate.TBSCertificate.issuer",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "certIssuer"
}, {
name: "Certificate.TBSCertificate.validity",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "Certificate.TBSCertificate.validity.notBefore (utc)",
tagClass: n.Class.UNIVERSAL,
type: n.Type.UTCTIME,
constructed: !1,
optional: !0,
capture: "certValidity1UTCTime"
}, {
name: "Certificate.TBSCertificate.validity.notBefore (generalized)",
tagClass: n.Class.UNIVERSAL,
type: n.Type.GENERALIZEDTIME,
constructed: !1,
optional: !0,
capture: "certValidity2GeneralizedTime"
}, {
name: "Certificate.TBSCertificate.validity.notAfter (utc)",
tagClass: n.Class.UNIVERSAL,
type: n.Type.UTCTIME,
constructed: !1,
optional: !0,
capture: "certValidity3UTCTime"
}, {
name: "Certificate.TBSCertificate.validity.notAfter (generalized)",
tagClass: n.Class.UNIVERSAL,
type: n.Type.GENERALIZEDTIME,
constructed: !1,
optional: !0,
capture: "certValidity4GeneralizedTime"
}]
}, {
name: "Certificate.TBSCertificate.subject",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "certSubject"
}, c, {
name: "Certificate.TBSCertificate.issuerUniqueID",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 1,
constructed: !0,
optional: !0,
value: [{
name: "Certificate.TBSCertificate.issuerUniqueID.id",
tagClass: n.Class.UNIVERSAL,
type: n.Type.BITSTRING,
constructed: !1,
captureBitStringValue: "certIssuerUniqueId"
}]
}, {
name: "Certificate.TBSCertificate.subjectUniqueID",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 2,
constructed: !0,
optional: !0,
value: [{
name: "Certificate.TBSCertificate.subjectUniqueID.id",
tagClass: n.Class.UNIVERSAL,
type: n.Type.BITSTRING,
constructed: !1,
captureBitStringValue: "certSubjectUniqueId"
}]
}, {
name: "Certificate.TBSCertificate.extensions",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 3,
constructed: !0,
captureAsn1: "certExtensions",
optional: !0
}]
}, {
name: "Certificate.signatureAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "Certificate.signatureAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "certSignatureOid"
}, {
name: "Certificate.TBSCertificate.signature.parameters",
tagClass: n.Class.UNIVERSAL,
optional: !0,
captureAsn1: "certSignatureParams"
}]
}, {
name: "Certificate.signatureValue",
tagClass: n.Class.UNIVERSAL,
type: n.Type.BITSTRING,
constructed: !1,
captureBitStringValue: "certSignature"
}]
},
l = {
name: "rsapss",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "rsapss.hashAlgorithm",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
constructed: !0,
value: [{
name: "rsapss.hashAlgorithm.AlgorithmIdentifier",
tagClass: n.Class.UNIVERSAL,
type: n.Class.SEQUENCE,
constructed: !0,
optional: !0,
value: [{
name: "rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "hashOid"
}]
}]
}, {
name: "rsapss.maskGenAlgorithm",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 1,
constructed: !0,
value: [{
name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier",
tagClass: n.Class.UNIVERSAL,
type: n.Class.SEQUENCE,
constructed: !0,
optional: !0,
value: [{
name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "maskGenOid"
}, {
name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.params",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "maskGenHashOid"
}]
}]
}]
}, {
name: "rsapss.saltLength",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 2,
optional: !0,
value: [{
name: "rsapss.saltLength.saltLength",
tagClass: n.Class.UNIVERSAL,
type: n.Class.INTEGER,
constructed: !1,
capture: "saltLength"
}]
}, {
name: "rsapss.trailerField",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 3,
optional: !0,
value: [{
name: "rsapss.trailer.trailer",
tagClass: n.Class.UNIVERSAL,
type: n.Class.INTEGER,
constructed: !1,
capture: "trailer"
}]
}]
},
p = {
name: "CertificationRequestInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "certificationRequestInfo",
value: [{
name: "CertificationRequestInfo.integer",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "certificationRequestInfoVersion"
}, {
name: "CertificationRequestInfo.subject",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "certificationRequestInfoSubject"
}, c, {
name: "CertificationRequestInfo.attributes",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
constructed: !0,
optional: !0,
capture: "certificationRequestInfoAttributes",
value: [{
name: "CertificationRequestInfo.attributes",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "CertificationRequestInfo.attributes.type",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1
}, {
name: "CertificationRequestInfo.attributes.value",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
constructed: !0
}]
}]
}]
},
f = {
name: "CertificationRequest",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "csr",
value: [p, {
name: "CertificationRequest.signatureAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "CertificationRequest.signatureAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "csrSignatureOid"
}, {
name: "CertificationRequest.signatureAlgorithm.parameters",
tagClass: n.Class.UNIVERSAL,
optional: !0,
captureAsn1: "csrSignatureParams"
}]
}, {
name: "CertificationRequest.signature",
tagClass: n.Class.UNIVERSAL,
type: n.Type.BITSTRING,
constructed: !1,
captureBitStringValue: "csrSignature"
}]
};
function h(e, t) {
"string" == typeof t && (t = {
shortName: t
});
for (var r, a = null, n = 0; null === a && n < e.attributes.length; ++n) r = e.attributes[n], (t.type && t.type === r.type || t.name && t.name === r.name || t.shortName && t.shortName === r.shortName) && (a = r);
return a;
}
i.RDNAttributesAsArray = function (e, t) {
for (var r, a, i, c = [], u = 0; u < e.value.length; ++u) {
r = e.value[u];
for (var l = 0; l < r.value.length; ++l) i = {}, a = r.value[l], i.type = n.derToOid(a.value[0].value), i.value = a.value[1].value, i.valueTagClass = a.value[1].type, i.type in s && (i.name = s[i.type], i.name in o && (i.shortName = o[i.name])), t && (t.update(i.type), t.update(i.value)), c.push(i);
}
return c;
}, i.CRIAttributesAsArray = function (e) {
for (var t = [], r = 0; r < e.length; ++r) for (var a = e[r], c = n.derToOid(a.value[0].value), u = a.value[1].value, l = 0; l < u.length; ++l) {
var p = {};
if (p.type = c, p.value = u[l].value, p.valueTagClass = u[l].type, p.type in s && (p.name = s[p.type], p.name in o && (p.shortName = o[p.name])), p.type === s.extensionRequest) {
p.extensions = [];
for (var f = 0; f < p.value.length; ++f) p.extensions.push(i.certificateExtensionFromAsn1(p.value[f]));
}
t.push(p);
}
return t;
};
var d = function (e, t, r) {
var a = {};
if (e !== s["RSASSA-PSS"]) return a;
r && (a = {
hash: {
algorithmOid: s.sha1
},
mgf: {
algorithmOid: s.mgf1,
hash: {
algorithmOid: s.sha1
}
},
saltLength: 20
});
var i = {},
o = [];
if (!n.validate(t, l, i, o)) {
var c = new Error("Cannot read RSASSA-PSS parameter block.");
throw c.errors = o, c;
}
return void 0 !== i.hashOid && (a.hash = a.hash || {}, a.hash.algorithmOid = n.derToOid(i.hashOid)), void 0 !== i.maskGenOid && (a.mgf = a.mgf || {}, a.mgf.algorithmOid = n.derToOid(i.maskGenOid), a.mgf.hash = a.mgf.hash || {}, a.mgf.hash.algorithmOid = n.derToOid(i.maskGenHashOid)), void 0 !== i.saltLength && (a.saltLength = i.saltLength.charCodeAt(0)), a;
};
function y(e) {
for (var t, r, i = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []), s = e.attributes, o = 0; o < s.length; ++o) {
var c = (t = s[o]).value,
u = n.Type.PRINTABLESTRING;
"valueTagClass" in t && (u = t.valueTagClass) === n.Type.UTF8 && (c = a.util.encodeUtf8(c)), r = n.create(n.Class.UNIVERSAL, n.Type.SET, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.type).getBytes()), n.create(n.Class.UNIVERSAL, u, !1, c)])]), i.value.push(r);
}
return i;
}
function g(e) {
for (var t, r = 0; r < e.length; ++r) {
if (void 0 === (t = e[r]).name && (t.type && t.type in i.oids ? t.name = i.oids[t.type] : t.shortName && t.shortName in o && (t.name = i.oids[o[t.shortName]])), void 0 === t.type) {
if (!t.name || !(t.name in i.oids)) throw (c = new Error("Attribute type not specified.")).attribute = t, c;
t.type = i.oids[t.name];
}
if (void 0 === t.shortName && t.name && t.name in o && (t.shortName = o[t.name]), t.type === s.extensionRequest && (t.valueConstructed = !0, t.valueTagClass = n.Type.SEQUENCE, !t.value && t.extensions)) {
t.value = [];
for (var a = 0; a < t.extensions.length; ++a) t.value.push(i.certificateExtensionToAsn1(m(t.extensions[a])));
}
var c;
if (void 0 === t.value) throw (c = new Error("Attribute value not specified.")).attribute = t, c;
}
}
function m(e, t) {
if (t = t || {}, void 0 === e.name && e.id && e.id in i.oids && (e.name = i.oids[e.id]), void 0 === e.id) {
if (!e.name || !(e.name in i.oids)) throw (S = new Error("Extension ID not specified.")).extension = e, S;
e.id = i.oids[e.name];
}
if (void 0 !== e.value) return e;
if ("keyUsage" === e.name) {
var r = 0,
o = 0,
c = 0;
e.digitalSignature && (o |= 128, r = 7), e.nonRepudiation && (o |= 64, r = 6), e.keyEncipherment && (o |= 32, r = 5), e.dataEncipherment && (o |= 16, r = 4), e.keyAgreement && (o |= 8, r = 3), e.keyCertSign && (o |= 4, r = 2), e.cRLSign && (o |= 2, r = 1), e.encipherOnly && (o |= 1, r = 0), e.decipherOnly && (c |= 128, r = 7);
var u = String.fromCharCode(r);
0 !== c ? u += String.fromCharCode(o) + String.fromCharCode(c) : 0 !== o && (u += String.fromCharCode(o)), e.value = n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, u);
} else if ("basicConstraints" === e.name) e.value = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []), e.cA && e.value.value.push(n.create(n.Class.UNIVERSAL, n.Type.BOOLEAN, !1, String.fromCharCode(255))), "pathLenConstraint" in e && e.value.value.push(n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.pathLenConstraint).getBytes()));else if ("extKeyUsage" === e.name) {
e.value = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
var l = e.value.value;
for (var p in e) !0 === e[p] && (p in s ? l.push(n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(s[p]).getBytes())) : -1 !== p.indexOf(".") && l.push(n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(p).getBytes())));
} else if ("nsCertType" === e.name) {
r = 0, o = 0;
e.client && (o |= 128, r = 7), e.server && (o |= 64, r = 6), e.email && (o |= 32, r = 5), e.objsign && (o |= 16, r = 4), e.reserved && (o |= 8, r = 3), e.sslCA && (o |= 4, r = 2), e.emailCA && (o |= 2, r = 1), e.objCA && (o |= 1, r = 0);
u = String.fromCharCode(r);
0 !== o && (u += String.fromCharCode(o)), e.value = n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, u);
} else if ("subjectAltName" === e.name || "issuerAltName" === e.name) {
e.value = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
for (var f = 0; f < e.altNames.length; ++f) {
u = (v = e.altNames[f]).value;
if (7 === v.type && v.ip) {
if (null === (u = a.util.bytesFromIP(v.ip))) throw (S = new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.')).extension = e, S;
} else 8 === v.type && (u = v.oid ? n.oidToDer(n.oidToDer(v.oid)) : n.oidToDer(u));
e.value.value.push(n.create(n.Class.CONTEXT_SPECIFIC, v.type, !1, u));
}
} else if ("nsComment" === e.name && t.cert) {
if (!/^[\x00-\x7F]*$/.test(e.comment) || e.comment.length < 1 || e.comment.length > 128) throw new Error('Invalid "nsComment" content.');
e.value = n.create(n.Class.UNIVERSAL, n.Type.IA5STRING, !1, e.comment);
} else if ("subjectKeyIdentifier" === e.name && t.cert) {
var h = t.cert.generateSubjectKeyIdentifier();
e.subjectKeyIdentifier = h.toHex(), e.value = n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, h.getBytes());
} else if ("authorityKeyIdentifier" === e.name && t.cert) {
e.value = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
l = e.value.value;
if (e.keyIdentifier) {
var d = !0 === e.keyIdentifier ? t.cert.generateSubjectKeyIdentifier().getBytes() : e.keyIdentifier;
l.push(n.create(n.Class.CONTEXT_SPECIFIC, 0, !1, d));
}
if (e.authorityCertIssuer) {
var g = [n.create(n.Class.CONTEXT_SPECIFIC, 4, !0, [y(!0 === e.authorityCertIssuer ? t.cert.issuer : e.authorityCertIssuer)])];
l.push(n.create(n.Class.CONTEXT_SPECIFIC, 1, !0, g));
}
if (e.serialNumber) {
var m = a.util.hexToBytes(!0 === e.serialNumber ? t.cert.serialNumber : e.serialNumber);
l.push(n.create(n.Class.CONTEXT_SPECIFIC, 2, !1, m));
}
} else if ("cRLDistributionPoints" === e.name) {
e.value = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
l = e.value.value;
var v,
C = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []),
E = n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, []);
for (f = 0; f < e.altNames.length; ++f) {
u = (v = e.altNames[f]).value;
if (7 === v.type && v.ip) {
if (null === (u = a.util.bytesFromIP(v.ip))) throw (S = new Error('Extension "ip" value is not a valid IPv4 or IPv6 address.')).extension = e, S;
} else 8 === v.type && (u = v.oid ? n.oidToDer(n.oidToDer(v.oid)) : n.oidToDer(u));
E.value.push(n.create(n.Class.CONTEXT_SPECIFIC, v.type, !1, u));
}
C.value.push(n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [E])), l.push(C);
}
var S;
if (void 0 === e.value) throw (S = new Error("Extension value not specified.")).extension = e, S;
return e;
}
function v(e, t) {
switch (e) {
case s["RSASSA-PSS"]:
var r = [];
return void 0 !== t.hash.algorithmOid && r.push(n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.hash.algorithmOid).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")])])), void 0 !== t.mgf.algorithmOid && r.push(n.create(n.Class.CONTEXT_SPECIFIC, 1, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.mgf.algorithmOid).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.mgf.hash.algorithmOid).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")])])])), void 0 !== t.saltLength && r.push(n.create(n.Class.CONTEXT_SPECIFIC, 2, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(t.saltLength).getBytes())])), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, r);
default:
return n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "");
}
}
function C(e) {
var t = n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, []);
if (0 === e.attributes.length) return t;
for (var r = e.attributes, i = 0; i < r.length; ++i) {
var s = r[i],
o = s.value,
c = n.Type.UTF8;
"valueTagClass" in s && (c = s.valueTagClass), c === n.Type.UTF8 && (o = a.util.encodeUtf8(o));
var u = !1;
"valueConstructed" in s && (u = s.valueConstructed);
var l = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(s.type).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, [n.create(n.Class.UNIVERSAL, c, u, o)])]);
t.value.push(l);
}
return t;
}
i.certificateFromPem = function (e, t, r) {
var s = a.pem.decode(e)[0];
if ("CERTIFICATE" !== s.type && "X509 CERTIFICATE" !== s.type && "TRUSTED CERTIFICATE" !== s.type) {
var o = new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');
throw o.headerType = s.type, o;
}
if (s.procType && "ENCRYPTED" === s.procType.type) throw new Error("Could not convert certificate from PEM; PEM is encrypted.");
var c = n.fromDer(s.body, r);
return i.certificateFromAsn1(c, t);
}, i.certificateToPem = function (e, t) {
var r = {
type: "CERTIFICATE",
body: n.toDer(i.certificateToAsn1(e)).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.publicKeyFromPem = function (e) {
var t = a.pem.decode(e)[0];
if ("PUBLIC KEY" !== t.type && "RSA PUBLIC KEY" !== t.type) {
var r = new Error('Could not convert public key from PEM; PEM header type is not "PUBLIC KEY" or "RSA PUBLIC KEY".');
throw r.headerType = t.type, r;
}
if (t.procType && "ENCRYPTED" === t.procType.type) throw new Error("Could not convert public key from PEM; PEM is encrypted.");
var s = n.fromDer(t.body);
return i.publicKeyFromAsn1(s);
}, i.publicKeyToPem = function (e, t) {
var r = {
type: "PUBLIC KEY",
body: n.toDer(i.publicKeyToAsn1(e)).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.publicKeyToRSAPublicKeyPem = function (e, t) {
var r = {
type: "RSA PUBLIC KEY",
body: n.toDer(i.publicKeyToRSAPublicKey(e)).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.getPublicKeyFingerprint = function (e, t) {
var r,
s = (t = t || {}).md || a.md.sha1.create();
switch (t.type || "RSAPublicKey") {
case "RSAPublicKey":
r = n.toDer(i.publicKeyToRSAPublicKey(e)).getBytes();
break;
case "SubjectPublicKeyInfo":
r = n.toDer(i.publicKeyToAsn1(e)).getBytes();
break;
default:
throw new Error('Unknown fingerprint type "' + t.type + '".');
}
s.start(), s.update(r);
var o = s.digest();
if ("hex" === t.encoding) {
var c = o.toHex();
return t.delimiter ? c.match(/.{2}/g).join(t.delimiter) : c;
}
if ("binary" === t.encoding) return o.getBytes();
if (t.encoding) throw new Error('Unknown encoding "' + t.encoding + '".');
return o;
}, i.certificationRequestFromPem = function (e, t, r) {
var s = a.pem.decode(e)[0];
if ("CERTIFICATE REQUEST" !== s.type) {
var o = new Error('Could not convert certification request from PEM; PEM header type is not "CERTIFICATE REQUEST".');
throw o.headerType = s.type, o;
}
if (s.procType && "ENCRYPTED" === s.procType.type) throw new Error("Could not convert certification request from PEM; PEM is encrypted.");
var c = n.fromDer(s.body, r);
return i.certificationRequestFromAsn1(c, t);
}, i.certificationRequestToPem = function (e, t) {
var r = {
type: "CERTIFICATE REQUEST",
body: n.toDer(i.certificationRequestToAsn1(e)).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.createCertificate = function () {
var e = {
version: 2,
serialNumber: "00",
signatureOid: null,
signature: null,
siginfo: {}
};
return e.siginfo.algorithmOid = null, e.validity = {}, e.validity.notBefore = new Date(), e.validity.notAfter = new Date(), e.issuer = {}, e.issuer.getField = function (t) {
return h(e.issuer, t);
}, e.issuer.addField = function (t) {
g([t]), e.issuer.attributes.push(t);
}, e.issuer.attributes = [], e.issuer.hash = null, e.subject = {}, e.subject.getField = function (t) {
return h(e.subject, t);
}, e.subject.addField = function (t) {
g([t]), e.subject.attributes.push(t);
}, e.subject.attributes = [], e.subject.hash = null, e.extensions = [], e.publicKey = null, e.md = null, e.setSubject = function (t, r) {
g(t), e.subject.attributes = t, delete e.subject.uniqueId, r && (e.subject.uniqueId = r), e.subject.hash = null;
}, e.setIssuer = function (t, r) {
g(t), e.issuer.attributes = t, delete e.issuer.uniqueId, r && (e.issuer.uniqueId = r), e.issuer.hash = null;
}, e.setExtensions = function (t) {
for (var r = 0; r < t.length; ++r) m(t[r], {
cert: e
});
e.extensions = t;
}, e.getExtension = function (t) {
"string" == typeof t && (t = {
name: t
});
for (var r, a = null, n = 0; null === a && n < e.extensions.length; ++n) r = e.extensions[n], (t.id && r.id === t.id || t.name && r.name === t.name) && (a = r);
return a;
}, e.sign = function (t, r) {
e.md = r || a.md.sha1.create();
var o = s[e.md.algorithm + "WithRSAEncryption"];
if (!o) {
var c = new Error("Could not compute certificate digest. Unknown message digest algorithm OID.");
throw c.algorithm = e.md.algorithm, c;
}
e.signatureOid = e.siginfo.algorithmOid = o, e.tbsCertificate = i.getTBSCertificate(e);
var u = n.toDer(e.tbsCertificate);
e.md.update(u.getBytes()), e.signature = t.sign(e.md);
}, e.verify = function (t) {
var r = !1;
if (!e.issued(t)) {
var o = t.issuer,
c = e.subject;
throw (y = new Error("The parent certificate did not issue the given child certificate; the child certificate's issuer does not match the parent's subject.")).expectedIssuer = o.attributes, y.actualIssuer = c.attributes, y;
}
var u = t.md;
if (null === u) {
if (t.signatureOid in s) switch (s[t.signatureOid]) {
case "sha1WithRSAEncryption":
u = a.md.sha1.create();
break;
case "md5WithRSAEncryption":
u = a.md.md5.create();
break;
case "sha256WithRSAEncryption":
u = a.md.sha256.create();
break;
case "sha384WithRSAEncryption":
u = a.md.sha384.create();
break;
case "sha512WithRSAEncryption":
u = a.md.sha512.create();
break;
case "RSASSA-PSS":
u = a.md.sha256.create();
}
if (null === u) throw (y = new Error("Could not compute certificate digest. Unknown signature OID.")).signatureOid = t.signatureOid, y;
var l = t.tbsCertificate || i.getTBSCertificate(t),
p = n.toDer(l);
u.update(p.getBytes());
}
if (null !== u) {
var f;
switch (t.signatureOid) {
case s.sha1WithRSAEncryption:
f = void 0;
break;
case s["RSASSA-PSS"]:
var h, d, y;
if (void 0 === (h = s[t.signatureParameters.mgf.hash.algorithmOid]) || void 0 === a.md[h]) throw (y = new Error("Unsupported MGF hash function.")).oid = t.signatureParameters.mgf.hash.algorithmOid, y.name = h, y;
if (void 0 === (d = s[t.signatureParameters.mgf.algorithmOid]) || void 0 === a.mgf[d]) throw (y = new Error("Unsupported MGF function.")).oid = t.signatureParameters.mgf.algorithmOid, y.name = d, y;
if (d = a.mgf[d].create(a.md[h].create()), void 0 === (h = s[t.signatureParameters.hash.algorithmOid]) || void 0 === a.md[h]) throw {
message: "Unsupported RSASSA-PSS hash function.",
oid: t.signatureParameters.hash.algorithmOid,
name: h
};
f = a.pss.create(a.md[h].create(), d, t.signatureParameters.saltLength);
}
r = e.publicKey.verify(u.digest().getBytes(), t.signature, f);
}
return r;
}, e.isIssuer = function (t) {
var r = !1,
a = e.issuer,
n = t.subject;
if (a.hash && n.hash) r = a.hash === n.hash;else if (a.attributes.length === n.attributes.length) {
var i, s;
r = !0;
for (var o = 0; r && o < a.attributes.length; ++o) i = a.attributes[o], s = n.attributes[o], i.type === s.type && i.value === s.value || (r = !1);
}
return r;
}, e.issued = function (t) {
return t.isIssuer(e);
}, e.generateSubjectKeyIdentifier = function () {
return i.getPublicKeyFingerprint(e.publicKey, {
type: "RSAPublicKey"
});
}, e.verifySubjectKeyIdentifier = function () {
for (var t = s.subjectKeyIdentifier, r = 0; r < e.extensions.length; ++r) {
var n = e.extensions[r];
if (n.id === t) {
var i = e.generateSubjectKeyIdentifier().getBytes();
return a.util.hexToBytes(n.subjectKeyIdentifier) === i;
}
}
return !1;
}, e;
}, i.certificateFromAsn1 = function (e, t) {
var r = {},
o = [];
if (!n.validate(e, u, r, o)) throw (f = new Error("Cannot read X.509 certificate. ASN.1 object is not an X509v3 Certificate.")).errors = o, f;
if (n.derToOid(r.publicKeyOid) !== i.oids.rsaEncryption) throw new Error("Cannot read public key. OID is not RSA.");
var c = i.createCertificate();
c.version = r.certVersion ? r.certVersion.charCodeAt(0) : 0;
var l = a.util.createBuffer(r.certSerialNumber);
c.serialNumber = l.toHex(), c.signatureOid = a.asn1.derToOid(r.certSignatureOid), c.signatureParameters = d(c.signatureOid, r.certSignatureParams, !0), c.siginfo.algorithmOid = a.asn1.derToOid(r.certinfoSignatureOid), c.siginfo.parameters = d(c.siginfo.algorithmOid, r.certinfoSignatureParams, !1), c.signature = r.certSignature;
var p = [];
if (void 0 !== r.certValidity1UTCTime && p.push(n.utcTimeToDate(r.certValidity1UTCTime)), void 0 !== r.certValidity2GeneralizedTime && p.push(n.generalizedTimeToDate(r.certValidity2GeneralizedTime)), void 0 !== r.certValidity3UTCTime && p.push(n.utcTimeToDate(r.certValidity3UTCTime)), void 0 !== r.certValidity4GeneralizedTime && p.push(n.generalizedTimeToDate(r.certValidity4GeneralizedTime)), p.length > 2) throw new Error("Cannot read notBefore/notAfter validity times; more than two times were provided in the certificate.");
if (p.length < 2) throw new Error("Cannot read notBefore/notAfter validity times; they were not provided as either UTCTime or GeneralizedTime.");
if (c.validity.notBefore = p[0], c.validity.notAfter = p[1], c.tbsCertificate = r.tbsCertificate, t) {
var f;
if (c.md = null, c.signatureOid in s) switch (s[c.signatureOid]) {
case "sha1WithRSAEncryption":
c.md = a.md.sha1.create();
break;
case "md5WithRSAEncryption":
c.md = a.md.md5.create();
break;
case "sha256WithRSAEncryption":
c.md = a.md.sha256.create();
break;
case "sha384WithRSAEncryption":
c.md = a.md.sha384.create();
break;
case "sha512WithRSAEncryption":
c.md = a.md.sha512.create();
break;
case "RSASSA-PSS":
c.md = a.md.sha256.create();
}
if (null === c.md) throw (f = new Error("Could not compute certificate digest. Unknown signature OID.")).signatureOid = c.signatureOid, f;
var y = n.toDer(c.tbsCertificate);
c.md.update(y.getBytes());
}
var m = a.md.sha1.create();
c.issuer.getField = function (e) {
return h(c.issuer, e);
}, c.issuer.addField = function (e) {
g([e]), c.issuer.attributes.push(e);
}, c.issuer.attributes = i.RDNAttributesAsArray(r.certIssuer, m), r.certIssuerUniqueId && (c.issuer.uniqueId = r.certIssuerUniqueId), c.issuer.hash = m.digest().toHex();
var v = a.md.sha1.create();
return c.subject.getField = function (e) {
return h(c.subject, e);
}, c.subject.addField = function (e) {
g([e]), c.subject.attributes.push(e);
}, c.subject.attributes = i.RDNAttributesAsArray(r.certSubject, v), r.certSubjectUniqueId && (c.subject.uniqueId = r.certSubjectUniqueId), c.subject.hash = v.digest().toHex(), r.certExtensions ? c.extensions = i.certificateExtensionsFromAsn1(r.certExtensions) : c.extensions = [], c.publicKey = i.publicKeyFromAsn1(r.subjectPublicKeyInfo), c;
}, i.certificateExtensionsFromAsn1 = function (e) {
for (var t = [], r = 0; r < e.value.length; ++r) for (var a = e.value[r], n = 0; n < a.value.length; ++n) t.push(i.certificateExtensionFromAsn1(a.value[n]));
return t;
}, i.certificateExtensionFromAsn1 = function (e) {
var t = {};
if (t.id = n.derToOid(e.value[0].value), t.critical = !1, e.value[1].type === n.Type.BOOLEAN ? (t.critical = 0 !== e.value[1].value.charCodeAt(0), t.value = e.value[2].value) : t.value = e.value[1].value, t.id in s) if (t.name = s[t.id], "keyUsage" === t.name) {
var r = 0,
i = 0;
(c = n.fromDer(t.value)).value.length > 1 && (r = c.value.charCodeAt(1), i = c.value.length > 2 ? c.value.charCodeAt(2) : 0), t.digitalSignature = 128 == (128 & r), t.nonRepudiation = 64 == (64 & r), t.keyEncipherment = 32 == (32 & r), t.dataEncipherment = 16 == (16 & r), t.keyAgreement = 8 == (8 & r), t.keyCertSign = 4 == (4 & r), t.cRLSign = 2 == (2 & r), t.encipherOnly = 1 == (1 & r), t.decipherOnly = 128 == (128 & i);
} else if ("basicConstraints" === t.name) {
(c = n.fromDer(t.value)).value.length > 0 && c.value[0].type === n.Type.BOOLEAN ? t.cA = 0 !== c.value[0].value.charCodeAt(0) : t.cA = !1;
var o = null;
c.value.length > 0 && c.value[0].type === n.Type.INTEGER ? o = c.value[0].value : c.value.length > 1 && (o = c.value[1].value), null !== o && (t.pathLenConstraint = n.derToInteger(o));
} else if ("extKeyUsage" === t.name) for (var c = n.fromDer(t.value), u = 0; u < c.value.length; ++u) {
var l = n.derToOid(c.value[u].value);
l in s ? t[s[l]] = !0 : t[l] = !0;
} else if ("nsCertType" === t.name) {
r = 0;
(c = n.fromDer(t.value)).value.length > 1 && (r = c.value.charCodeAt(1)), t.client = 128 == (128 & r), t.server = 64 == (64 & r), t.email = 32 == (32 & r), t.objsign = 16 == (16 & r), t.reserved = 8 == (8 & r), t.sslCA = 4 == (4 & r), t.emailCA = 2 == (2 & r), t.objCA = 1 == (1 & r);
} else if ("subjectAltName" === t.name || "issuerAltName" === t.name) {
var p;
t.altNames = [];
c = n.fromDer(t.value);
for (var f = 0; f < c.value.length; ++f) {
var h = {
type: (p = c.value[f]).type,
value: p.value
};
switch (t.altNames.push(h), p.type) {
case 1:
case 2:
case 6:
break;
case 7:
h.ip = a.util.bytesToIP(p.value);
break;
case 8:
h.oid = n.derToOid(p.value);
}
}
} else if ("subjectKeyIdentifier" === t.name) {
c = n.fromDer(t.value);
t.subjectKeyIdentifier = a.util.bytesToHex(c.value);
}
return t;
}, i.certificationRequestFromAsn1 = function (e, t) {
var r = {},
o = [];
if (!n.validate(e, f, r, o)) throw (u = new Error("Cannot read PKCS#10 certificate request. ASN.1 object is not a PKCS#10 CertificationRequest.")).errors = o, u;
if (n.derToOid(r.publicKeyOid) !== i.oids.rsaEncryption) throw new Error("Cannot read public key. OID is not RSA.");
var c = i.createCertificationRequest();
if (c.version = r.csrVersion ? r.csrVersion.charCodeAt(0) : 0, c.signatureOid = a.asn1.derToOid(r.csrSignatureOid), c.signatureParameters = d(c.signatureOid, r.csrSignatureParams, !0), c.siginfo.algorithmOid = a.asn1.derToOid(r.csrSignatureOid), c.siginfo.parameters = d(c.siginfo.algorithmOid, r.csrSignatureParams, !1), c.signature = r.csrSignature, c.certificationRequestInfo = r.certificationRequestInfo, t) {
var u;
if (c.md = null, c.signatureOid in s) switch (s[c.signatureOid]) {
case "sha1WithRSAEncryption":
c.md = a.md.sha1.create();
break;
case "md5WithRSAEncryption":
c.md = a.md.md5.create();
break;
case "sha256WithRSAEncryption":
c.md = a.md.sha256.create();
break;
case "sha384WithRSAEncryption":
c.md = a.md.sha384.create();
break;
case "sha512WithRSAEncryption":
c.md = a.md.sha512.create();
break;
case "RSASSA-PSS":
c.md = a.md.sha256.create();
}
if (null === c.md) throw (u = new Error("Could not compute certification request digest. Unknown signature OID.")).signatureOid = c.signatureOid, u;
var l = n.toDer(c.certificationRequestInfo);
c.md.update(l.getBytes());
}
var p = a.md.sha1.create();
return c.subject.getField = function (e) {
return h(c.subject, e);
}, c.subject.addField = function (e) {
g([e]), c.subject.attributes.push(e);
}, c.subject.attributes = i.RDNAttributesAsArray(r.certificationRequestInfoSubject, p), c.subject.hash = p.digest().toHex(), c.publicKey = i.publicKeyFromAsn1(r.subjectPublicKeyInfo), c.getAttribute = function (e) {
return h(c, e);
}, c.addAttribute = function (e) {
g([e]), c.attributes.push(e);
}, c.attributes = i.CRIAttributesAsArray(r.certificationRequestInfoAttributes || []), c;
}, i.createCertificationRequest = function () {
var e = {
version: 0,
signatureOid: null,
signature: null,
siginfo: {}
};
return e.siginfo.algorithmOid = null, e.subject = {}, e.subject.getField = function (t) {
return h(e.subject, t);
}, e.subject.addField = function (t) {
g([t]), e.subject.attributes.push(t);
}, e.subject.attributes = [], e.subject.hash = null, e.publicKey = null, e.attributes = [], e.getAttribute = function (t) {
return h(e, t);
}, e.addAttribute = function (t) {
g([t]), e.attributes.push(t);
}, e.md = null, e.setSubject = function (t) {
g(t), e.subject.attributes = t, e.subject.hash = null;
}, e.setAttributes = function (t) {
g(t), e.attributes = t;
}, e.sign = function (t, r) {
e.md = r || a.md.sha1.create();
var o = s[e.md.algorithm + "WithRSAEncryption"];
if (!o) {
var c = new Error("Could not compute certification request digest. Unknown message digest algorithm OID.");
throw c.algorithm = e.md.algorithm, c;
}
e.signatureOid = e.siginfo.algorithmOid = o, e.certificationRequestInfo = i.getCertificationRequestInfo(e);
var u = n.toDer(e.certificationRequestInfo);
e.md.update(u.getBytes()), e.signature = t.sign(e.md);
}, e.verify = function () {
var t = !1,
r = e.md;
if (null === r) {
if (e.signatureOid in s) switch (s[e.signatureOid]) {
case "sha1WithRSAEncryption":
r = a.md.sha1.create();
break;
case "md5WithRSAEncryption":
r = a.md.md5.create();
break;
case "sha256WithRSAEncryption":
r = a.md.sha256.create();
break;
case "sha384WithRSAEncryption":
r = a.md.sha384.create();
break;
case "sha512WithRSAEncryption":
r = a.md.sha512.create();
break;
case "RSASSA-PSS":
r = a.md.sha256.create();
}
if (null === r) throw (f = new Error("Could not compute certification request digest. Unknown signature OID.")).signatureOid = e.signatureOid, f;
var o = e.certificationRequestInfo || i.getCertificationRequestInfo(e),
c = n.toDer(o);
r.update(c.getBytes());
}
if (null !== r) {
var u;
switch (e.signatureOid) {
case s.sha1WithRSAEncryption:
break;
case s["RSASSA-PSS"]:
var l, p, f;
if (void 0 === (l = s[e.signatureParameters.mgf.hash.algorithmOid]) || void 0 === a.md[l]) throw (f = new Error("Unsupported MGF hash function.")).oid = e.signatureParameters.mgf.hash.algorithmOid, f.name = l, f;
if (void 0 === (p = s[e.signatureParameters.mgf.algorithmOid]) || void 0 === a.mgf[p]) throw (f = new Error("Unsupported MGF function.")).oid = e.signatureParameters.mgf.algorithmOid, f.name = p, f;
if (p = a.mgf[p].create(a.md[l].create()), void 0 === (l = s[e.signatureParameters.hash.algorithmOid]) || void 0 === a.md[l]) throw (f = new Error("Unsupported RSASSA-PSS hash function.")).oid = e.signatureParameters.hash.algorithmOid, f.name = l, f;
u = a.pss.create(a.md[l].create(), p, e.signatureParameters.saltLength);
}
t = e.publicKey.verify(r.digest().getBytes(), e.signature, u);
}
return t;
}, e;
};
var E = new Date("1950-01-01T00:00:00Z"),
S = new Date("2050-01-01T00:00:00Z");
function T(e) {
return e >= E && e < S ? n.create(n.Class.UNIVERSAL, n.Type.UTCTIME, !1, n.dateToUtcTime(e)) : n.create(n.Class.UNIVERSAL, n.Type.GENERALIZEDTIME, !1, n.dateToGeneralizedTime(e));
}
i.getTBSCertificate = function (e) {
var t = T(e.validity.notBefore),
r = T(e.validity.notAfter),
s = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.version).getBytes())]), n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, a.util.hexToBytes(e.serialNumber)), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.siginfo.algorithmOid).getBytes()), v(e.siginfo.algorithmOid, e.siginfo.parameters)]), y(e.issuer), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [t, r]), y(e.subject), i.publicKeyToAsn1(e.publicKey)]);
return e.issuer.uniqueId && s.value.push(n.create(n.Class.CONTEXT_SPECIFIC, 1, !0, [n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, String.fromCharCode(0) + e.issuer.uniqueId)])), e.subject.uniqueId && s.value.push(n.create(n.Class.CONTEXT_SPECIFIC, 2, !0, [n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, String.fromCharCode(0) + e.subject.uniqueId)])), e.extensions.length > 0 && s.value.push(i.certificateExtensionsToAsn1(e.extensions)), s;
}, i.getCertificationRequestInfo = function (e) {
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.version).getBytes()), y(e.subject), i.publicKeyToAsn1(e.publicKey), C(e)]);
}, i.distinguishedNameToAsn1 = function (e) {
return y(e);
}, i.certificateToAsn1 = function (e) {
var t = e.tbsCertificate || i.getTBSCertificate(e);
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [t, n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.signatureOid).getBytes()), v(e.signatureOid, e.signatureParameters)]), n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, String.fromCharCode(0) + e.signature)]);
}, i.certificateExtensionsToAsn1 = function (e) {
var t = n.create(n.Class.CONTEXT_SPECIFIC, 3, !0, []),
r = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
t.value.push(r);
for (var a = 0; a < e.length; ++a) r.value.push(i.certificateExtensionToAsn1(e[a]));
return t;
}, i.certificateExtensionToAsn1 = function (e) {
var t = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, []);
t.value.push(n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.id).getBytes())), e.critical && t.value.push(n.create(n.Class.UNIVERSAL, n.Type.BOOLEAN, !1, String.fromCharCode(255)));
var r = e.value;
return "string" != typeof e.value && (r = n.toDer(r).getBytes()), t.value.push(n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, r)), t;
}, i.certificationRequestToAsn1 = function (e) {
var t = e.certificationRequestInfo || i.getCertificationRequestInfo(e);
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [t, n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.signatureOid).getBytes()), v(e.signatureOid, e.signatureParameters)]), n.create(n.Class.UNIVERSAL, n.Type.BITSTRING, !1, String.fromCharCode(0) + e.signature)]);
}, i.createCaStore = function (e) {
var t = {
certs: {}
};
function r(e) {
return s(e), t.certs[e.hash] || null;
}
function s(e) {
if (!e.hash) {
var t = a.md.sha1.create();
e.attributes = i.RDNAttributesAsArray(y(e), t), e.hash = t.digest().toHex();
}
}
if (t.getIssuer = function (e) {
return r(e.issuer);
}, t.addCertificate = function (e) {
if ("string" == typeof e && (e = a.pki.certificateFromPem(e)), s(e.subject), !t.hasCertificate(e)) if (e.subject.hash in t.certs) {
var r = t.certs[e.subject.hash];
a.util.isArray(r) || (r = [r]), r.push(e), t.certs[e.subject.hash] = r;
} else t.certs[e.subject.hash] = e;
}, t.hasCertificate = function (e) {
"string" == typeof e && (e = a.pki.certificateFromPem(e));
var t = r(e.subject);
if (!t) return !1;
a.util.isArray(t) || (t = [t]);
for (var s = n.toDer(i.certificateToAsn1(e)).getBytes(), o = 0; o < t.length; ++o) {
if (s === n.toDer(i.certificateToAsn1(t[o])).getBytes()) return !0;
}
return !1;
}, t.listAllCertificates = function () {
var e = [];
for (var r in t.certs) if (t.certs.hasOwnProperty(r)) {
var n = t.certs[r];
if (a.util.isArray(n)) for (var i = 0; i < n.length; ++i) e.push(n[i]);else e.push(n);
}
return e;
}, t.removeCertificate = function (e) {
var o;
if ("string" == typeof e && (e = a.pki.certificateFromPem(e)), s(e.subject), !t.hasCertificate(e)) return null;
var c = r(e.subject);
if (!a.util.isArray(c)) return o = t.certs[e.subject.hash], delete t.certs[e.subject.hash], o;
for (var u = n.toDer(i.certificateToAsn1(e)).getBytes(), l = 0; l < c.length; ++l) {
u === n.toDer(i.certificateToAsn1(c[l])).getBytes() && (o = c[l], c.splice(l, 1));
}
return 0 === c.length && delete t.certs[e.subject.hash], o;
}, e) for (var o = 0; o < e.length; ++o) {
var c = e[o];
t.addCertificate(c);
}
return t;
}, i.certificateError = {
bad_certificate: "forge.pki.BadCertificate",
unsupported_certificate: "forge.pki.UnsupportedCertificate",
certificate_revoked: "forge.pki.CertificateRevoked",
certificate_expired: "forge.pki.CertificateExpired",
certificate_unknown: "forge.pki.CertificateUnknown",
unknown_ca: "forge.pki.UnknownCertificateAuthority"
}, i.verifyCertificateChain = function (e, t, r) {
"function" == typeof r && (r = {
verify: r
}), r = r || {};
var n = (t = t.slice(0)).slice(0),
s = r.validityCheckDate;
void 0 === s && (s = new Date());
var o = !0,
c = null,
u = 0;
do {
var l = t.shift(),
p = null,
f = !1;
if (s && (s < l.validity.notBefore || s > l.validity.notAfter) && (c = {
message: "Certificate is not valid yet or has expired.",
error: i.certificateError.certificate_expired,
notBefore: l.validity.notBefore,
notAfter: l.validity.notAfter,
now: s
}), null === c) {
if (null === (p = t[0] || e.getIssuer(l)) && l.isIssuer(l) && (f = !0, p = l), p) {
var h = p;
a.util.isArray(h) || (h = [h]);
for (var d = !1; !d && h.length > 0;) {
p = h.shift();
try {
d = p.verify(l);
} catch (e) {}
}
d || (c = {
message: "Certificate signature is invalid.",
error: i.certificateError.bad_certificate
});
}
null !== c || p && !f || e.hasCertificate(l) || (c = {
message: "Certificate is not trusted.",
error: i.certificateError.unknown_ca
});
}
if (null === c && p && !l.isIssuer(p) && (c = {
message: "Certificate issuer is invalid.",
error: i.certificateError.bad_certificate
}), null === c) for (var y = {
keyUsage: !0,
basicConstraints: !0
}, g = 0; null === c && g < l.extensions.length; ++g) {
var m = l.extensions[g];
m.critical && !(m.name in y) && (c = {
message: "Certificate has an unsupported critical extension.",
error: i.certificateError.unsupported_certificate
});
}
if (null === c && (!o || 0 === t.length && (!p || f))) {
var v = l.getExtension("basicConstraints"),
C = l.getExtension("keyUsage");
if (null !== C && (C.keyCertSign && null !== v || (c = {
message: "Certificate keyUsage or basicConstraints conflict or indicate that the certificate is not a CA. If the certificate is the only one in the chain or isn't the first then the certificate must be a valid CA.",
error: i.certificateError.bad_certificate
})), null !== c || null === v || v.cA || (c = {
message: "Certificate basicConstraints indicates the certificate is not a CA.",
error: i.certificateError.bad_certificate
}), null === c && null !== C && "pathLenConstraint" in v) u - 1 > v.pathLenConstraint && (c = {
message: "Certificate basicConstraints pathLenConstraint violated.",
error: i.certificateError.bad_certificate
});
}
var E = null === c || c.error,
S = r.verify ? r.verify(E, u, n) : E;
if (!0 !== S) throw !0 === E && (c = {
message: "The application rejected the certificate.",
error: i.certificateError.bad_certificate
}), (S || 0 === S) && ("object" != typeof S || a.util.isArray(S) ? "string" == typeof S && (c.error = S) : (S.message && (c.message = S.message), S.error && (c.error = S.error))), c;
c = null, o = !1, ++u;
} while (t.length > 0);
return !0;
};
}, function (e, t, r) {
var a = r(0);
r(2), r(1), (e.exports = a.pss = a.pss || {}).create = function (e) {
3 === arguments.length && (e = {
md: arguments[0],
mgf: arguments[1],
saltLength: arguments[2]
});
var t,
r = e.md,
n = e.mgf,
i = r.digestLength,
s = e.salt || null;
if ("string" == typeof s && (s = a.util.createBuffer(s)), "saltLength" in e) t = e.saltLength;else {
if (null === s) throw new Error("Salt length not specified or specific salt not given.");
t = s.length();
}
if (null !== s && s.length() !== t) throw new Error("Given salt length does not match length of given salt.");
var o = e.prng || a.random,
c = {
encode: function (e, c) {
var u,
l,
p = c - 1,
f = Math.ceil(p / 8),
h = e.digest().getBytes();
if (f < i + t + 2) throw new Error("Message is too long to encrypt.");
l = null === s ? o.getBytesSync(t) : s.bytes();
var d = new a.util.ByteBuffer();
d.fillWithByte(0, 8), d.putBytes(h), d.putBytes(l), r.start(), r.update(d.getBytes());
var y = r.digest().getBytes(),
g = new a.util.ByteBuffer();
g.fillWithByte(0, f - t - i - 2), g.putByte(1), g.putBytes(l);
var m = g.getBytes(),
v = f - i - 1,
C = n.generate(y, v),
E = "";
for (u = 0; u < v; u++) E += String.fromCharCode(m.charCodeAt(u) ^ C.charCodeAt(u));
var S = 65280 >> 8 * f - p & 255;
return (E = String.fromCharCode(E.charCodeAt(0) & ~S) + E.substr(1)) + y + String.fromCharCode(188);
},
verify: function (e, s, o) {
var c,
u = o - 1,
l = Math.ceil(u / 8);
if (s = s.substr(-l), l < i + t + 2) throw new Error("Inconsistent parameters to PSS signature verification.");
if (188 !== s.charCodeAt(l - 1)) throw new Error("Encoded message does not end in 0xBC.");
var p = l - i - 1,
f = s.substr(0, p),
h = s.substr(p, i),
d = 65280 >> 8 * l - u & 255;
if (0 != (f.charCodeAt(0) & d)) throw new Error("Bits beyond keysize not zero as expected.");
var y = n.generate(h, p),
g = "";
for (c = 0; c < p; c++) g += String.fromCharCode(f.charCodeAt(c) ^ y.charCodeAt(c));
g = String.fromCharCode(g.charCodeAt(0) & ~d) + g.substr(1);
var m = l - i - t - 2;
for (c = 0; c < m; c++) if (0 !== g.charCodeAt(c)) throw new Error("Leftmost octets not zero as expected");
if (1 !== g.charCodeAt(m)) throw new Error("Inconsistent PSS signature, 0x01 marker not found");
var v = g.substr(-t),
C = new a.util.ByteBuffer();
return C.fillWithByte(0, 8), C.putBytes(e), C.putBytes(v), r.start(), r.update(C.getBytes()), h === r.digest().getBytes();
}
};
return c;
};
}, function (e, t, r) {
var a = r(0);
r(1), a.cipher = a.cipher || {};
var n = e.exports = a.cipher.modes = a.cipher.modes || {};
function i(e, t) {
if ("string" == typeof e && (e = a.util.createBuffer(e)), a.util.isArray(e) && e.length > 4) {
var r = e;
e = a.util.createBuffer();
for (var n = 0; n < r.length; ++n) e.putByte(r[n]);
}
if (e.length() < t) throw new Error("Invalid IV length; got " + e.length() + " bytes and expected " + t + " bytes.");
if (!a.util.isArray(e)) {
var i = [],
s = t / 4;
for (n = 0; n < s; ++n) i.push(e.getInt32());
e = i;
}
return e;
}
function s(e) {
e[e.length - 1] = e[e.length - 1] + 1 & 4294967295;
}
function o(e) {
return [e / 4294967296 | 0, 4294967295 & e];
}
n.ecb = function (e) {
e = e || {}, this.name = "ECB", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = new Array(this._ints), this._outBlock = new Array(this._ints);
}, n.ecb.prototype.start = function (e) {}, n.ecb.prototype.encrypt = function (e, t, r) {
if (e.length() < this.blockSize && !(r && e.length() > 0)) return !0;
for (var a = 0; a < this._ints; ++a) this._inBlock[a] = e.getInt32();
this.cipher.encrypt(this._inBlock, this._outBlock);
for (a = 0; a < this._ints; ++a) t.putInt32(this._outBlock[a]);
}, n.ecb.prototype.decrypt = function (e, t, r) {
if (e.length() < this.blockSize && !(r && e.length() > 0)) return !0;
for (var a = 0; a < this._ints; ++a) this._inBlock[a] = e.getInt32();
this.cipher.decrypt(this._inBlock, this._outBlock);
for (a = 0; a < this._ints; ++a) t.putInt32(this._outBlock[a]);
}, n.ecb.prototype.pad = function (e, t) {
var r = e.length() === this.blockSize ? this.blockSize : this.blockSize - e.length();
return e.fillWithByte(r, r), !0;
}, n.ecb.prototype.unpad = function (e, t) {
if (t.overflow > 0) return !1;
var r = e.length(),
a = e.at(r - 1);
return !(a > this.blockSize << 2) && (e.truncate(a), !0);
}, n.cbc = function (e) {
e = e || {}, this.name = "CBC", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = new Array(this._ints), this._outBlock = new Array(this._ints);
}, n.cbc.prototype.start = function (e) {
if (null === e.iv) {
if (!this._prev) throw new Error("Invalid IV parameter.");
this._iv = this._prev.slice(0);
} else {
if (!("iv" in e)) throw new Error("Invalid IV parameter.");
this._iv = i(e.iv, this.blockSize), this._prev = this._iv.slice(0);
}
}, n.cbc.prototype.encrypt = function (e, t, r) {
if (e.length() < this.blockSize && !(r && e.length() > 0)) return !0;
for (var a = 0; a < this._ints; ++a) this._inBlock[a] = this._prev[a] ^ e.getInt32();
this.cipher.encrypt(this._inBlock, this._outBlock);
for (a = 0; a < this._ints; ++a) t.putInt32(this._outBlock[a]);
this._prev = this._outBlock;
}, n.cbc.prototype.decrypt = function (e, t, r) {
if (e.length() < this.blockSize && !(r && e.length() > 0)) return !0;
for (var a = 0; a < this._ints; ++a) this._inBlock[a] = e.getInt32();
this.cipher.decrypt(this._inBlock, this._outBlock);
for (a = 0; a < this._ints; ++a) t.putInt32(this._prev[a] ^ this._outBlock[a]);
this._prev = this._inBlock.slice(0);
}, n.cbc.prototype.pad = function (e, t) {
var r = e.length() === this.blockSize ? this.blockSize : this.blockSize - e.length();
return e.fillWithByte(r, r), !0;
}, n.cbc.prototype.unpad = function (e, t) {
if (t.overflow > 0) return !1;
var r = e.length(),
a = e.at(r - 1);
return !(a > this.blockSize << 2) && (e.truncate(a), !0);
}, n.cfb = function (e) {
e = e || {}, this.name = "CFB", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = null, this._outBlock = new Array(this._ints), this._partialBlock = new Array(this._ints), this._partialOutput = a.util.createBuffer(), this._partialBytes = 0;
}, n.cfb.prototype.start = function (e) {
if (!("iv" in e)) throw new Error("Invalid IV parameter.");
this._iv = i(e.iv, this.blockSize), this._inBlock = this._iv.slice(0), this._partialBytes = 0;
}, n.cfb.prototype.encrypt = function (e, t, r) {
var a = e.length();
if (0 === a) return !0;
if (this.cipher.encrypt(this._inBlock, this._outBlock), 0 === this._partialBytes && a >= this.blockSize) for (var n = 0; n < this._ints; ++n) this._inBlock[n] = e.getInt32() ^ this._outBlock[n], t.putInt32(this._inBlock[n]);else {
var i = (this.blockSize - a) % this.blockSize;
i > 0 && (i = this.blockSize - i), this._partialOutput.clear();
for (n = 0; n < this._ints; ++n) this._partialBlock[n] = e.getInt32() ^ this._outBlock[n], this._partialOutput.putInt32(this._partialBlock[n]);
if (i > 0) e.read -= this.blockSize;else for (n = 0; n < this._ints; ++n) this._inBlock[n] = this._partialBlock[n];
if (this._partialBytes > 0 && this._partialOutput.getBytes(this._partialBytes), i > 0 && !r) return t.putBytes(this._partialOutput.getBytes(i - this._partialBytes)), this._partialBytes = i, !0;
t.putBytes(this._partialOutput.getBytes(a - this._partialBytes)), this._partialBytes = 0;
}
}, n.cfb.prototype.decrypt = function (e, t, r) {
var a = e.length();
if (0 === a) return !0;
if (this.cipher.encrypt(this._inBlock, this._outBlock), 0 === this._partialBytes && a >= this.blockSize) for (var n = 0; n < this._ints; ++n) this._inBlock[n] = e.getInt32(), t.putInt32(this._inBlock[n] ^ this._outBlock[n]);else {
var i = (this.blockSize - a) % this.blockSize;
i > 0 && (i = this.blockSize - i), this._partialOutput.clear();
for (n = 0; n < this._ints; ++n) this._partialBlock[n] = e.getInt32(), this._partialOutput.putInt32(this._partialBlock[n] ^ this._outBlock[n]);
if (i > 0) e.read -= this.blockSize;else for (n = 0; n < this._ints; ++n) this._inBlock[n] = this._partialBlock[n];
if (this._partialBytes > 0 && this._partialOutput.getBytes(this._partialBytes), i > 0 && !r) return t.putBytes(this._partialOutput.getBytes(i - this._partialBytes)), this._partialBytes = i, !0;
t.putBytes(this._partialOutput.getBytes(a - this._partialBytes)), this._partialBytes = 0;
}
}, n.ofb = function (e) {
e = e || {}, this.name = "OFB", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = null, this._outBlock = new Array(this._ints), this._partialOutput = a.util.createBuffer(), this._partialBytes = 0;
}, n.ofb.prototype.start = function (e) {
if (!("iv" in e)) throw new Error("Invalid IV parameter.");
this._iv = i(e.iv, this.blockSize), this._inBlock = this._iv.slice(0), this._partialBytes = 0;
}, n.ofb.prototype.encrypt = function (e, t, r) {
var a = e.length();
if (0 === e.length()) return !0;
if (this.cipher.encrypt(this._inBlock, this._outBlock), 0 === this._partialBytes && a >= this.blockSize) for (var n = 0; n < this._ints; ++n) t.putInt32(e.getInt32() ^ this._outBlock[n]), this._inBlock[n] = this._outBlock[n];else {
var i = (this.blockSize - a) % this.blockSize;
i > 0 && (i = this.blockSize - i), this._partialOutput.clear();
for (n = 0; n < this._ints; ++n) this._partialOutput.putInt32(e.getInt32() ^ this._outBlock[n]);
if (i > 0) e.read -= this.blockSize;else for (n = 0; n < this._ints; ++n) this._inBlock[n] = this._outBlock[n];
if (this._partialBytes > 0 && this._partialOutput.getBytes(this._partialBytes), i > 0 && !r) return t.putBytes(this._partialOutput.getBytes(i - this._partialBytes)), this._partialBytes = i, !0;
t.putBytes(this._partialOutput.getBytes(a - this._partialBytes)), this._partialBytes = 0;
}
}, n.ofb.prototype.decrypt = n.ofb.prototype.encrypt, n.ctr = function (e) {
e = e || {}, this.name = "CTR", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = null, this._outBlock = new Array(this._ints), this._partialOutput = a.util.createBuffer(), this._partialBytes = 0;
}, n.ctr.prototype.start = function (e) {
if (!("iv" in e)) throw new Error("Invalid IV parameter.");
this._iv = i(e.iv, this.blockSize), this._inBlock = this._iv.slice(0), this._partialBytes = 0;
}, n.ctr.prototype.encrypt = function (e, t, r) {
var a = e.length();
if (0 === a) return !0;
if (this.cipher.encrypt(this._inBlock, this._outBlock), 0 === this._partialBytes && a >= this.blockSize) for (var n = 0; n < this._ints; ++n) t.putInt32(e.getInt32() ^ this._outBlock[n]);else {
var i = (this.blockSize - a) % this.blockSize;
i > 0 && (i = this.blockSize - i), this._partialOutput.clear();
for (n = 0; n < this._ints; ++n) this._partialOutput.putInt32(e.getInt32() ^ this._outBlock[n]);
if (i > 0 && (e.read -= this.blockSize), this._partialBytes > 0 && this._partialOutput.getBytes(this._partialBytes), i > 0 && !r) return t.putBytes(this._partialOutput.getBytes(i - this._partialBytes)), this._partialBytes = i, !0;
t.putBytes(this._partialOutput.getBytes(a - this._partialBytes)), this._partialBytes = 0;
}
s(this._inBlock);
}, n.ctr.prototype.decrypt = n.ctr.prototype.encrypt, n.gcm = function (e) {
e = e || {}, this.name = "GCM", this.cipher = e.cipher, this.blockSize = e.blockSize || 16, this._ints = this.blockSize / 4, this._inBlock = new Array(this._ints), this._outBlock = new Array(this._ints), this._partialOutput = a.util.createBuffer(), this._partialBytes = 0, this._R = 3774873600;
}, n.gcm.prototype.start = function (e) {
if (!("iv" in e)) throw new Error("Invalid IV parameter.");
var t,
r = a.util.createBuffer(e.iv);
if (this._cipherLength = 0, t = "additionalData" in e ? a.util.createBuffer(e.additionalData) : a.util.createBuffer(), this._tagLength = "tagLength" in e ? e.tagLength : 128, this._tag = null, e.decrypt && (this._tag = a.util.createBuffer(e.tag).getBytes(), this._tag.length !== this._tagLength / 8)) throw new Error("Authentication tag does not match tag length.");
this._hashBlock = new Array(this._ints), this.tag = null, this._hashSubkey = new Array(this._ints), this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey), this.componentBits = 4, this._m = this.generateHashTable(this._hashSubkey, this.componentBits);
var n = r.length();
if (12 === n) this._j0 = [r.getInt32(), r.getInt32(), r.getInt32(), 1];else {
for (this._j0 = [0, 0, 0, 0]; r.length() > 0;) this._j0 = this.ghash(this._hashSubkey, this._j0, [r.getInt32(), r.getInt32(), r.getInt32(), r.getInt32()]);
this._j0 = this.ghash(this._hashSubkey, this._j0, [0, 0].concat(o(8 * n)));
}
this._inBlock = this._j0.slice(0), s(this._inBlock), this._partialBytes = 0, t = a.util.createBuffer(t), this._aDataLength = o(8 * t.length());
var i = t.length() % this.blockSize;
for (i && t.fillWithByte(0, this.blockSize - i), this._s = [0, 0, 0, 0]; t.length() > 0;) this._s = this.ghash(this._hashSubkey, this._s, [t.getInt32(), t.getInt32(), t.getInt32(), t.getInt32()]);
}, n.gcm.prototype.encrypt = function (e, t, r) {
var a = e.length();
if (0 === a) return !0;
if (this.cipher.encrypt(this._inBlock, this._outBlock), 0 === this._partialBytes && a >= this.blockSize) {
for (var n = 0; n < this._ints; ++n) t.putInt32(this._outBlock[n] ^= e.getInt32());
this._cipherLength += this.blockSize;
} else {
var i = (this.blockSize - a) % this.blockSize;
i > 0 && (i = this.blockSize - i), this._partialOutput.clear();
for (n = 0; n < this._ints; ++n) this._partialOutput.putInt32(e.getInt32() ^ this._outBlock[n]);
if (i <= 0 || r) {
if (r) {
var o = a % this.blockSize;
this._cipherLength += o, this._partialOutput.truncate(this.blockSize - o);
} else this._cipherLength += this.blockSize;
for (n = 0; n < this._ints; ++n) this._outBlock[n] = this._partialOutput.getInt32();
this._partialOutput.read -= this.blockSize;
}
if (this._partialBytes > 0 && this._partialOutput.getBytes(this._partialBytes), i > 0 && !r) return e.read -= this.blockSize, t.putBytes(this._partialOutput.getBytes(i - this._partialBytes)), this._partialBytes = i, !0;
t.putBytes(this._partialOutput.getBytes(a - this._partialBytes)), this._partialBytes = 0;
}
this._s = this.ghash(this._hashSubkey, this._s, this._outBlock), s(this._inBlock);
}, n.gcm.prototype.decrypt = function (e, t, r) {
var a = e.length();
if (a < this.blockSize && !(r && a > 0)) return !0;
this.cipher.encrypt(this._inBlock, this._outBlock), s(this._inBlock), this._hashBlock[0] = e.getInt32(), this._hashBlock[1] = e.getInt32(), this._hashBlock[2] = e.getInt32(), this._hashBlock[3] = e.getInt32(), this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);
for (var n = 0; n < this._ints; ++n) t.putInt32(this._outBlock[n] ^ this._hashBlock[n]);
a < this.blockSize ? this._cipherLength += a % this.blockSize : this._cipherLength += this.blockSize;
}, n.gcm.prototype.afterFinish = function (e, t) {
var r = !0;
t.decrypt && t.overflow && e.truncate(this.blockSize - t.overflow), this.tag = a.util.createBuffer();
var n = this._aDataLength.concat(o(8 * this._cipherLength));
this._s = this.ghash(this._hashSubkey, this._s, n);
var i = [];
this.cipher.encrypt(this._j0, i);
for (var s = 0; s < this._ints; ++s) this.tag.putInt32(this._s[s] ^ i[s]);
return this.tag.truncate(this.tag.length() % (this._tagLength / 8)), t.decrypt && this.tag.bytes() !== this._tag && (r = !1), r;
}, n.gcm.prototype.multiply = function (e, t) {
for (var r = [0, 0, 0, 0], a = t.slice(0), n = 0; n < 128; ++n) {
e[n / 32 | 0] & 1 << 31 - n % 32 && (r[0] ^= a[0], r[1] ^= a[1], r[2] ^= a[2], r[3] ^= a[3]), this.pow(a, a);
}
return r;
}, n.gcm.prototype.pow = function (e, t) {
for (var r = 1 & e[3], a = 3; a > 0; --a) t[a] = e[a] >>> 1 | (1 & e[a - 1]) << 31;
t[0] = e[0] >>> 1, r && (t[0] ^= this._R);
}, n.gcm.prototype.tableMultiply = function (e) {
for (var t = [0, 0, 0, 0], r = 0; r < 32; ++r) {
var a = e[r / 8 | 0] >>> 4 * (7 - r % 8) & 15,
n = this._m[r][a];
t[0] ^= n[0], t[1] ^= n[1], t[2] ^= n[2], t[3] ^= n[3];
}
return t;
}, n.gcm.prototype.ghash = function (e, t, r) {
return t[0] ^= r[0], t[1] ^= r[1], t[2] ^= r[2], t[3] ^= r[3], this.tableMultiply(t);
}, n.gcm.prototype.generateHashTable = function (e, t) {
for (var r = 8 / t, a = 4 * r, n = 16 * r, i = new Array(n), s = 0; s < n; ++s) {
var o = [0, 0, 0, 0],
c = (a - 1 - s % a) * t;
o[s / a | 0] = 1 << t - 1 << c, i[s] = this.generateSubHashTable(this.multiply(o, e), t);
}
return i;
}, n.gcm.prototype.generateSubHashTable = function (e, t) {
var r = 1 << t,
a = r >>> 1,
n = new Array(r);
n[a] = e.slice(0);
for (var i = a >>> 1; i > 0;) this.pow(n[2 * i], n[i] = []), i >>= 1;
for (i = 2; i < a;) {
for (var s = 1; s < i; ++s) {
var o = n[i],
c = n[s];
n[i + s] = [o[0] ^ c[0], o[1] ^ c[1], o[2] ^ c[2], o[3] ^ c[3]];
}
i *= 2;
}
for (n[0] = [0, 0, 0, 0], i = a + 1; i < r; ++i) {
var u = n[i ^ a];
n[i] = [e[0] ^ u[0], e[1] ^ u[1], e[2] ^ u[2], e[3] ^ u[3]];
}
return n;
};
}, function (e, t, r) {
var a = r(0);
r(3), r(8), r(14), r(7), r(21), r(2), r(9), r(1);
var n = function (e, t, r, n) {
var i = a.util.createBuffer(),
s = e.length >> 1,
o = s + (1 & e.length),
c = e.substr(0, o),
u = e.substr(s, o),
l = a.util.createBuffer(),
p = a.hmac.create();
r = t + r;
var f = Math.ceil(n / 16),
h = Math.ceil(n / 20);
p.start("MD5", c);
var d = a.util.createBuffer();
l.putBytes(r);
for (var y = 0; y < f; ++y) p.start(null, null), p.update(l.getBytes()), l.putBuffer(p.digest()), p.start(null, null), p.update(l.bytes() + r), d.putBuffer(p.digest());
p.start("SHA1", u);
var g = a.util.createBuffer();
l.clear(), l.putBytes(r);
for (y = 0; y < h; ++y) p.start(null, null), p.update(l.getBytes()), l.putBuffer(p.digest()), p.start(null, null), p.update(l.bytes() + r), g.putBuffer(p.digest());
return i.putBytes(a.util.xorBytes(d.getBytes(), g.getBytes(), n)), i;
},
i = function (e, t, r) {
var n = !1;
try {
var i = e.deflate(t.fragment.getBytes());
t.fragment = a.util.createBuffer(i), t.length = i.length, n = !0;
} catch (e) {}
return n;
},
s = function (e, t, r) {
var n = !1;
try {
var i = e.inflate(t.fragment.getBytes());
t.fragment = a.util.createBuffer(i), t.length = i.length, n = !0;
} catch (e) {}
return n;
},
o = function (e, t) {
var r = 0;
switch (t) {
case 1:
r = e.getByte();
break;
case 2:
r = e.getInt16();
break;
case 3:
r = e.getInt24();
break;
case 4:
r = e.getInt32();
}
return a.util.createBuffer(e.getBytes(r));
},
c = function (e, t, r) {
e.putInt(r.length(), t << 3), e.putBuffer(r);
},
u = {
Versions: {
TLS_1_0: {
major: 3,
minor: 1
},
TLS_1_1: {
major: 3,
minor: 2
},
TLS_1_2: {
major: 3,
minor: 3
}
}
};
u.SupportedVersions = [u.Versions.TLS_1_1, u.Versions.TLS_1_0], u.Version = u.SupportedVersions[0], u.MaxFragment = 15360, u.ConnectionEnd = {
server: 0,
client: 1
}, u.PRFAlgorithm = {
tls_prf_sha256: 0
}, u.BulkCipherAlgorithm = {
none: null,
rc4: 0,
des3: 1,
aes: 2
}, u.CipherType = {
stream: 0,
block: 1,
aead: 2
}, u.MACAlgorithm = {
none: null,
hmac_md5: 0,
hmac_sha1: 1,
hmac_sha256: 2,
hmac_sha384: 3,
hmac_sha512: 4
}, u.CompressionMethod = {
none: 0,
deflate: 1
}, u.ContentType = {
change_cipher_spec: 20,
alert: 21,
handshake: 22,
application_data: 23,
heartbeat: 24
}, u.HandshakeType = {
hello_request: 0,
client_hello: 1,
server_hello: 2,
certificate: 11,
server_key_exchange: 12,
certificate_request: 13,
server_hello_done: 14,
certificate_verify: 15,
client_key_exchange: 16,
finished: 20
}, u.Alert = {}, u.Alert.Level = {
warning: 1,
fatal: 2
}, u.Alert.Description = {
close_notify: 0,
unexpected_message: 10,
bad_record_mac: 20,
decryption_failed: 21,
record_overflow: 22,
decompression_failure: 30,
handshake_failure: 40,
bad_certificate: 42,
unsupported_certificate: 43,
certificate_revoked: 44,
certificate_expired: 45,
certificate_unknown: 46,
illegal_parameter: 47,
unknown_ca: 48,
access_denied: 49,
decode_error: 50,
decrypt_error: 51,
export_restriction: 60,
protocol_version: 70,
insufficient_security: 71,
internal_error: 80,
user_canceled: 90,
no_renegotiation: 100
}, u.HeartbeatMessageType = {
heartbeat_request: 1,
heartbeat_response: 2
}, u.CipherSuites = {}, u.getCipherSuite = function (e) {
var t = null;
for (var r in u.CipherSuites) {
var a = u.CipherSuites[r];
if (a.id[0] === e.charCodeAt(0) && a.id[1] === e.charCodeAt(1)) {
t = a;
break;
}
}
return t;
}, u.handleUnexpected = function (e, t) {
!e.open && e.entity === u.ConnectionEnd.client || e.error(e, {
message: "Unexpected message. Received TLS record out of order.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.unexpected_message
}
});
}, u.handleHelloRequest = function (e, t, r) {
!e.handshaking && e.handshakes > 0 && (u.queue(e, u.createAlert(e, {
level: u.Alert.Level.warning,
description: u.Alert.Description.no_renegotiation
})), u.flush(e)), e.process();
}, u.parseHelloMessage = function (e, t, r) {
var n = null,
i = e.entity === u.ConnectionEnd.client;
if (r < 38) e.error(e, {
message: i ? "Invalid ServerHello message. Message too short." : "Invalid ClientHello message. Message too short.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
});else {
var s = t.fragment,
c = s.length();
if (n = {
version: {
major: s.getByte(),
minor: s.getByte()
},
random: a.util.createBuffer(s.getBytes(32)),
session_id: o(s, 1),
extensions: []
}, i ? (n.cipher_suite = s.getBytes(2), n.compression_method = s.getByte()) : (n.cipher_suites = o(s, 2), n.compression_methods = o(s, 1)), (c = r - (c - s.length())) > 0) {
for (var l = o(s, 2); l.length() > 0;) n.extensions.push({
type: [l.getByte(), l.getByte()],
data: o(l, 2)
});
if (!i) for (var p = 0; p < n.extensions.length; ++p) {
var f = n.extensions[p];
if (0 === f.type[0] && 0 === f.type[1]) for (var h = o(f.data, 2); h.length() > 0;) {
if (0 !== h.getByte()) break;
e.session.extensions.server_name.serverNameList.push(o(h, 2).getBytes());
}
}
}
if (e.session.version && (n.version.major !== e.session.version.major || n.version.minor !== e.session.version.minor)) return e.error(e, {
message: "TLS version change is disallowed during renegotiation.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.protocol_version
}
});
if (i) e.session.cipherSuite = u.getCipherSuite(n.cipher_suite);else for (var d = a.util.createBuffer(n.cipher_suites.bytes()); d.length() > 0 && (e.session.cipherSuite = u.getCipherSuite(d.getBytes(2)), null === e.session.cipherSuite););
if (null === e.session.cipherSuite) return e.error(e, {
message: "No cipher suites in common.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.handshake_failure
},
cipherSuite: a.util.bytesToHex(n.cipher_suite)
});
e.session.compressionMethod = i ? n.compression_method : u.CompressionMethod.none;
}
return n;
}, u.createSecurityParameters = function (e, t) {
var r = e.entity === u.ConnectionEnd.client,
a = t.random.bytes(),
n = r ? e.session.sp.client_random : a,
i = r ? a : u.createRandom().getBytes();
e.session.sp = {
entity: e.entity,
prf_algorithm: u.PRFAlgorithm.tls_prf_sha256,
bulk_cipher_algorithm: null,
cipher_type: null,
enc_key_length: null,
block_length: null,
fixed_iv_length: null,
record_iv_length: null,
mac_algorithm: null,
mac_length: null,
mac_key_length: null,
compression_algorithm: e.session.compressionMethod,
pre_master_secret: null,
master_secret: null,
client_random: n,
server_random: i
};
}, u.handleServerHello = function (e, t, r) {
var a = u.parseHelloMessage(e, t, r);
if (!e.fail) {
if (!(a.version.minor <= e.version.minor)) return e.error(e, {
message: "Incompatible TLS version.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.protocol_version
}
});
e.version.minor = a.version.minor, e.session.version = e.version;
var n = a.session_id.bytes();
n.length > 0 && n === e.session.id ? (e.expect = d, e.session.resuming = !0, e.session.sp.server_random = a.random.bytes()) : (e.expect = l, e.session.resuming = !1, u.createSecurityParameters(e, a)), e.session.id = n, e.process();
}
}, u.handleClientHello = function (e, t, r) {
var n = u.parseHelloMessage(e, t, r);
if (!e.fail) {
var i = n.session_id.bytes(),
s = null;
if (e.sessionCache && (null === (s = e.sessionCache.getSession(i)) ? i = "" : (s.version.major !== n.version.major || s.version.minor > n.version.minor) && (s = null, i = "")), 0 === i.length && (i = a.random.getBytes(32)), e.session.id = i, e.session.clientHelloVersion = n.version, e.session.sp = {}, s) e.version = e.session.version = s.version, e.session.sp = s.sp;else {
for (var o, c = 1; c < u.SupportedVersions.length && !((o = u.SupportedVersions[c]).minor <= n.version.minor); ++c);
e.version = {
major: o.major,
minor: o.minor
}, e.session.version = e.version;
}
null !== s ? (e.expect = S, e.session.resuming = !0, e.session.sp.client_random = n.random.bytes()) : (e.expect = !1 !== e.verifyClient ? v : C, e.session.resuming = !1, u.createSecurityParameters(e, n)), e.open = !0, u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createServerHello(e)
})), e.session.resuming ? (u.queue(e, u.createRecord(e, {
type: u.ContentType.change_cipher_spec,
data: u.createChangeCipherSpec()
})), e.state.pending = u.createConnectionState(e), e.state.current.write = e.state.pending.write, u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createFinished(e)
}))) : (u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createCertificate(e)
})), e.fail || (u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createServerKeyExchange(e)
})), !1 !== e.verifyClient && u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createCertificateRequest(e)
})), u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createServerHelloDone(e)
})))), u.flush(e), e.process();
}
}, u.handleCertificate = function (e, t, r) {
if (r < 3) return e.error(e, {
message: "Invalid Certificate message. Message too short.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
});
var n,
i,
s = t.fragment,
c = {
certificate_list: o(s, 3)
},
l = [];
try {
for (; c.certificate_list.length() > 0;) n = o(c.certificate_list, 3), i = a.asn1.fromDer(n), n = a.pki.certificateFromAsn1(i, !0), l.push(n);
} catch (t) {
return e.error(e, {
message: "Could not parse certificate list.",
cause: t,
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.bad_certificate
}
});
}
var f = e.entity === u.ConnectionEnd.client;
!f && !0 !== e.verifyClient || 0 !== l.length ? 0 === l.length ? e.expect = f ? p : C : (f ? e.session.serverCertificate = l[0] : e.session.clientCertificate = l[0], u.verifyCertificateChain(e, l) && (e.expect = f ? p : C)) : e.error(e, {
message: f ? "No server certificate provided." : "No client certificate provided.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
}), e.process();
}, u.handleServerKeyExchange = function (e, t, r) {
if (r > 0) return e.error(e, {
message: "Invalid key parameters. Only RSA is supported.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.unsupported_certificate
}
});
e.expect = f, e.process();
}, u.handleClientKeyExchange = function (e, t, r) {
if (r < 48) return e.error(e, {
message: "Invalid key parameters. Only RSA is supported.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.unsupported_certificate
}
});
var n = t.fragment,
i = {
enc_pre_master_secret: o(n, 2).getBytes()
},
s = null;
if (e.getPrivateKey) try {
s = e.getPrivateKey(e, e.session.serverCertificate), s = a.pki.privateKeyFromPem(s);
} catch (t) {
e.error(e, {
message: "Could not get private key.",
cause: t,
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
});
}
if (null === s) return e.error(e, {
message: "No private key set.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
});
try {
var c = e.session.sp;
c.pre_master_secret = s.decrypt(i.enc_pre_master_secret);
var l = e.session.clientHelloVersion;
if (l.major !== c.pre_master_secret.charCodeAt(0) || l.minor !== c.pre_master_secret.charCodeAt(1)) throw new Error("TLS version rollback attack detected.");
} catch (e) {
c.pre_master_secret = a.random.getBytes(48);
}
e.expect = S, null !== e.session.clientCertificate && (e.expect = E), e.process();
}, u.handleCertificateRequest = function (e, t, r) {
if (r < 3) return e.error(e, {
message: "Invalid CertificateRequest. Message too short.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
});
var a = t.fragment,
n = {
certificate_types: o(a, 1),
certificate_authorities: o(a, 2)
};
e.session.certificateRequest = n, e.expect = h, e.process();
}, u.handleCertificateVerify = function (e, t, r) {
if (r < 2) return e.error(e, {
message: "Invalid CertificateVerify. Message too short.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
});
var n = t.fragment;
n.read -= 4;
var i = n.bytes();
n.read += 4;
var s = {
signature: o(n, 2).getBytes()
},
c = a.util.createBuffer();
c.putBuffer(e.session.md5.digest()), c.putBuffer(e.session.sha1.digest()), c = c.getBytes();
try {
if (!e.session.clientCertificate.publicKey.verify(c, s.signature, "NONE")) throw new Error("CertificateVerify signature does not match.");
e.session.md5.update(i), e.session.sha1.update(i);
} catch (t) {
return e.error(e, {
message: "Bad signature in CertificateVerify.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.handshake_failure
}
});
}
e.expect = S, e.process();
}, u.handleServerHelloDone = function (e, t, r) {
if (r > 0) return e.error(e, {
message: "Invalid ServerHelloDone message. Invalid length.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.record_overflow
}
});
if (null === e.serverCertificate) {
var n = {
message: "No server certificate provided. Not enough security.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.insufficient_security
}
},
i = e.verify(e, n.alert.description, 0, []);
if (!0 !== i) return (i || 0 === i) && ("object" != typeof i || a.util.isArray(i) ? "number" == typeof i && (n.alert.description = i) : (i.message && (n.message = i.message), i.alert && (n.alert.description = i.alert))), e.error(e, n);
}
null !== e.session.certificateRequest && (t = u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createCertificate(e)
}), u.queue(e, t)), t = u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createClientKeyExchange(e)
}), u.queue(e, t), e.expect = m;
var s = function (e, t) {
null !== e.session.certificateRequest && null !== e.session.clientCertificate && u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createCertificateVerify(e, t)
})), u.queue(e, u.createRecord(e, {
type: u.ContentType.change_cipher_spec,
data: u.createChangeCipherSpec()
})), e.state.pending = u.createConnectionState(e), e.state.current.write = e.state.pending.write, u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createFinished(e)
})), e.expect = d, u.flush(e), e.process();
};
if (null === e.session.certificateRequest || null === e.session.clientCertificate) return s(e, null);
u.getClientSignature(e, s);
}, u.handleChangeCipherSpec = function (e, t) {
if (1 !== t.fragment.getByte()) return e.error(e, {
message: "Invalid ChangeCipherSpec message received.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.illegal_parameter
}
});
var r = e.entity === u.ConnectionEnd.client;
(e.session.resuming && r || !e.session.resuming && !r) && (e.state.pending = u.createConnectionState(e)), e.state.current.read = e.state.pending.read, (!e.session.resuming && r || e.session.resuming && !r) && (e.state.pending = null), e.expect = r ? y : T, e.process();
}, u.handleFinished = function (e, t, r) {
var i = t.fragment;
i.read -= 4;
var s = i.bytes();
i.read += 4;
var o = t.fragment.getBytes();
(i = a.util.createBuffer()).putBuffer(e.session.md5.digest()), i.putBuffer(e.session.sha1.digest());
var c = e.entity === u.ConnectionEnd.client,
l = c ? "server finished" : "client finished",
p = e.session.sp;
if ((i = n(p.master_secret, l, i.getBytes(), 12)).getBytes() !== o) return e.error(e, {
message: "Invalid verify_data in Finished message.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.decrypt_error
}
});
e.session.md5.update(s), e.session.sha1.update(s), (e.session.resuming && c || !e.session.resuming && !c) && (u.queue(e, u.createRecord(e, {
type: u.ContentType.change_cipher_spec,
data: u.createChangeCipherSpec()
})), e.state.current.write = e.state.pending.write, e.state.pending = null, u.queue(e, u.createRecord(e, {
type: u.ContentType.handshake,
data: u.createFinished(e)
}))), e.expect = c ? g : I, e.handshaking = !1, ++e.handshakes, e.peerCertificate = c ? e.session.serverCertificate : e.session.clientCertificate, u.flush(e), e.isConnected = !0, e.connected(e), e.process();
}, u.handleAlert = function (e, t) {
var r,
a = t.fragment,
n = {
level: a.getByte(),
description: a.getByte()
};
switch (n.description) {
case u.Alert.Description.close_notify:
r = "Connection closed.";
break;
case u.Alert.Description.unexpected_message:
r = "Unexpected message.";
break;
case u.Alert.Description.bad_record_mac:
r = "Bad record MAC.";
break;
case u.Alert.Description.decryption_failed:
r = "Decryption failed.";
break;
case u.Alert.Description.record_overflow:
r = "Record overflow.";
break;
case u.Alert.Description.decompression_failure:
r = "Decompression failed.";
break;
case u.Alert.Description.handshake_failure:
r = "Handshake failure.";
break;
case u.Alert.Description.bad_certificate:
r = "Bad certificate.";
break;
case u.Alert.Description.unsupported_certificate:
r = "Unsupported certificate.";
break;
case u.Alert.Description.certificate_revoked:
r = "Certificate revoked.";
break;
case u.Alert.Description.certificate_expired:
r = "Certificate expired.";
break;
case u.Alert.Description.certificate_unknown:
r = "Certificate unknown.";
break;
case u.Alert.Description.illegal_parameter:
r = "Illegal parameter.";
break;
case u.Alert.Description.unknown_ca:
r = "Unknown certificate authority.";
break;
case u.Alert.Description.access_denied:
r = "Access denied.";
break;
case u.Alert.Description.decode_error:
r = "Decode error.";
break;
case u.Alert.Description.decrypt_error:
r = "Decrypt error.";
break;
case u.Alert.Description.export_restriction:
r = "Export restriction.";
break;
case u.Alert.Description.protocol_version:
r = "Unsupported protocol version.";
break;
case u.Alert.Description.insufficient_security:
r = "Insufficient security.";
break;
case u.Alert.Description.internal_error:
r = "Internal error.";
break;
case u.Alert.Description.user_canceled:
r = "User canceled.";
break;
case u.Alert.Description.no_renegotiation:
r = "Renegotiation not supported.";
break;
default:
r = "Unknown error.";
}
if (n.description === u.Alert.Description.close_notify) return e.close();
e.error(e, {
message: r,
send: !1,
origin: e.entity === u.ConnectionEnd.client ? "server" : "client",
alert: n
}), e.process();
}, u.handleHandshake = function (e, t) {
var r = t.fragment,
n = r.getByte(),
i = r.getInt24();
if (i > r.length()) return e.fragmented = t, t.fragment = a.util.createBuffer(), r.read -= 4, e.process();
e.fragmented = null, r.read -= 4;
var s = r.bytes(i + 4);
r.read += 4, n in K[e.entity][e.expect] ? (e.entity !== u.ConnectionEnd.server || e.open || e.fail || (e.handshaking = !0, e.session = {
version: null,
extensions: {
server_name: {
serverNameList: []
}
},
cipherSuite: null,
compressionMethod: null,
serverCertificate: null,
clientCertificate: null,
md5: a.md.md5.create(),
sha1: a.md.sha1.create()
}), n !== u.HandshakeType.hello_request && n !== u.HandshakeType.certificate_verify && n !== u.HandshakeType.finished && (e.session.md5.update(s), e.session.sha1.update(s)), K[e.entity][e.expect][n](e, t, i)) : u.handleUnexpected(e, t);
}, u.handleApplicationData = function (e, t) {
e.data.putBuffer(t.fragment), e.dataReady(e), e.process();
}, u.handleHeartbeat = function (e, t) {
var r = t.fragment,
n = r.getByte(),
i = r.getInt16(),
s = r.getBytes(i);
if (n === u.HeartbeatMessageType.heartbeat_request) {
if (e.handshaking || i > s.length) return e.process();
u.queue(e, u.createRecord(e, {
type: u.ContentType.heartbeat,
data: u.createHeartbeat(u.HeartbeatMessageType.heartbeat_response, s)
})), u.flush(e);
} else if (n === u.HeartbeatMessageType.heartbeat_response) {
if (s !== e.expectedHeartbeatPayload) return e.process();
e.heartbeatReceived && e.heartbeatReceived(e, a.util.createBuffer(s));
}
e.process();
};
var l = 1,
p = 2,
f = 3,
h = 4,
d = 5,
y = 6,
g = 7,
m = 8,
v = 1,
C = 2,
E = 3,
S = 4,
T = 5,
I = 6,
A = u.handleUnexpected,
B = u.handleChangeCipherSpec,
b = u.handleAlert,
N = u.handleHandshake,
R = u.handleApplicationData,
w = u.handleHeartbeat,
k = [];
k[u.ConnectionEnd.client] = [[A, b, N, A, w], [A, b, N, A, w], [A, b, N, A, w], [A, b, N, A, w], [A, b, N, A, w], [B, b, A, A, w], [A, b, N, A, w], [A, b, N, R, w], [A, b, N, A, w]], k[u.ConnectionEnd.server] = [[A, b, N, A, w], [A, b, N, A, w], [A, b, N, A, w], [A, b, N, A, w], [B, b, A, A, w], [A, b, N, A, w], [A, b, N, R, w], [A, b, N, A, w]];
var _ = u.handleHelloRequest,
L = u.handleServerHello,
U = u.handleCertificate,
D = u.handleServerKeyExchange,
P = u.handleCertificateRequest,
V = u.handleServerHelloDone,
O = u.handleFinished,
K = [];
K[u.ConnectionEnd.client] = [[A, A, L, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, U, D, P, V, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, D, P, V, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, A, P, V, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, A, A, V, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, O], [_, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [_, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A]];
var x = u.handleClientHello,
M = u.handleClientKeyExchange,
F = u.handleCertificateVerify;
K[u.ConnectionEnd.server] = [[A, x, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, U, A, A, A, A, A, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, M, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, F, A, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, O], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A], [A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A, A]], u.generateKeys = function (e, t) {
var r = n,
a = t.client_random + t.server_random;
e.session.resuming || (t.master_secret = r(t.pre_master_secret, "master secret", a, 48).bytes(), t.pre_master_secret = null), a = t.server_random + t.client_random;
var i = 2 * t.mac_key_length + 2 * t.enc_key_length,
s = e.version.major === u.Versions.TLS_1_0.major && e.version.minor === u.Versions.TLS_1_0.minor;
s && (i += 2 * t.fixed_iv_length);
var o = r(t.master_secret, "key expansion", a, i),
c = {
client_write_MAC_key: o.getBytes(t.mac_key_length),
server_write_MAC_key: o.getBytes(t.mac_key_length),
client_write_key: o.getBytes(t.enc_key_length),
server_write_key: o.getBytes(t.enc_key_length)
};
return s && (c.client_write_IV = o.getBytes(t.fixed_iv_length), c.server_write_IV = o.getBytes(t.fixed_iv_length)), c;
}, u.createConnectionState = function (e) {
var t = e.entity === u.ConnectionEnd.client,
r = function () {
var e = {
sequenceNumber: [0, 0],
macKey: null,
macLength: 0,
macFunction: null,
cipherState: null,
cipherFunction: function (e) {
return !0;
},
compressionState: null,
compressFunction: function (e) {
return !0;
},
updateSequenceNumber: function () {
4294967295 === e.sequenceNumber[1] ? (e.sequenceNumber[1] = 0, ++e.sequenceNumber[0]) : ++e.sequenceNumber[1];
}
};
return e;
},
a = {
read: r(),
write: r()
};
if (a.read.update = function (e, t) {
return a.read.cipherFunction(t, a.read) ? a.read.compressFunction(e, t, a.read) || e.error(e, {
message: "Could not decompress record.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.decompression_failure
}
}) : e.error(e, {
message: "Could not decrypt record or bad MAC.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.bad_record_mac
}
}), !e.fail;
}, a.write.update = function (e, t) {
return a.write.compressFunction(e, t, a.write) ? a.write.cipherFunction(t, a.write) || e.error(e, {
message: "Could not encrypt record.",
send: !1,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
}) : e.error(e, {
message: "Could not compress record.",
send: !1,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
}), !e.fail;
}, e.session) {
var n = e.session.sp;
switch (e.session.cipherSuite.initSecurityParameters(n), n.keys = u.generateKeys(e, n), a.read.macKey = t ? n.keys.server_write_MAC_key : n.keys.client_write_MAC_key, a.write.macKey = t ? n.keys.client_write_MAC_key : n.keys.server_write_MAC_key, e.session.cipherSuite.initConnectionState(a, e, n), n.compression_algorithm) {
case u.CompressionMethod.none:
break;
case u.CompressionMethod.deflate:
a.read.compressFunction = s, a.write.compressFunction = i;
break;
default:
throw new Error("Unsupported compression algorithm.");
}
}
return a;
}, u.createRandom = function () {
var e = new Date(),
t = +e + 6e4 * e.getTimezoneOffset(),
r = a.util.createBuffer();
return r.putInt32(t), r.putBytes(a.random.getBytes(28)), r;
}, u.createRecord = function (e, t) {
return t.data ? {
type: t.type,
version: {
major: e.version.major,
minor: e.version.minor
},
length: t.data.length(),
fragment: t.data
} : null;
}, u.createAlert = function (e, t) {
var r = a.util.createBuffer();
return r.putByte(t.level), r.putByte(t.description), u.createRecord(e, {
type: u.ContentType.alert,
data: r
});
}, u.createClientHello = function (e) {
e.session.clientHelloVersion = {
major: e.version.major,
minor: e.version.minor
};
for (var t = a.util.createBuffer(), r = 0; r < e.cipherSuites.length; ++r) {
var n = e.cipherSuites[r];
t.putByte(n.id[0]), t.putByte(n.id[1]);
}
var i = t.length(),
s = a.util.createBuffer();
s.putByte(u.CompressionMethod.none);
var o = s.length(),
l = a.util.createBuffer();
if (e.virtualHost) {
var p = a.util.createBuffer();
p.putByte(0), p.putByte(0);
var f = a.util.createBuffer();
f.putByte(0), c(f, 2, a.util.createBuffer(e.virtualHost));
var h = a.util.createBuffer();
c(h, 2, f), c(p, 2, h), l.putBuffer(p);
}
var d = l.length();
d > 0 && (d += 2);
var y = e.session.id,
g = y.length + 1 + 2 + 4 + 28 + 2 + i + 1 + o + d,
m = a.util.createBuffer();
return m.putByte(u.HandshakeType.client_hello), m.putInt24(g), m.putByte(e.version.major), m.putByte(e.version.minor), m.putBytes(e.session.sp.client_random), c(m, 1, a.util.createBuffer(y)), c(m, 2, t), c(m, 1, s), d > 0 && c(m, 2, l), m;
}, u.createServerHello = function (e) {
var t = e.session.id,
r = t.length + 1 + 2 + 4 + 28 + 2 + 1,
n = a.util.createBuffer();
return n.putByte(u.HandshakeType.server_hello), n.putInt24(r), n.putByte(e.version.major), n.putByte(e.version.minor), n.putBytes(e.session.sp.server_random), c(n, 1, a.util.createBuffer(t)), n.putByte(e.session.cipherSuite.id[0]), n.putByte(e.session.cipherSuite.id[1]), n.putByte(e.session.compressionMethod), n;
}, u.createCertificate = function (e) {
var t,
r = e.entity === u.ConnectionEnd.client,
n = null;
e.getCertificate && (t = r ? e.session.certificateRequest : e.session.extensions.server_name.serverNameList, n = e.getCertificate(e, t));
var i = a.util.createBuffer();
if (null !== n) try {
a.util.isArray(n) || (n = [n]);
for (var s = null, o = 0; o < n.length; ++o) {
var l = a.pem.decode(n[o])[0];
if ("CERTIFICATE" !== l.type && "X509 CERTIFICATE" !== l.type && "TRUSTED CERTIFICATE" !== l.type) {
var p = new Error('Could not convert certificate from PEM; PEM header type is not "CERTIFICATE", "X509 CERTIFICATE", or "TRUSTED CERTIFICATE".');
throw p.headerType = l.type, p;
}
if (l.procType && "ENCRYPTED" === l.procType.type) throw new Error("Could not convert certificate from PEM; PEM is encrypted.");
var f = a.util.createBuffer(l.body);
null === s && (s = a.asn1.fromDer(f.bytes(), !1));
var h = a.util.createBuffer();
c(h, 3, f), i.putBuffer(h);
}
n = a.pki.certificateFromAsn1(s), r ? e.session.clientCertificate = n : e.session.serverCertificate = n;
} catch (t) {
return e.error(e, {
message: "Could not send certificate list.",
cause: t,
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.bad_certificate
}
});
}
var d = 3 + i.length(),
y = a.util.createBuffer();
return y.putByte(u.HandshakeType.certificate), y.putInt24(d), c(y, 3, i), y;
}, u.createClientKeyExchange = function (e) {
var t = a.util.createBuffer();
t.putByte(e.session.clientHelloVersion.major), t.putByte(e.session.clientHelloVersion.minor), t.putBytes(a.random.getBytes(46));
var r = e.session.sp;
r.pre_master_secret = t.getBytes();
var n = (t = e.session.serverCertificate.publicKey.encrypt(r.pre_master_secret)).length + 2,
i = a.util.createBuffer();
return i.putByte(u.HandshakeType.client_key_exchange), i.putInt24(n), i.putInt16(t.length), i.putBytes(t), i;
}, u.createServerKeyExchange = function (e) {
var t = a.util.createBuffer();
return t;
}, u.getClientSignature = function (e, t) {
var r = a.util.createBuffer();
r.putBuffer(e.session.md5.digest()), r.putBuffer(e.session.sha1.digest()), r = r.getBytes(), e.getSignature = e.getSignature || function (e, t, r) {
var n = null;
if (e.getPrivateKey) try {
n = e.getPrivateKey(e, e.session.clientCertificate), n = a.pki.privateKeyFromPem(n);
} catch (t) {
e.error(e, {
message: "Could not get private key.",
cause: t,
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
});
}
null === n ? e.error(e, {
message: "No private key set.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.internal_error
}
}) : t = n.sign(t, null), r(e, t);
}, e.getSignature(e, r, t);
}, u.createCertificateVerify = function (e, t) {
var r = t.length + 2,
n = a.util.createBuffer();
return n.putByte(u.HandshakeType.certificate_verify), n.putInt24(r), n.putInt16(t.length), n.putBytes(t), n;
}, u.createCertificateRequest = function (e) {
var t = a.util.createBuffer();
t.putByte(1);
var r = a.util.createBuffer();
for (var n in e.caStore.certs) {
var i = e.caStore.certs[n],
s = a.pki.distinguishedNameToAsn1(i.subject),
o = a.asn1.toDer(s);
r.putInt16(o.length()), r.putBuffer(o);
}
var l = 1 + t.length() + 2 + r.length(),
p = a.util.createBuffer();
return p.putByte(u.HandshakeType.certificate_request), p.putInt24(l), c(p, 1, t), c(p, 2, r), p;
}, u.createServerHelloDone = function (e) {
var t = a.util.createBuffer();
return t.putByte(u.HandshakeType.server_hello_done), t.putInt24(0), t;
}, u.createChangeCipherSpec = function () {
var e = a.util.createBuffer();
return e.putByte(1), e;
}, u.createFinished = function (e) {
var t = a.util.createBuffer();
t.putBuffer(e.session.md5.digest()), t.putBuffer(e.session.sha1.digest());
var r = e.entity === u.ConnectionEnd.client,
i = e.session.sp,
s = r ? "client finished" : "server finished";
t = n(i.master_secret, s, t.getBytes(), 12);
var o = a.util.createBuffer();
return o.putByte(u.HandshakeType.finished), o.putInt24(t.length()), o.putBuffer(t), o;
}, u.createHeartbeat = function (e, t, r) {
void 0 === r && (r = t.length);
var n = a.util.createBuffer();
n.putByte(e), n.putInt16(r), n.putBytes(t);
var i = n.length(),
s = Math.max(16, i - r - 3);
return n.putBytes(a.random.getBytes(s)), n;
}, u.queue = function (e, t) {
if (t && (0 !== t.fragment.length() || t.type !== u.ContentType.handshake && t.type !== u.ContentType.alert && t.type !== u.ContentType.change_cipher_spec)) {
if (t.type === u.ContentType.handshake) {
var r = t.fragment.bytes();
e.session.md5.update(r), e.session.sha1.update(r), r = null;
}
var n;
if (t.fragment.length() <= u.MaxFragment) n = [t];else {
n = [];
for (var i = t.fragment.bytes(); i.length > u.MaxFragment;) n.push(u.createRecord(e, {
type: t.type,
data: a.util.createBuffer(i.slice(0, u.MaxFragment))
})), i = i.slice(u.MaxFragment);
i.length > 0 && n.push(u.createRecord(e, {
type: t.type,
data: a.util.createBuffer(i)
}));
}
for (var s = 0; s < n.length && !e.fail; ++s) {
var o = n[s];
e.state.current.write.update(e, o) && e.records.push(o);
}
}
}, u.flush = function (e) {
for (var t = 0; t < e.records.length; ++t) {
var r = e.records[t];
e.tlsData.putByte(r.type), e.tlsData.putByte(r.version.major), e.tlsData.putByte(r.version.minor), e.tlsData.putInt16(r.fragment.length()), e.tlsData.putBuffer(e.records[t].fragment);
}
return e.records = [], e.tlsDataReady(e);
};
var j = function (e) {
switch (e) {
case !0:
return !0;
case a.pki.certificateError.bad_certificate:
return u.Alert.Description.bad_certificate;
case a.pki.certificateError.unsupported_certificate:
return u.Alert.Description.unsupported_certificate;
case a.pki.certificateError.certificate_revoked:
return u.Alert.Description.certificate_revoked;
case a.pki.certificateError.certificate_expired:
return u.Alert.Description.certificate_expired;
case a.pki.certificateError.certificate_unknown:
return u.Alert.Description.certificate_unknown;
case a.pki.certificateError.unknown_ca:
return u.Alert.Description.unknown_ca;
default:
return u.Alert.Description.bad_certificate;
}
};
for (var G in u.verifyCertificateChain = function (e, t) {
try {
var r = {};
for (var n in e.verifyOptions) r[n] = e.verifyOptions[n];
r.verify = function (t, r, n) {
j(t);
var i = e.verify(e, t, r, n);
if (!0 !== i) {
if ("object" == typeof i && !a.util.isArray(i)) {
var s = new Error("The application rejected the certificate.");
throw s.send = !0, s.alert = {
level: u.Alert.Level.fatal,
description: u.Alert.Description.bad_certificate
}, i.message && (s.message = i.message), i.alert && (s.alert.description = i.alert), s;
}
i !== t && (i = function (e) {
switch (e) {
case !0:
return !0;
case u.Alert.Description.bad_certificate:
return a.pki.certificateError.bad_certificate;
case u.Alert.Description.unsupported_certificate:
return a.pki.certificateError.unsupported_certificate;
case u.Alert.Description.certificate_revoked:
return a.pki.certificateError.certificate_revoked;
case u.Alert.Description.certificate_expired:
return a.pki.certificateError.certificate_expired;
case u.Alert.Description.certificate_unknown:
return a.pki.certificateError.certificate_unknown;
case u.Alert.Description.unknown_ca:
return a.pki.certificateError.unknown_ca;
default:
return a.pki.certificateError.bad_certificate;
}
}(i));
}
return i;
}, a.pki.verifyCertificateChain(e.caStore, t, r);
} catch (t) {
var i = t;
("object" != typeof i || a.util.isArray(i)) && (i = {
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: j(t)
}
}), "send" in i || (i.send = !0), "alert" in i || (i.alert = {
level: u.Alert.Level.fatal,
description: j(i.error)
}), e.error(e, i);
}
return !e.fail;
}, u.createSessionCache = function (e, t) {
var r = null;
if (e && e.getSession && e.setSession && e.order) r = e;else {
for (var n in (r = {}).cache = e || {}, r.capacity = Math.max(t || 100, 1), r.order = [], e) r.order.length <= t ? r.order.push(n) : delete e[n];
r.getSession = function (e) {
var t = null,
n = null;
if (e ? n = a.util.bytesToHex(e) : r.order.length > 0 && (n = r.order[0]), null !== n && n in r.cache) for (var i in t = r.cache[n], delete r.cache[n], r.order) if (r.order[i] === n) {
r.order.splice(i, 1);
break;
}
return t;
}, r.setSession = function (e, t) {
if (r.order.length === r.capacity) {
var n = r.order.shift();
delete r.cache[n];
}
n = a.util.bytesToHex(e);
r.order.push(n), r.cache[n] = t;
};
}
return r;
}, u.createConnection = function (e) {
var t = null;
t = e.caStore ? a.util.isArray(e.caStore) ? a.pki.createCaStore(e.caStore) : e.caStore : a.pki.createCaStore();
var r = e.cipherSuites || null;
if (null === r) for (var n in r = [], u.CipherSuites) r.push(u.CipherSuites[n]);
var i = e.server ? u.ConnectionEnd.server : u.ConnectionEnd.client,
s = e.sessionCache ? u.createSessionCache(e.sessionCache) : null,
o = {
version: {
major: u.Version.major,
minor: u.Version.minor
},
entity: i,
sessionId: e.sessionId,
caStore: t,
sessionCache: s,
cipherSuites: r,
connected: e.connected,
virtualHost: e.virtualHost || null,
verifyClient: e.verifyClient || !1,
verify: e.verify || function (e, t, r, a) {
return t;
},
verifyOptions: e.verifyOptions || {},
getCertificate: e.getCertificate || null,
getPrivateKey: e.getPrivateKey || null,
getSignature: e.getSignature || null,
input: a.util.createBuffer(),
tlsData: a.util.createBuffer(),
data: a.util.createBuffer(),
tlsDataReady: e.tlsDataReady,
dataReady: e.dataReady,
heartbeatReceived: e.heartbeatReceived,
closed: e.closed,
error: function (t, r) {
r.origin = r.origin || (t.entity === u.ConnectionEnd.client ? "client" : "server"), r.send && (u.queue(t, u.createAlert(t, r.alert)), u.flush(t));
var a = !1 !== r.fatal;
a && (t.fail = !0), e.error(t, r), a && t.close(!1);
},
deflate: e.deflate || null,
inflate: e.inflate || null,
reset: function (e) {
o.version = {
major: u.Version.major,
minor: u.Version.minor
}, o.record = null, o.session = null, o.peerCertificate = null, o.state = {
pending: null,
current: null
}, o.expect = (o.entity, u.ConnectionEnd.client, 0), o.fragmented = null, o.records = [], o.open = !1, o.handshakes = 0, o.handshaking = !1, o.isConnected = !1, o.fail = !(e || void 0 === e), o.input.clear(), o.tlsData.clear(), o.data.clear(), o.state.current = u.createConnectionState(o);
}
};
o.reset();
return o.handshake = function (e) {
if (o.entity !== u.ConnectionEnd.client) o.error(o, {
message: "Cannot initiate handshake as a server.",
fatal: !1
});else if (o.handshaking) o.error(o, {
message: "Handshake already in progress.",
fatal: !1
});else {
o.fail && !o.open && 0 === o.handshakes && (o.fail = !1), o.handshaking = !0;
var t = null;
(e = e || "").length > 0 && (o.sessionCache && (t = o.sessionCache.getSession(e)), null === t && (e = "")), 0 === e.length && o.sessionCache && null !== (t = o.sessionCache.getSession()) && (e = t.id), o.session = {
id: e,
version: null,
cipherSuite: null,
compressionMethod: null,
serverCertificate: null,
certificateRequest: null,
clientCertificate: null,
sp: {},
md5: a.md.md5.create(),
sha1: a.md.sha1.create()
}, t && (o.version = t.version, o.session.sp = t.sp), o.session.sp.client_random = u.createRandom().getBytes(), o.open = !0, u.queue(o, u.createRecord(o, {
type: u.ContentType.handshake,
data: u.createClientHello(o)
})), u.flush(o);
}
}, o.process = function (e) {
var t = 0;
return e && o.input.putBytes(e), o.fail || (null !== o.record && o.record.ready && o.record.fragment.isEmpty() && (o.record = null), null === o.record && (t = function (e) {
var t = 0,
r = e.input,
n = r.length();
if (n < 5) t = 5 - n;else {
e.record = {
type: r.getByte(),
version: {
major: r.getByte(),
minor: r.getByte()
},
length: r.getInt16(),
fragment: a.util.createBuffer(),
ready: !1
};
var i = e.record.version.major === e.version.major;
i && e.session && e.session.version && (i = e.record.version.minor === e.version.minor), i || e.error(e, {
message: "Incompatible TLS version.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.protocol_version
}
});
}
return t;
}(o)), o.fail || null === o.record || o.record.ready || (t = function (e) {
var t = 0,
r = e.input,
a = r.length();
a < e.record.length ? t = e.record.length - a : (e.record.fragment.putBytes(r.getBytes(e.record.length)), r.compact(), e.state.current.read.update(e, e.record) && (null !== e.fragmented && (e.fragmented.type === e.record.type ? (e.fragmented.fragment.putBuffer(e.record.fragment), e.record = e.fragmented) : e.error(e, {
message: "Invalid fragmented record.",
send: !0,
alert: {
level: u.Alert.Level.fatal,
description: u.Alert.Description.unexpected_message
}
})), e.record.ready = !0));
return t;
}(o)), !o.fail && null !== o.record && o.record.ready && function (e, t) {
var r = t.type - u.ContentType.change_cipher_spec,
a = k[e.entity][e.expect];
r in a ? a[r](e, t) : u.handleUnexpected(e, t);
}(o, o.record)), t;
}, o.prepare = function (e) {
return u.queue(o, u.createRecord(o, {
type: u.ContentType.application_data,
data: a.util.createBuffer(e)
})), u.flush(o);
}, o.prepareHeartbeatRequest = function (e, t) {
return e instanceof a.util.ByteBuffer && (e = e.bytes()), void 0 === t && (t = e.length), o.expectedHeartbeatPayload = e, u.queue(o, u.createRecord(o, {
type: u.ContentType.heartbeat,
data: u.createHeartbeat(u.HeartbeatMessageType.heartbeat_request, e, t)
})), u.flush(o);
}, o.close = function (e) {
if (!o.fail && o.sessionCache && o.session) {
var t = {
id: o.session.id,
version: o.session.version,
sp: o.session.sp
};
t.sp.keys = null, o.sessionCache.setSession(t.id, t);
}
o.open && (o.open = !1, o.input.clear(), (o.isConnected || o.handshaking) && (o.isConnected = o.handshaking = !1, u.queue(o, u.createAlert(o, {
level: u.Alert.Level.warning,
description: u.Alert.Description.close_notify
})), u.flush(o)), o.closed(o)), o.reset(e);
}, o;
}, e.exports = a.tls = a.tls || {}, u) "function" != typeof u[G] && (a.tls[G] = u[G]);
a.tls.prf_tls1 = n, a.tls.hmac_sha1 = function (e, t, r) {
var n = a.hmac.create();
n.start("SHA1", e);
var i = a.util.createBuffer();
return i.putInt32(t[0]), i.putInt32(t[1]), i.putByte(r.type), i.putByte(r.version.major), i.putByte(r.version.minor), i.putInt16(r.length), i.putBytes(r.fragment.bytes()), n.update(i.getBytes()), n.digest().getBytes();
}, a.tls.createSessionCache = u.createSessionCache, a.tls.createConnection = u.createConnection;
}, function (e, t, r) {
var a = r(0);
r(3), r(6), r(22), r(7), r(15), r(28), r(18), r(11), r(1), r(17);
var n = a.asn1,
i = e.exports = a.pki = a.pki || {};
i.pemToDer = function (e) {
var t = a.pem.decode(e)[0];
if (t.procType && "ENCRYPTED" === t.procType.type) throw new Error("Could not convert PEM to DER; PEM is encrypted.");
return a.util.createBuffer(t.body);
}, i.privateKeyFromPem = function (e) {
var t = a.pem.decode(e)[0];
if ("PRIVATE KEY" !== t.type && "RSA PRIVATE KEY" !== t.type) {
var r = new Error('Could not convert private key from PEM; PEM header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');
throw r.headerType = t.type, r;
}
if (t.procType && "ENCRYPTED" === t.procType.type) throw new Error("Could not convert private key from PEM; PEM is encrypted.");
var s = n.fromDer(t.body);
return i.privateKeyFromAsn1(s);
}, i.privateKeyToPem = function (e, t) {
var r = {
type: "RSA PRIVATE KEY",
body: n.toDer(i.privateKeyToAsn1(e)).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.privateKeyInfoToPem = function (e, t) {
var r = {
type: "PRIVATE KEY",
body: n.toDer(e).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
};
}, function (e, t, r) {
var a = r(0);
if (r(5), r(3), r(10), r(4), r(6), r(15), r(7), r(2), r(25), r(11), r(1), void 0 === n) var n = a.jsbn.BigInteger;
var i = a.asn1,
s = a.pki = a.pki || {};
e.exports = s.pbe = a.pbe = a.pbe || {};
var o = s.oids,
c = {
name: "EncryptedPrivateKeyInfo",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "EncryptedPrivateKeyInfo.encryptionAlgorithm",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "AlgorithmIdentifier.algorithm",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OID,
constructed: !1,
capture: "encryptionOid"
}, {
name: "AlgorithmIdentifier.parameters",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
captureAsn1: "encryptionParams"
}]
}, {
name: "EncryptedPrivateKeyInfo.encryptedData",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OCTETSTRING,
constructed: !1,
capture: "encryptedData"
}]
},
u = {
name: "PBES2Algorithms",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PBES2Algorithms.keyDerivationFunc",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PBES2Algorithms.keyDerivationFunc.oid",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OID,
constructed: !1,
capture: "kdfOid"
}, {
name: "PBES2Algorithms.params",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PBES2Algorithms.params.salt",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OCTETSTRING,
constructed: !1,
capture: "kdfSalt"
}, {
name: "PBES2Algorithms.params.iterationCount",
tagClass: i.Class.UNIVERSAL,
type: i.Type.INTEGER,
constructed: !1,
capture: "kdfIterationCount"
}, {
name: "PBES2Algorithms.params.keyLength",
tagClass: i.Class.UNIVERSAL,
type: i.Type.INTEGER,
constructed: !1,
optional: !0,
capture: "keyLength"
}, {
name: "PBES2Algorithms.params.prf",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
optional: !0,
value: [{
name: "PBES2Algorithms.params.prf.algorithm",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OID,
constructed: !1,
capture: "prfOid"
}]
}]
}]
}, {
name: "PBES2Algorithms.encryptionScheme",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PBES2Algorithms.encryptionScheme.oid",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OID,
constructed: !1,
capture: "encOid"
}, {
name: "PBES2Algorithms.encryptionScheme.iv",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OCTETSTRING,
constructed: !1,
capture: "encIv"
}]
}]
},
l = {
name: "pkcs-12PbeParams",
tagClass: i.Class.UNIVERSAL,
type: i.Type.SEQUENCE,
constructed: !0,
value: [{
name: "pkcs-12PbeParams.salt",
tagClass: i.Class.UNIVERSAL,
type: i.Type.OCTETSTRING,
constructed: !1,
capture: "salt"
}, {
name: "pkcs-12PbeParams.iterations",
tagClass: i.Class.UNIVERSAL,
type: i.Type.INTEGER,
constructed: !1,
capture: "iterations"
}]
};
function p(e, t) {
return e.start().update(t).digest().getBytes();
}
function f(e) {
var t;
if (e) {
if (!(t = s.oids[i.derToOid(e)])) {
var r = new Error("Unsupported PRF OID.");
throw r.oid = e, r.supported = ["hmacWithSHA1", "hmacWithSHA224", "hmacWithSHA256", "hmacWithSHA384", "hmacWithSHA512"], r;
}
} else t = "hmacWithSHA1";
return h(t);
}
function h(e) {
var t = a.md;
switch (e) {
case "hmacWithSHA224":
t = a.md.sha512;
case "hmacWithSHA1":
case "hmacWithSHA256":
case "hmacWithSHA384":
case "hmacWithSHA512":
e = e.substr(8).toLowerCase();
break;
default:
var r = new Error("Unsupported PRF algorithm.");
throw r.algorithm = e, r.supported = ["hmacWithSHA1", "hmacWithSHA224", "hmacWithSHA256", "hmacWithSHA384", "hmacWithSHA512"], r;
}
if (!t || !(e in t)) throw new Error("Unknown hash algorithm: " + e);
return t[e].create();
}
s.encryptPrivateKeyInfo = function (e, t, r) {
(r = r || {}).saltSize = r.saltSize || 8, r.count = r.count || 2048, r.algorithm = r.algorithm || "aes128", r.prfAlgorithm = r.prfAlgorithm || "sha1";
var n,
c,
u,
l = a.random.getBytesSync(r.saltSize),
p = r.count,
f = i.integerToDer(p);
if (0 === r.algorithm.indexOf("aes") || "des" === r.algorithm) {
var d, y, g;
switch (r.algorithm) {
case "aes128":
n = 16, d = 16, y = o["aes128-CBC"], g = a.aes.createEncryptionCipher;
break;
case "aes192":
n = 24, d = 16, y = o["aes192-CBC"], g = a.aes.createEncryptionCipher;
break;
case "aes256":
n = 32, d = 16, y = o["aes256-CBC"], g = a.aes.createEncryptionCipher;
break;
case "des":
n = 8, d = 8, y = o.desCBC, g = a.des.createEncryptionCipher;
break;
default:
throw (T = new Error("Cannot encrypt private key. Unknown encryption algorithm.")).algorithm = r.algorithm, T;
}
var m = "hmacWith" + r.prfAlgorithm.toUpperCase(),
v = h(m),
C = a.pkcs5.pbkdf2(t, l, p, n, v),
E = a.random.getBytesSync(d);
(I = g(C)).start(E), I.update(i.toDer(e)), I.finish(), u = I.output.getBytes();
var S = function (e, t, r, n) {
var o = i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OCTETSTRING, !1, e), i.create(i.Class.UNIVERSAL, i.Type.INTEGER, !1, t.getBytes())]);
"hmacWithSHA1" !== n && o.value.push(i.create(i.Class.UNIVERSAL, i.Type.INTEGER, !1, a.util.hexToBytes(r.toString(16))), i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OID, !1, i.oidToDer(s.oids[n]).getBytes()), i.create(i.Class.UNIVERSAL, i.Type.NULL, !1, "")]));
return o;
}(l, f, n, m);
c = i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OID, !1, i.oidToDer(o.pkcs5PBES2).getBytes()), i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OID, !1, i.oidToDer(o.pkcs5PBKDF2).getBytes()), S]), i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OID, !1, i.oidToDer(y).getBytes()), i.create(i.Class.UNIVERSAL, i.Type.OCTETSTRING, !1, E)])])]);
} else {
var T;
if ("3des" !== r.algorithm) throw (T = new Error("Cannot encrypt private key. Unknown encryption algorithm.")).algorithm = r.algorithm, T;
n = 24;
var I,
A = new a.util.ByteBuffer(l);
C = s.pbe.generatePkcs12Key(t, A, 1, p, n), E = s.pbe.generatePkcs12Key(t, A, 2, p, n);
(I = a.des.createEncryptionCipher(C)).start(E), I.update(i.toDer(e)), I.finish(), u = I.output.getBytes(), c = i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OID, !1, i.oidToDer(o["pbeWithSHAAnd3-KeyTripleDES-CBC"]).getBytes()), i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [i.create(i.Class.UNIVERSAL, i.Type.OCTETSTRING, !1, l), i.create(i.Class.UNIVERSAL, i.Type.INTEGER, !1, f.getBytes())])]);
}
return i.create(i.Class.UNIVERSAL, i.Type.SEQUENCE, !0, [c, i.create(i.Class.UNIVERSAL, i.Type.OCTETSTRING, !1, u)]);
}, s.decryptPrivateKeyInfo = function (e, t) {
var r = null,
n = {},
o = [];
if (!i.validate(e, c, n, o)) {
var u = new Error("Cannot read encrypted private key. ASN.1 object is not a supported EncryptedPrivateKeyInfo.");
throw u.errors = o, u;
}
var l = i.derToOid(n.encryptionOid),
p = s.pbe.getCipher(l, n.encryptionParams, t),
f = a.util.createBuffer(n.encryptedData);
return p.update(f), p.finish() && (r = i.fromDer(p.output)), r;
}, s.encryptedPrivateKeyToPem = function (e, t) {
var r = {
type: "ENCRYPTED PRIVATE KEY",
body: i.toDer(e).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, s.encryptedPrivateKeyFromPem = function (e) {
var t = a.pem.decode(e)[0];
if ("ENCRYPTED PRIVATE KEY" !== t.type) {
var r = new Error('Could not convert encrypted private key from PEM; PEM header type is "ENCRYPTED PRIVATE KEY".');
throw r.headerType = t.type, r;
}
if (t.procType && "ENCRYPTED" === t.procType.type) throw new Error("Could not convert encrypted private key from PEM; PEM is encrypted.");
return i.fromDer(t.body);
}, s.encryptRsaPrivateKey = function (e, t, r) {
if (!(r = r || {}).legacy) {
var n = s.wrapRsaPrivateKey(s.privateKeyToAsn1(e));
return n = s.encryptPrivateKeyInfo(n, t, r), s.encryptedPrivateKeyToPem(n);
}
var o, c, u, l;
switch (r.algorithm) {
case "aes128":
o = "AES-128-CBC", u = 16, c = a.random.getBytesSync(16), l = a.aes.createEncryptionCipher;
break;
case "aes192":
o = "AES-192-CBC", u = 24, c = a.random.getBytesSync(16), l = a.aes.createEncryptionCipher;
break;
case "aes256":
o = "AES-256-CBC", u = 32, c = a.random.getBytesSync(16), l = a.aes.createEncryptionCipher;
break;
case "3des":
o = "DES-EDE3-CBC", u = 24, c = a.random.getBytesSync(8), l = a.des.createEncryptionCipher;
break;
case "des":
o = "DES-CBC", u = 8, c = a.random.getBytesSync(8), l = a.des.createEncryptionCipher;
break;
default:
var p = new Error('Could not encrypt RSA private key; unsupported encryption algorithm "' + r.algorithm + '".');
throw p.algorithm = r.algorithm, p;
}
var f = l(a.pbe.opensslDeriveBytes(t, c.substr(0, 8), u));
f.start(c), f.update(i.toDer(s.privateKeyToAsn1(e))), f.finish();
var h = {
type: "RSA PRIVATE KEY",
procType: {
version: "4",
type: "ENCRYPTED"
},
dekInfo: {
algorithm: o,
parameters: a.util.bytesToHex(c).toUpperCase()
},
body: f.output.getBytes()
};
return a.pem.encode(h);
}, s.decryptRsaPrivateKey = function (e, t) {
var r = null,
n = a.pem.decode(e)[0];
if ("ENCRYPTED PRIVATE KEY" !== n.type && "PRIVATE KEY" !== n.type && "RSA PRIVATE KEY" !== n.type) throw (u = new Error('Could not convert private key from PEM; PEM header type is not "ENCRYPTED PRIVATE KEY", "PRIVATE KEY", or "RSA PRIVATE KEY".')).headerType = u, u;
if (n.procType && "ENCRYPTED" === n.procType.type) {
var o, c;
switch (n.dekInfo.algorithm) {
case "DES-CBC":
o = 8, c = a.des.createDecryptionCipher;
break;
case "DES-EDE3-CBC":
o = 24, c = a.des.createDecryptionCipher;
break;
case "AES-128-CBC":
o = 16, c = a.aes.createDecryptionCipher;
break;
case "AES-192-CBC":
o = 24, c = a.aes.createDecryptionCipher;
break;
case "AES-256-CBC":
o = 32, c = a.aes.createDecryptionCipher;
break;
case "RC2-40-CBC":
o = 5, c = function (e) {
return a.rc2.createDecryptionCipher(e, 40);
};
break;
case "RC2-64-CBC":
o = 8, c = function (e) {
return a.rc2.createDecryptionCipher(e, 64);
};
break;
case "RC2-128-CBC":
o = 16, c = function (e) {
return a.rc2.createDecryptionCipher(e, 128);
};
break;
default:
var u;
throw (u = new Error('Could not decrypt private key; unsupported encryption algorithm "' + n.dekInfo.algorithm + '".')).algorithm = n.dekInfo.algorithm, u;
}
var l = a.util.hexToBytes(n.dekInfo.parameters),
p = c(a.pbe.opensslDeriveBytes(t, l.substr(0, 8), o));
if (p.start(l), p.update(a.util.createBuffer(n.body)), !p.finish()) return r;
r = p.output.getBytes();
} else r = n.body;
return null !== (r = "ENCRYPTED PRIVATE KEY" === n.type ? s.decryptPrivateKeyInfo(i.fromDer(r), t) : i.fromDer(r)) && (r = s.privateKeyFromAsn1(r)), r;
}, s.pbe.generatePkcs12Key = function (e, t, r, n, i, s) {
var o, c;
if (null == s) {
if (!("sha1" in a.md)) throw new Error('"sha1" hash algorithm unavailable.');
s = a.md.sha1.create();
}
var u = s.digestLength,
l = s.blockLength,
p = new a.util.ByteBuffer(),
f = new a.util.ByteBuffer();
if (null != e) {
for (c = 0; c < e.length; c++) f.putInt16(e.charCodeAt(c));
f.putInt16(0);
}
var h = f.length(),
d = t.length(),
y = new a.util.ByteBuffer();
y.fillWithByte(r, l);
var g = l * Math.ceil(d / l),
m = new a.util.ByteBuffer();
for (c = 0; c < g; c++) m.putByte(t.at(c % d));
var v = l * Math.ceil(h / l),
C = new a.util.ByteBuffer();
for (c = 0; c < v; c++) C.putByte(f.at(c % h));
var E = m;
E.putBuffer(C);
for (var S = Math.ceil(i / u), T = 1; T <= S; T++) {
var I = new a.util.ByteBuffer();
I.putBytes(y.bytes()), I.putBytes(E.bytes());
for (var A = 0; A < n; A++) s.start(), s.update(I.getBytes()), I = s.digest();
var B = new a.util.ByteBuffer();
for (c = 0; c < l; c++) B.putByte(I.at(c % u));
var b = Math.ceil(d / l) + Math.ceil(h / l),
N = new a.util.ByteBuffer();
for (o = 0; o < b; o++) {
var R = new a.util.ByteBuffer(E.getBytes(l)),
w = 511;
for (c = B.length() - 1; c >= 0; c--) w >>= 8, w += B.at(c) + R.at(c), R.setAt(c, 255 & w);
N.putBuffer(R);
}
E = N, p.putBuffer(I);
}
return p.truncate(p.length() - i), p;
}, s.pbe.getCipher = function (e, t, r) {
switch (e) {
case s.oids.pkcs5PBES2:
return s.pbe.getCipherForPBES2(e, t, r);
case s.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:
case s.oids["pbewithSHAAnd40BitRC2-CBC"]:
return s.pbe.getCipherForPKCS12PBE(e, t, r);
default:
var a = new Error("Cannot read encrypted PBE data block. Unsupported OID.");
throw a.oid = e, a.supportedOids = ["pkcs5PBES2", "pbeWithSHAAnd3-KeyTripleDES-CBC", "pbewithSHAAnd40BitRC2-CBC"], a;
}
}, s.pbe.getCipherForPBES2 = function (e, t, r) {
var n,
o = {},
c = [];
if (!i.validate(t, u, o, c)) throw (n = new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.")).errors = c, n;
if ((e = i.derToOid(o.kdfOid)) !== s.oids.pkcs5PBKDF2) throw (n = new Error("Cannot read encrypted private key. Unsupported key derivation function OID.")).oid = e, n.supportedOids = ["pkcs5PBKDF2"], n;
if ((e = i.derToOid(o.encOid)) !== s.oids["aes128-CBC"] && e !== s.oids["aes192-CBC"] && e !== s.oids["aes256-CBC"] && e !== s.oids["des-EDE3-CBC"] && e !== s.oids.desCBC) throw (n = new Error("Cannot read encrypted private key. Unsupported encryption scheme OID.")).oid = e, n.supportedOids = ["aes128-CBC", "aes192-CBC", "aes256-CBC", "des-EDE3-CBC", "desCBC"], n;
var l,
p,
h = o.kdfSalt,
d = a.util.createBuffer(o.kdfIterationCount);
switch (d = d.getInt(d.length() << 3), s.oids[e]) {
case "aes128-CBC":
l = 16, p = a.aes.createDecryptionCipher;
break;
case "aes192-CBC":
l = 24, p = a.aes.createDecryptionCipher;
break;
case "aes256-CBC":
l = 32, p = a.aes.createDecryptionCipher;
break;
case "des-EDE3-CBC":
l = 24, p = a.des.createDecryptionCipher;
break;
case "desCBC":
l = 8, p = a.des.createDecryptionCipher;
}
var y = f(o.prfOid),
g = a.pkcs5.pbkdf2(r, h, d, l, y),
m = o.encIv,
v = p(g);
return v.start(m), v;
}, s.pbe.getCipherForPKCS12PBE = function (e, t, r) {
var n = {},
o = [];
if (!i.validate(t, l, n, o)) throw (y = new Error("Cannot read password-based-encryption algorithm parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.")).errors = o, y;
var c,
u,
p,
h = a.util.createBuffer(n.salt),
d = a.util.createBuffer(n.iterations);
switch (d = d.getInt(d.length() << 3), e) {
case s.oids["pbeWithSHAAnd3-KeyTripleDES-CBC"]:
c = 24, u = 8, p = a.des.startDecrypting;
break;
case s.oids["pbewithSHAAnd40BitRC2-CBC"]:
c = 5, u = 8, p = function (e, t) {
var r = a.rc2.createDecryptionCipher(e, 40);
return r.start(t, null), r;
};
break;
default:
var y;
throw (y = new Error("Cannot read PKCS #12 PBE data block. Unsupported OID.")).oid = e, y;
}
var g = f(n.prfOid),
m = s.pbe.generatePkcs12Key(r, h, 1, d, c, g);
return g.start(), p(m, s.pbe.generatePkcs12Key(r, h, 2, d, u, g));
}, s.pbe.opensslDeriveBytes = function (e, t, r, n) {
if (null == n) {
if (!("md5" in a.md)) throw new Error('"md5" hash algorithm unavailable.');
n = a.md.md5.create();
}
null === t && (t = "");
for (var i = [p(n, e + t)], s = 16, o = 1; s < r; ++o, s += 16) i.push(p(n, i[o - 1] + e + t));
return i.join("").substr(0, r);
};
}, function (e, t, r) {
var a = r(0);
r(4), r(1);
var n = e.exports = a.sha256 = a.sha256 || {};
a.md.sha256 = a.md.algorithms.sha256 = n, n.create = function () {
s || (i = String.fromCharCode(128), i += a.util.fillString(String.fromCharCode(0), 64), o = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], s = !0);
var e = null,
t = a.util.createBuffer(),
r = new Array(64),
n = {
algorithm: "sha256",
blockLength: 64,
digestLength: 32,
messageLength: 0,
fullMessageLength: null,
messageLengthSize: 8,
start: function () {
n.messageLength = 0, n.fullMessageLength = n.messageLength64 = [];
for (var r = n.messageLengthSize / 4, i = 0; i < r; ++i) n.fullMessageLength.push(0);
return t = a.util.createBuffer(), e = {
h0: 1779033703,
h1: 3144134277,
h2: 1013904242,
h3: 2773480762,
h4: 1359893119,
h5: 2600822924,
h6: 528734635,
h7: 1541459225
}, n;
}
};
return n.start(), n.update = function (i, s) {
"utf8" === s && (i = a.util.encodeUtf8(i));
var o = i.length;
n.messageLength += o, o = [o / 4294967296 >>> 0, o >>> 0];
for (var u = n.fullMessageLength.length - 1; u >= 0; --u) n.fullMessageLength[u] += o[1], o[1] = o[0] + (n.fullMessageLength[u] / 4294967296 >>> 0), n.fullMessageLength[u] = n.fullMessageLength[u] >>> 0, o[0] = o[1] / 4294967296 >>> 0;
return t.putBytes(i), c(e, r, t), (t.read > 2048 || 0 === t.length()) && t.compact(), n;
}, n.digest = function () {
var s = a.util.createBuffer();
s.putBytes(t.bytes());
var o,
u = n.fullMessageLength[n.fullMessageLength.length - 1] + n.messageLengthSize & n.blockLength - 1;
s.putBytes(i.substr(0, n.blockLength - u));
for (var l = 8 * n.fullMessageLength[0], p = 0; p < n.fullMessageLength.length - 1; ++p) l += (o = 8 * n.fullMessageLength[p + 1]) / 4294967296 >>> 0, s.putInt32(l >>> 0), l = o >>> 0;
s.putInt32(l);
var f = {
h0: e.h0,
h1: e.h1,
h2: e.h2,
h3: e.h3,
h4: e.h4,
h5: e.h5,
h6: e.h6,
h7: e.h7
};
c(f, r, s);
var h = a.util.createBuffer();
return h.putInt32(f.h0), h.putInt32(f.h1), h.putInt32(f.h2), h.putInt32(f.h3), h.putInt32(f.h4), h.putInt32(f.h5), h.putInt32(f.h6), h.putInt32(f.h7), h;
}, n;
};
var i = null,
s = !1,
o = null;
function c(e, t, r) {
for (var a, n, i, s, c, u, l, p, f, h, d, y, g, m = r.length(); m >= 64;) {
for (c = 0; c < 16; ++c) t[c] = r.getInt32();
for (; c < 64; ++c) a = ((a = t[c - 2]) >>> 17 | a << 15) ^ (a >>> 19 | a << 13) ^ a >>> 10, n = ((n = t[c - 15]) >>> 7 | n << 25) ^ (n >>> 18 | n << 14) ^ n >>> 3, t[c] = a + t[c - 7] + n + t[c - 16] | 0;
for (u = e.h0, l = e.h1, p = e.h2, f = e.h3, h = e.h4, d = e.h5, y = e.h6, g = e.h7, c = 0; c < 64; ++c) i = (u >>> 2 | u << 30) ^ (u >>> 13 | u << 19) ^ (u >>> 22 | u << 10), s = u & l | p & (u ^ l), a = g + ((h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7)) + (y ^ h & (d ^ y)) + o[c] + t[c], g = y, y = d, d = h, h = f + a >>> 0, f = p, p = l, l = u, u = a + (n = i + s) >>> 0;
e.h0 = e.h0 + u | 0, e.h1 = e.h1 + l | 0, e.h2 = e.h2 + p | 0, e.h3 = e.h3 + f | 0, e.h4 = e.h4 + h | 0, e.h5 = e.h5 + d | 0, e.h6 = e.h6 + y | 0, e.h7 = e.h7 + g | 0, m -= 64;
}
}
}, function (e, t, r) {
var a = r(0);
r(1);
var n = null;
!a.util.isNodejs || a.options.usePureJavaScript || process.versions["node-webkit"] || (n = r(16)), (e.exports = a.prng = a.prng || {}).create = function (e) {
for (var t = {
plugin: e,
key: null,
seed: null,
time: null,
reseeds: 0,
generated: 0,
keyBytes: ""
}, r = e.md, i = new Array(32), s = 0; s < 32; ++s) i[s] = r.create();
function o() {
if (t.pools[0].messageLength >= 32) return c();
var e = 32 - t.pools[0].messageLength << 5;
t.collect(t.seedFileSync(e)), c();
}
function c() {
t.reseeds = 4294967295 === t.reseeds ? 0 : t.reseeds + 1;
var e = t.plugin.md.create();
e.update(t.keyBytes);
for (var r = 1, a = 0; a < 32; ++a) t.reseeds % r == 0 && (e.update(t.pools[a].digest().getBytes()), t.pools[a].start()), r <<= 1;
t.keyBytes = e.digest().getBytes(), e.start(), e.update(t.keyBytes);
var n = e.digest().getBytes();
t.key = t.plugin.formatKey(t.keyBytes), t.seed = t.plugin.formatSeed(n), t.generated = 0;
}
function u(e) {
var t = null,
r = a.util.globalScope,
n = r.crypto || r.msCrypto;
n && n.getRandomValues && (t = function (e) {
return n.getRandomValues(e);
});
var i = a.util.createBuffer();
if (t) for (; i.length() < e;) {
var s = Math.max(1, Math.min(e - i.length(), 65536) / 4),
o = new Uint32Array(Math.floor(s));
try {
t(o);
for (var c = 0; c < o.length; ++c) i.putInt32(o[c]);
} catch (e) {
if (!("undefined" != typeof QuotaExceededError && e instanceof QuotaExceededError)) throw e;
}
}
if (i.length() < e) for (var u, l, p, f = Math.floor(65536 * Math.random()); i.length() < e;) {
l = 16807 * (65535 & f), l += (32767 & (u = 16807 * (f >> 16))) << 16, f = 4294967295 & (l = (2147483647 & (l += u >> 15)) + (l >> 31));
for (c = 0; c < 3; ++c) p = f >>> (c << 3), p ^= Math.floor(256 * Math.random()), i.putByte(255 & p);
}
return i.getBytes(e);
}
return t.pools = i, t.pool = 0, t.generate = function (e, r) {
if (!r) return t.generateSync(e);
var n = t.plugin.cipher,
i = t.plugin.increment,
s = t.plugin.formatKey,
o = t.plugin.formatSeed,
u = a.util.createBuffer();
t.key = null, function l(p) {
if (p) return r(p);
if (u.length() >= e) return r(null, u.getBytes(e));
t.generated > 1048575 && (t.key = null);
if (null === t.key) return a.util.nextTick(function () {
!function (e) {
if (t.pools[0].messageLength >= 32) return c(), e();
var r = 32 - t.pools[0].messageLength << 5;
t.seedFile(r, function (r, a) {
if (r) return e(r);
t.collect(a), c(), e();
});
}(l);
});
var f = n(t.key, t.seed);
t.generated += f.length, u.putBytes(f), t.key = s(n(t.key, i(t.seed))), t.seed = o(n(t.key, t.seed)), a.util.setImmediate(l);
}();
}, t.generateSync = function (e) {
var r = t.plugin.cipher,
n = t.plugin.increment,
i = t.plugin.formatKey,
s = t.plugin.formatSeed;
t.key = null;
for (var c = a.util.createBuffer(); c.length() < e;) {
t.generated > 1048575 && (t.key = null), null === t.key && o();
var u = r(t.key, t.seed);
t.generated += u.length, c.putBytes(u), t.key = i(r(t.key, n(t.seed))), t.seed = s(r(t.key, t.seed));
}
return c.getBytes(e);
}, n ? (t.seedFile = function (e, t) {
n.randomBytes(e, function (e, r) {
if (e) return t(e);
t(null, r.toString());
});
}, t.seedFileSync = function (e) {
return n.randomBytes(e).toString();
}) : (t.seedFile = function (e, t) {
try {
t(null, u(e));
} catch (e) {
t(e);
}
}, t.seedFileSync = u), t.collect = function (e) {
for (var r = e.length, a = 0; a < r; ++a) t.pools[t.pool].update(e.substr(a, 1)), t.pool = 31 === t.pool ? 0 : t.pool + 1;
}, t.collectInt = function (e, r) {
for (var a = "", n = 0; n < r; n += 8) a += String.fromCharCode(e >> n & 255);
t.collect(a);
}, t.registerWorker = function (e) {
if (e === self) t.seedFile = function (e, t) {
self.addEventListener("message", function e(r) {
var a = r.data;
a.forge && a.forge.prng && (self.removeEventListener("message", e), t(a.forge.prng.err, a.forge.prng.bytes));
}), self.postMessage({
forge: {
prng: {
needed: e
}
}
});
};else {
e.addEventListener("message", function (r) {
var a = r.data;
a.forge && a.forge.prng && t.seedFile(a.forge.prng.needed, function (t, r) {
e.postMessage({
forge: {
prng: {
err: t,
bytes: r
}
}
});
});
});
}
}, t;
};
}, function (e, t, r) {
var a = r(0);
r(1);
var n = [217, 120, 249, 196, 25, 221, 181, 237, 40, 233, 253, 121, 74, 160, 216, 157, 198, 126, 55, 131, 43, 118, 83, 142, 98, 76, 100, 136, 68, 139, 251, 162, 23, 154, 89, 245, 135, 179, 79, 19, 97, 69, 109, 141, 9, 129, 125, 50, 189, 143, 64, 235, 134, 183, 123, 11, 240, 149, 33, 34, 92, 107, 78, 130, 84, 214, 101, 147, 206, 96, 178, 28, 115, 86, 192, 20, 167, 140, 241, 220, 18, 117, 202, 31, 59, 190, 228, 209, 66, 61, 212, 48, 163, 60, 182, 38, 111, 191, 14, 218, 70, 105, 7, 87, 39, 242, 29, 155, 188, 148, 67, 3, 248, 17, 199, 246, 144, 239, 62, 231, 6, 195, 213, 47, 200, 102, 30, 215, 8, 232, 234, 222, 128, 82, 238, 247, 132, 170, 114, 172, 53, 77, 106, 42, 150, 26, 210, 113, 90, 21, 73, 116, 75, 159, 208, 94, 4, 24, 164, 236, 194, 224, 65, 110, 15, 81, 203, 204, 36, 145, 175, 80, 161, 244, 112, 57, 153, 124, 58, 133, 35, 184, 180, 122, 252, 2, 54, 91, 37, 85, 151, 49, 45, 93, 250, 152, 227, 138, 146, 174, 5, 223, 41, 16, 103, 108, 186, 201, 211, 0, 230, 207, 225, 158, 168, 44, 99, 22, 1, 63, 88, 226, 137, 169, 13, 56, 52, 27, 171, 51, 255, 176, 187, 72, 12, 95, 185, 177, 205, 46, 197, 243, 219, 71, 229, 165, 156, 119, 10, 166, 32, 104, 254, 127, 193, 173],
i = [1, 2, 3, 5],
s = function (e, t) {
return e << t & 65535 | (65535 & e) >> 16 - t;
},
o = function (e, t) {
return (65535 & e) >> t | e << 16 - t & 65535;
};
e.exports = a.rc2 = a.rc2 || {}, a.rc2.expandKey = function (e, t) {
"string" == typeof e && (e = a.util.createBuffer(e)), t = t || 128;
var r,
i = e,
s = e.length(),
o = t,
c = Math.ceil(o / 8),
u = 255 >> (7 & o);
for (r = s; r < 128; r++) i.putByte(n[i.at(r - 1) + i.at(r - s) & 255]);
for (i.setAt(128 - c, n[i.at(128 - c) & u]), r = 127 - c; r >= 0; r--) i.setAt(r, n[i.at(r + 1) ^ i.at(r + c)]);
return i;
};
var c = function (e, t, r) {
var n,
c,
u,
l,
p = !1,
f = null,
h = null,
d = null,
y = [];
for (e = a.rc2.expandKey(e, t), u = 0; u < 64; u++) y.push(e.getInt16Le());
r ? (n = function (e) {
for (u = 0; u < 4; u++) e[u] += y[l] + (e[(u + 3) % 4] & e[(u + 2) % 4]) + (~e[(u + 3) % 4] & e[(u + 1) % 4]), e[u] = s(e[u], i[u]), l++;
}, c = function (e) {
for (u = 0; u < 4; u++) e[u] += y[63 & e[(u + 3) % 4]];
}) : (n = function (e) {
for (u = 3; u >= 0; u--) e[u] = o(e[u], i[u]), e[u] -= y[l] + (e[(u + 3) % 4] & e[(u + 2) % 4]) + (~e[(u + 3) % 4] & e[(u + 1) % 4]), l--;
}, c = function (e) {
for (u = 3; u >= 0; u--) e[u] -= y[63 & e[(u + 3) % 4]];
});
var g = function (e) {
var t = [];
for (u = 0; u < 4; u++) {
var a = f.getInt16Le();
null !== d && (r ? a ^= d.getInt16Le() : d.putInt16Le(a)), t.push(65535 & a);
}
l = r ? 0 : 63;
for (var n = 0; n < e.length; n++) for (var i = 0; i < e[n][0]; i++) e[n][1](t);
for (u = 0; u < 4; u++) null !== d && (r ? d.putInt16Le(t[u]) : t[u] ^= d.getInt16Le()), h.putInt16Le(t[u]);
},
m = null;
return m = {
start: function (e, t) {
e && "string" == typeof e && (e = a.util.createBuffer(e)), p = !1, f = a.util.createBuffer(), h = t || new a.util.createBuffer(), d = e, m.output = h;
},
update: function (e) {
for (p || f.putBuffer(e); f.length() >= 8;) g([[5, n], [1, c], [6, n], [1, c], [5, n]]);
},
finish: function (e) {
var t = !0;
if (r) if (e) t = e(8, f, !r);else {
var a = 8 === f.length() ? 8 : 8 - f.length();
f.fillWithByte(a, a);
}
if (t && (p = !0, m.update()), !r && (t = 0 === f.length())) if (e) t = e(8, h, !r);else {
var n = h.length(),
i = h.at(n - 1);
i > n ? t = !1 : h.truncate(i);
}
return t;
}
};
};
a.rc2.startEncrypting = function (e, t, r) {
var n = a.rc2.createEncryptionCipher(e, 128);
return n.start(t, r), n;
}, a.rc2.createEncryptionCipher = function (e, t) {
return c(e, t, !0);
}, a.rc2.startDecrypting = function (e, t, r) {
var n = a.rc2.createDecryptionCipher(e, 128);
return n.start(t, r), n;
}, a.rc2.createDecryptionCipher = function (e, t) {
return c(e, t, !1);
};
}, function (e, t, r) {
var a = r(0);
r(1), r(2), r(9);
var n = e.exports = a.pkcs1 = a.pkcs1 || {};
function i(e, t, r) {
r || (r = a.md.sha1.create());
for (var n = "", i = Math.ceil(t / r.digestLength), s = 0; s < i; ++s) {
var o = String.fromCharCode(s >> 24 & 255, s >> 16 & 255, s >> 8 & 255, 255 & s);
r.start(), r.update(e + o), n += r.digest().getBytes();
}
return n.substring(0, t);
}
n.encode_rsa_oaep = function (e, t, r) {
var n, s, o, c;
"string" == typeof r ? (n = r, s = arguments[3] || void 0, o = arguments[4] || void 0) : r && (n = r.label || void 0, s = r.seed || void 0, o = r.md || void 0, r.mgf1 && r.mgf1.md && (c = r.mgf1.md)), o ? o.start() : o = a.md.sha1.create(), c || (c = o);
var u = Math.ceil(e.n.bitLength() / 8),
l = u - 2 * o.digestLength - 2;
if (t.length > l) throw (g = new Error("RSAES-OAEP input message length is too long.")).length = t.length, g.maxLength = l, g;
n || (n = ""), o.update(n, "raw");
for (var p = o.digest(), f = "", h = l - t.length, d = 0; d < h; d++) f += "\0";
var y = p.getBytes() + f + "" + t;
if (s) {
if (s.length !== o.digestLength) {
var g;
throw (g = new Error("Invalid RSAES-OAEP seed. The seed length must match the digest length.")).seedLength = s.length, g.digestLength = o.digestLength, g;
}
} else s = a.random.getBytes(o.digestLength);
var m = i(s, u - o.digestLength - 1, c),
v = a.util.xorBytes(y, m, y.length),
C = i(v, o.digestLength, c),
E = a.util.xorBytes(s, C, s.length);
return "\0" + E + v;
}, n.decode_rsa_oaep = function (e, t, r) {
var n, s, o;
"string" == typeof r ? (n = r, s = arguments[3] || void 0) : r && (n = r.label || void 0, s = r.md || void 0, r.mgf1 && r.mgf1.md && (o = r.mgf1.md));
var c = Math.ceil(e.n.bitLength() / 8);
if (t.length !== c) throw (v = new Error("RSAES-OAEP encoded message length is invalid.")).length = t.length, v.expectedLength = c, v;
if (void 0 === s ? s = a.md.sha1.create() : s.start(), o || (o = s), c < 2 * s.digestLength + 2) throw new Error("RSAES-OAEP key is too short for the hash function.");
n || (n = ""), s.update(n, "raw");
for (var u = s.digest().getBytes(), l = t.charAt(0), p = t.substring(1, s.digestLength + 1), f = t.substring(1 + s.digestLength), h = i(f, s.digestLength, o), d = a.util.xorBytes(p, h, p.length), y = i(d, c - s.digestLength - 1, o), g = a.util.xorBytes(f, y, f.length), m = g.substring(0, s.digestLength), v = "\0" !== l, C = 0; C < s.digestLength; ++C) v |= u.charAt(C) !== m.charAt(C);
for (var E = 1, S = s.digestLength, T = s.digestLength; T < g.length; T++) {
var I = g.charCodeAt(T),
A = 1 & I ^ 1,
B = E ? 65534 : 0;
v |= I & B, S += E &= A;
}
if (v || 1 !== g.charCodeAt(S)) throw new Error("Invalid RSAES-OAEP padding.");
return g.substring(S + 1);
};
}, function (e, t, r) {
var a = r(0);
r(1), r(12), r(2), function () {
if (a.prime) e.exports = a.prime;else {
var t = e.exports = a.prime = a.prime || {},
r = a.jsbn.BigInteger,
n = [6, 4, 2, 4, 2, 4, 6, 2],
i = new r(null);
i.fromInt(30);
var s = function (e, t) {
return e | t;
};
t.generateProbablePrime = function (e, t, n) {
"function" == typeof t && (n = t, t = {});
var i = (t = t || {}).algorithm || "PRIMEINC";
"string" == typeof i && (i = {
name: i
}), i.options = i.options || {};
var s = t.prng || a.random,
u = {
nextBytes: function (e) {
for (var t = s.getBytesSync(e.length), r = 0; r < e.length; ++r) e[r] = t.charCodeAt(r);
}
};
if ("PRIMEINC" === i.name) return function (e, t, n, i) {
if ("workers" in n) return function (e, t, n, i) {
if ("undefined" == typeof Worker) return o(e, t, n, i);
var s = c(e, t),
u = n.workers,
l = n.workLoad || 100,
p = 30 * l / 8,
f = n.workerScript || "forge/prime.worker.js";
if (-1 === u) return a.util.estimateCores(function (e, t) {
e && (t = 2), u = t - 1, h();
});
function h() {
u = Math.max(1, u);
for (var a = [], n = 0; n < u; ++n) a[n] = new Worker(f);
for (n = 0; n < u; ++n) a[n].addEventListener("message", h);
var o = !1;
function h(n) {
if (!o) {
0;
var u = n.data;
if (u.found) {
for (var f = 0; f < a.length; ++f) a[f].terminate();
return o = !0, i(null, new r(u.prime, 16));
}
s.bitLength() > e && (s = c(e, t));
var h = s.toString(16);
n.target.postMessage({
hex: h,
workLoad: l
}), s.dAddOffset(p, 0);
}
}
}
h();
}(e, t, n, i);
return o(e, t, n, i);
}(e, u, i.options, n);
throw new Error("Invalid prime generation algorithm: " + i.name);
};
}
function o(e, t, r, i) {
var s = c(e, t),
o = function (e) {
return e <= 100 ? 27 : e <= 150 ? 18 : e <= 200 ? 15 : e <= 250 ? 12 : e <= 300 ? 9 : e <= 350 ? 8 : e <= 400 ? 7 : e <= 500 ? 6 : e <= 600 ? 5 : e <= 800 ? 4 : e <= 1250 ? 3 : 2;
}(s.bitLength());
"millerRabinTests" in r && (o = r.millerRabinTests);
var u = 10;
"maxBlockTime" in r && (u = r.maxBlockTime), function e(t, r, i, s, o, u, l) {
var p = +new Date();
do {
if (t.bitLength() > r && (t = c(r, i)), t.isProbablePrime(o)) return l(null, t);
t.dAddOffset(n[s++ % 8], 0);
} while (u < 0 || +new Date() - p < u);
a.util.setImmediate(function () {
e(t, r, i, s, o, u, l);
});
}(s, e, t, 0, o, u, i);
}
function c(e, t) {
var a = new r(e, t),
n = e - 1;
return a.testBit(n) || a.bitwiseTo(r.ONE.shiftLeft(n), s, a), a.dAddOffset(31 - a.mod(i).byteValue(), 0), a;
}
}();
}, function (e, t, r) {
var a = r(0);
r(3), r(8), r(6), r(29), r(22), r(2), r(11), r(9), r(1), r(17);
var n = a.asn1,
i = a.pki,
s = e.exports = a.pkcs12 = a.pkcs12 || {},
o = {
name: "ContentInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "ContentInfo.contentType",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "contentType"
}, {
name: "ContentInfo.content",
tagClass: n.Class.CONTEXT_SPECIFIC,
constructed: !0,
captureAsn1: "content"
}]
},
c = {
name: "PFX",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PFX.version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "version"
}, o, {
name: "PFX.macData",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
optional: !0,
captureAsn1: "mac",
value: [{
name: "PFX.macData.mac",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PFX.macData.mac.digestAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PFX.macData.mac.digestAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "macAlgorithm"
}, {
name: "PFX.macData.mac.digestAlgorithm.parameters",
tagClass: n.Class.UNIVERSAL,
captureAsn1: "macAlgorithmParameters"
}]
}, {
name: "PFX.macData.mac.digest",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OCTETSTRING,
constructed: !1,
capture: "macDigest"
}]
}, {
name: "PFX.macData.macSalt",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OCTETSTRING,
constructed: !1,
capture: "macSalt"
}, {
name: "PFX.macData.iterations",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
optional: !0,
capture: "macIterations"
}]
}]
},
u = {
name: "SafeBag",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "SafeBag.bagId",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "bagId"
}, {
name: "SafeBag.bagValue",
tagClass: n.Class.CONTEXT_SPECIFIC,
constructed: !0,
captureAsn1: "bagValue"
}, {
name: "SafeBag.bagAttributes",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
constructed: !0,
optional: !0,
capture: "bagAttributes"
}]
},
l = {
name: "Attribute",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "Attribute.attrId",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "oid"
}, {
name: "Attribute.attrValues",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
constructed: !0,
capture: "values"
}]
},
p = {
name: "CertBag",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "CertBag.certId",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "certId"
}, {
name: "CertBag.certValue",
tagClass: n.Class.CONTEXT_SPECIFIC,
constructed: !0,
value: [{
name: "CertBag.certValue[0]",
tagClass: n.Class.UNIVERSAL,
type: n.Class.OCTETSTRING,
constructed: !1,
capture: "cert"
}]
}]
};
function f(e, t, r, a) {
for (var n = [], i = 0; i < e.length; i++) for (var s = 0; s < e[i].safeBags.length; s++) {
var o = e[i].safeBags[s];
void 0 !== a && o.type !== a || (null !== t ? void 0 !== o.attributes[t] && o.attributes[t].indexOf(r) >= 0 && n.push(o) : n.push(o));
}
return n;
}
function h(e) {
if (e.composed || e.constructed) {
for (var t = a.util.createBuffer(), r = 0; r < e.value.length; ++r) t.putBytes(e.value[r].value);
e.composed = e.constructed = !1, e.value = t.getBytes();
}
return e;
}
function d(e, t) {
var r = {},
s = [];
if (!n.validate(e, a.pkcs7.asn1.encryptedDataValidator, r, s)) throw (o = new Error("Cannot read EncryptedContentInfo.")).errors = s, o;
var o,
c = n.derToOid(r.contentType);
if (c !== i.oids.data) throw (o = new Error("PKCS#12 EncryptedContentInfo ContentType is not Data.")).oid = c, o;
c = n.derToOid(r.encAlgorithm);
var u = i.pbe.getCipher(c, r.encParameter, t),
l = h(r.encryptedContentAsn1),
p = a.util.createBuffer(l.value);
if (u.update(p), !u.finish()) throw new Error("Failed to decrypt PKCS#12 SafeContents.");
return u.output.getBytes();
}
function y(e, t, r) {
if (!t && 0 === e.length) return [];
if ((e = n.fromDer(e, t)).tagClass !== n.Class.UNIVERSAL || e.type !== n.Type.SEQUENCE || !0 !== e.constructed) throw new Error("PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag.");
for (var a = [], s = 0; s < e.value.length; s++) {
var o = e.value[s],
c = {},
l = [];
if (!n.validate(o, u, c, l)) throw (m = new Error("Cannot read SafeBag.")).errors = l, m;
var f,
h,
d = {
type: n.derToOid(c.bagId),
attributes: g(c.bagAttributes)
};
a.push(d);
var y = c.bagValue.value[0];
switch (d.type) {
case i.oids.pkcs8ShroudedKeyBag:
if (null === (y = i.decryptPrivateKeyInfo(y, r))) throw new Error("Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?");
case i.oids.keyBag:
try {
d.key = i.privateKeyFromAsn1(y);
} catch (e) {
d.key = null, d.asn1 = y;
}
continue;
case i.oids.certBag:
f = p, h = function () {
if (n.derToOid(c.certId) !== i.oids.x509Certificate) {
var e = new Error("Unsupported certificate type, only X.509 supported.");
throw e.oid = n.derToOid(c.certId), e;
}
var r = n.fromDer(c.cert, t);
try {
d.cert = i.certificateFromAsn1(r, !0);
} catch (e) {
d.cert = null, d.asn1 = r;
}
};
break;
default:
var m;
throw (m = new Error("Unsupported PKCS#12 SafeBag type.")).oid = d.type, m;
}
if (void 0 !== f && !n.validate(y, f, c, l)) throw (m = new Error("Cannot read PKCS#12 " + f.name)).errors = l, m;
h();
}
return a;
}
function g(e) {
var t = {};
if (void 0 !== e) for (var r = 0; r < e.length; ++r) {
var a = {},
s = [];
if (!n.validate(e[r], l, a, s)) {
var o = new Error("Cannot read PKCS#12 BagAttribute.");
throw o.errors = s, o;
}
var c = n.derToOid(a.oid);
if (void 0 !== i.oids[c]) {
t[i.oids[c]] = [];
for (var u = 0; u < a.values.length; ++u) t[i.oids[c]].push(a.values[u].value);
}
}
return t;
}
s.pkcs12FromAsn1 = function (e, t, r) {
"string" == typeof t ? (r = t, t = !0) : void 0 === t && (t = !0);
var u = {};
if (!n.validate(e, c, u, [])) throw (l = new Error("Cannot read PKCS#12 PFX. ASN.1 object is not an PKCS#12 PFX.")).errors = l, l;
var l,
p = {
version: u.version.charCodeAt(0),
safeContents: [],
getBags: function (e) {
var t,
r = {};
return "localKeyId" in e ? t = e.localKeyId : "localKeyIdHex" in e && (t = a.util.hexToBytes(e.localKeyIdHex)), void 0 === t && !("friendlyName" in e) && "bagType" in e && (r[e.bagType] = f(p.safeContents, null, null, e.bagType)), void 0 !== t && (r.localKeyId = f(p.safeContents, "localKeyId", t, e.bagType)), "friendlyName" in e && (r.friendlyName = f(p.safeContents, "friendlyName", e.friendlyName, e.bagType)), r;
},
getBagsByFriendlyName: function (e, t) {
return f(p.safeContents, "friendlyName", e, t);
},
getBagsByLocalKeyId: function (e, t) {
return f(p.safeContents, "localKeyId", e, t);
}
};
if (3 !== u.version.charCodeAt(0)) throw (l = new Error("PKCS#12 PFX of version other than 3 not supported.")).version = u.version.charCodeAt(0), l;
if (n.derToOid(u.contentType) !== i.oids.data) throw (l = new Error("Only PKCS#12 PFX in password integrity mode supported.")).oid = n.derToOid(u.contentType), l;
var g = u.content.value[0];
if (g.tagClass !== n.Class.UNIVERSAL || g.type !== n.Type.OCTETSTRING) throw new Error("PKCS#12 authSafe content data is not an OCTET STRING.");
if (g = h(g), u.mac) {
var m = null,
v = 0,
C = n.derToOid(u.macAlgorithm);
switch (C) {
case i.oids.sha1:
m = a.md.sha1.create(), v = 20;
break;
case i.oids.sha256:
m = a.md.sha256.create(), v = 32;
break;
case i.oids.sha384:
m = a.md.sha384.create(), v = 48;
break;
case i.oids.sha512:
m = a.md.sha512.create(), v = 64;
break;
case i.oids.md5:
m = a.md.md5.create(), v = 16;
}
if (null === m) throw new Error("PKCS#12 uses unsupported MAC algorithm: " + C);
var E = new a.util.ByteBuffer(u.macSalt),
S = "macIterations" in u ? parseInt(a.util.bytesToHex(u.macIterations), 16) : 1,
T = s.generateKey(r, E, 3, S, v, m),
I = a.hmac.create();
if (I.start(m, T), I.update(g.value), I.getMac().getBytes() !== u.macDigest) throw new Error("PKCS#12 MAC could not be verified. Invalid password?");
}
return function (e, t, r, a) {
if ((t = n.fromDer(t, r)).tagClass !== n.Class.UNIVERSAL || t.type !== n.Type.SEQUENCE || !0 !== t.constructed) throw new Error("PKCS#12 AuthenticatedSafe expected to be a SEQUENCE OF ContentInfo");
for (var s = 0; s < t.value.length; s++) {
var c = t.value[s],
u = {},
l = [];
if (!n.validate(c, o, u, l)) throw (m = new Error("Cannot read ContentInfo.")).errors = l, m;
var p = {
encrypted: !1
},
f = null,
g = u.content.value[0];
switch (n.derToOid(u.contentType)) {
case i.oids.data:
if (g.tagClass !== n.Class.UNIVERSAL || g.type !== n.Type.OCTETSTRING) throw new Error("PKCS#12 SafeContents Data is not an OCTET STRING.");
f = h(g).value;
break;
case i.oids.encryptedData:
f = d(g, a), p.encrypted = !0;
break;
default:
var m;
throw (m = new Error("Unsupported PKCS#12 contentType.")).contentType = n.derToOid(u.contentType), m;
}
p.safeBags = y(f, r, a), e.safeContents.push(p);
}
}(p, g.value, t, r), p;
}, s.toPkcs12Asn1 = function (e, t, r, o) {
(o = o || {}).saltSize = o.saltSize || 8, o.count = o.count || 2048, o.algorithm = o.algorithm || o.encAlgorithm || "aes128", "useMac" in o || (o.useMac = !0), "localKeyId" in o || (o.localKeyId = null), "generateLocalKeyId" in o || (o.generateLocalKeyId = !0);
var c,
u = o.localKeyId;
if (null !== u) u = a.util.hexToBytes(u);else if (o.generateLocalKeyId) if (t) {
var l = a.util.isArray(t) ? t[0] : t;
"string" == typeof l && (l = i.certificateFromPem(l)), (N = a.md.sha1.create()).update(n.toDer(i.certificateToAsn1(l)).getBytes()), u = N.digest().getBytes();
} else u = a.random.getBytes(20);
var p = [];
null !== u && p.push(n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.localKeyId).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, u)])])), "friendlyName" in o && p.push(n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.friendlyName).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, [n.create(n.Class.UNIVERSAL, n.Type.BMPSTRING, !1, o.friendlyName)])])), p.length > 0 && (c = n.create(n.Class.UNIVERSAL, n.Type.SET, !0, p));
var f = [],
h = [];
null !== t && (h = a.util.isArray(t) ? t : [t]);
for (var d = [], y = 0; y < h.length; ++y) {
"string" == typeof (t = h[y]) && (t = i.certificateFromPem(t));
var g = 0 === y ? c : void 0,
m = i.certificateToAsn1(t),
v = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.certBag).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.x509Certificate).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, n.toDer(m).getBytes())])])]), g]);
d.push(v);
}
if (d.length > 0) {
var C = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, d),
E = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.data).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, n.toDer(C).getBytes())])]);
f.push(E);
}
var S = null;
if (null !== e) {
var T = i.wrapRsaPrivateKey(i.privateKeyToAsn1(e));
S = null === r ? n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.keyBag).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [T]), c]) : n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.pkcs8ShroudedKeyBag).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [i.encryptPrivateKeyInfo(T, r, o)]), c]);
var I = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [S]),
A = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.data).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, n.toDer(I).getBytes())])]);
f.push(A);
}
var B,
b = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, f);
if (o.useMac) {
var N = a.md.sha1.create(),
R = new a.util.ByteBuffer(a.random.getBytes(o.saltSize)),
w = o.count,
k = (e = s.generateKey(r, R, 3, w, 20), a.hmac.create());
k.start(N, e), k.update(n.toDer(b).getBytes());
var _ = k.getMac();
B = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.sha1).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")]), n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, _.getBytes())]), n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, R.getBytes()), n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(w).getBytes())]);
}
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(3).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(i.oids.data).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, n.toDer(b).getBytes())])]), B]);
}, s.generateKey = a.pbe.generatePkcs12Key;
}, function (e, t, r) {
var a = r(0);
r(3), r(1);
var n = a.asn1,
i = e.exports = a.pkcs7asn1 = a.pkcs7asn1 || {};
a.pkcs7 = a.pkcs7 || {}, a.pkcs7.asn1 = i;
var s = {
name: "ContentInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "ContentInfo.ContentType",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "contentType"
}, {
name: "ContentInfo.content",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
constructed: !0,
optional: !0,
captureAsn1: "content"
}]
};
i.contentInfoValidator = s;
var o = {
name: "EncryptedContentInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "EncryptedContentInfo.contentType",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "contentType"
}, {
name: "EncryptedContentInfo.contentEncryptionAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "EncryptedContentInfo.contentEncryptionAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "encAlgorithm"
}, {
name: "EncryptedContentInfo.contentEncryptionAlgorithm.parameter",
tagClass: n.Class.UNIVERSAL,
captureAsn1: "encParameter"
}]
}, {
name: "EncryptedContentInfo.encryptedContent",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
capture: "encryptedContent",
captureAsn1: "encryptedContentAsn1"
}]
};
i.envelopedDataValidator = {
name: "EnvelopedData",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "EnvelopedData.Version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "version"
}, {
name: "EnvelopedData.RecipientInfos",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
constructed: !0,
captureAsn1: "recipientInfos"
}].concat(o)
}, i.encryptedDataValidator = {
name: "EncryptedData",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "EncryptedData.Version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "version"
}].concat(o)
};
var c = {
name: "SignerInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "SignerInfo.version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1
}, {
name: "SignerInfo.issuerAndSerialNumber",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "SignerInfo.issuerAndSerialNumber.issuer",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "issuer"
}, {
name: "SignerInfo.issuerAndSerialNumber.serialNumber",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "serial"
}]
}, {
name: "SignerInfo.digestAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "SignerInfo.digestAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "digestAlgorithm"
}, {
name: "SignerInfo.digestAlgorithm.parameter",
tagClass: n.Class.UNIVERSAL,
constructed: !1,
captureAsn1: "digestParameter",
optional: !0
}]
}, {
name: "SignerInfo.authenticatedAttributes",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
constructed: !0,
optional: !0,
capture: "authenticatedAttributes"
}, {
name: "SignerInfo.digestEncryptionAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
capture: "signatureAlgorithm"
}, {
name: "SignerInfo.encryptedDigest",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OCTETSTRING,
constructed: !1,
capture: "signature"
}, {
name: "SignerInfo.unauthenticatedAttributes",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 1,
constructed: !0,
optional: !0,
capture: "unauthenticatedAttributes"
}]
};
i.signedDataValidator = {
name: "SignedData",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "SignedData.Version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "version"
}, {
name: "SignedData.DigestAlgorithms",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
constructed: !0,
captureAsn1: "digestAlgorithms"
}, s, {
name: "SignedData.Certificates",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 0,
optional: !0,
captureAsn1: "certificates"
}, {
name: "SignedData.CertificateRevocationLists",
tagClass: n.Class.CONTEXT_SPECIFIC,
type: 1,
optional: !0,
captureAsn1: "crls"
}, {
name: "SignedData.SignerInfos",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SET,
capture: "signerInfos",
optional: !0,
value: [c]
}]
}, i.recipientInfoValidator = {
name: "RecipientInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "RecipientInfo.version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "version"
}, {
name: "RecipientInfo.issuerAndSerial",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "RecipientInfo.issuerAndSerial.issuer",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "issuer"
}, {
name: "RecipientInfo.issuerAndSerial.serialNumber",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "serial"
}]
}, {
name: "RecipientInfo.keyEncryptionAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "RecipientInfo.keyEncryptionAlgorithm.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "encAlgorithm"
}, {
name: "RecipientInfo.keyEncryptionAlgorithm.parameter",
tagClass: n.Class.UNIVERSAL,
constructed: !1,
captureAsn1: "encParameter",
optional: !0
}]
}, {
name: "RecipientInfo.encryptedKey",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OCTETSTRING,
constructed: !1,
capture: "encKey"
}]
};
}, function (e, t, r) {
var a = r(0);
r(1), a.mgf = a.mgf || {}, (e.exports = a.mgf.mgf1 = a.mgf1 = a.mgf1 || {}).create = function (e) {
return {
generate: function (t, r) {
for (var n = new a.util.ByteBuffer(), i = Math.ceil(r / e.digestLength), s = 0; s < i; s++) {
var o = new a.util.ByteBuffer();
o.putInt32(s), e.start(), e.update(t + o.getBytes()), n.putBuffer(e.digest());
}
return n.truncate(n.length() - r), n.getBytes();
}
};
};
}, function (e, t, r) {
var a = r(0);
r(4), r(1);
var n = e.exports = a.sha512 = a.sha512 || {};
a.md.sha512 = a.md.algorithms.sha512 = n;
var i = a.sha384 = a.sha512.sha384 = a.sha512.sha384 || {};
i.create = function () {
return n.create("SHA-384");
}, a.md.sha384 = a.md.algorithms.sha384 = i, a.sha512.sha256 = a.sha512.sha256 || {
create: function () {
return n.create("SHA-512/256");
}
}, a.md["sha512/256"] = a.md.algorithms["sha512/256"] = a.sha512.sha256, a.sha512.sha224 = a.sha512.sha224 || {
create: function () {
return n.create("SHA-512/224");
}
}, a.md["sha512/224"] = a.md.algorithms["sha512/224"] = a.sha512.sha224, n.create = function (e) {
if (o || (s = String.fromCharCode(128), s += a.util.fillString(String.fromCharCode(0), 128), c = [[1116352408, 3609767458], [1899447441, 602891725], [3049323471, 3964484399], [3921009573, 2173295548], [961987163, 4081628472], [1508970993, 3053834265], [2453635748, 2937671579], [2870763221, 3664609560], [3624381080, 2734883394], [310598401, 1164996542], [607225278, 1323610764], [1426881987, 3590304994], [1925078388, 4068182383], [2162078206, 991336113], [2614888103, 633803317], [3248222580, 3479774868], [3835390401, 2666613458], [4022224774, 944711139], [264347078, 2341262773], [604807628, 2007800933], [770255983, 1495990901], [1249150122, 1856431235], [1555081692, 3175218132], [1996064986, 2198950837], [2554220882, 3999719339], [2821834349, 766784016], [2952996808, 2566594879], [3210313671, 3203337956], [3336571891, 1034457026], [3584528711, 2466948901], [113926993, 3758326383], [338241895, 168717936], [666307205, 1188179964], [773529912, 1546045734], [1294757372, 1522805485], [1396182291, 2643833823], [1695183700, 2343527390], [1986661051, 1014477480], [2177026350, 1206759142], [2456956037, 344077627], [2730485921, 1290863460], [2820302411, 3158454273], [3259730800, 3505952657], [3345764771, 106217008], [3516065817, 3606008344], [3600352804, 1432725776], [4094571909, 1467031594], [275423344, 851169720], [430227734, 3100823752], [506948616, 1363258195], [659060556, 3750685593], [883997877, 3785050280], [958139571, 3318307427], [1322822218, 3812723403], [1537002063, 2003034995], [1747873779, 3602036899], [1955562222, 1575990012], [2024104815, 1125592928], [2227730452, 2716904306], [2361852424, 442776044], [2428436474, 593698344], [2756734187, 3733110249], [3204031479, 2999351573], [3329325298, 3815920427], [3391569614, 3928383900], [3515267271, 566280711], [3940187606, 3454069534], [4118630271, 4000239992], [116418474, 1914138554], [174292421, 2731055270], [289380356, 3203993006], [460393269, 320620315], [685471733, 587496836], [852142971, 1086792851], [1017036298, 365543100], [1126000580, 2618297676], [1288033470, 3409855158], [1501505948, 4234509866], [1607167915, 987167468], [1816402316, 1246189591]], (u = {})["SHA-512"] = [[1779033703, 4089235720], [3144134277, 2227873595], [1013904242, 4271175723], [2773480762, 1595750129], [1359893119, 2917565137], [2600822924, 725511199], [528734635, 4215389547], [1541459225, 327033209]], u["SHA-384"] = [[3418070365, 3238371032], [1654270250, 914150663], [2438529370, 812702999], [355462360, 4144912697], [1731405415, 4290775857], [2394180231, 1750603025], [3675008525, 1694076839], [1203062813, 3204075428]], u["SHA-512/256"] = [[573645204, 4230739756], [2673172387, 3360449730], [596883563, 1867755857], [2520282905, 1497426621], [2519219938, 2827943907], [3193839141, 1401305490], [721525244, 746961066], [246885852, 2177182882]], u["SHA-512/224"] = [[2352822216, 424955298], [1944164710, 2312950998], [502970286, 855612546], [1738396948, 1479516111], [258812777, 2077511080], [2011393907, 79989058], [1067287976, 1780299464], [286451373, 2446758561]], o = !0), void 0 === e && (e = "SHA-512"), !(e in u)) throw new Error("Invalid SHA-512 algorithm: " + e);
for (var t = u[e], r = null, n = a.util.createBuffer(), i = new Array(80), p = 0; p < 80; ++p) i[p] = new Array(2);
var f = 64;
switch (e) {
case "SHA-384":
f = 48;
break;
case "SHA-512/256":
f = 32;
break;
case "SHA-512/224":
f = 28;
}
var h = {
algorithm: e.replace("-", "").toLowerCase(),
blockLength: 128,
digestLength: f,
messageLength: 0,
fullMessageLength: null,
messageLengthSize: 16,
start: function () {
h.messageLength = 0, h.fullMessageLength = h.messageLength128 = [];
for (var e = h.messageLengthSize / 4, i = 0; i < e; ++i) h.fullMessageLength.push(0);
n = a.util.createBuffer(), r = new Array(t.length);
for (i = 0; i < t.length; ++i) r[i] = t[i].slice(0);
return h;
}
};
return h.start(), h.update = function (e, t) {
"utf8" === t && (e = a.util.encodeUtf8(e));
var s = e.length;
h.messageLength += s, s = [s / 4294967296 >>> 0, s >>> 0];
for (var o = h.fullMessageLength.length - 1; o >= 0; --o) h.fullMessageLength[o] += s[1], s[1] = s[0] + (h.fullMessageLength[o] / 4294967296 >>> 0), h.fullMessageLength[o] = h.fullMessageLength[o] >>> 0, s[0] = s[1] / 4294967296 >>> 0;
return n.putBytes(e), l(r, i, n), (n.read > 2048 || 0 === n.length()) && n.compact(), h;
}, h.digest = function () {
var t = a.util.createBuffer();
t.putBytes(n.bytes());
var o,
c = h.fullMessageLength[h.fullMessageLength.length - 1] + h.messageLengthSize & h.blockLength - 1;
t.putBytes(s.substr(0, h.blockLength - c));
for (var u = 8 * h.fullMessageLength[0], p = 0; p < h.fullMessageLength.length - 1; ++p) u += (o = 8 * h.fullMessageLength[p + 1]) / 4294967296 >>> 0, t.putInt32(u >>> 0), u = o >>> 0;
t.putInt32(u);
var f = new Array(r.length);
for (p = 0; p < r.length; ++p) f[p] = r[p].slice(0);
l(f, i, t);
var d,
y = a.util.createBuffer();
d = "SHA-512" === e ? f.length : "SHA-384" === e ? f.length - 2 : f.length - 4;
for (p = 0; p < d; ++p) y.putInt32(f[p][0]), p === d - 1 && "SHA-512/224" === e || y.putInt32(f[p][1]);
return y;
}, h;
};
var s = null,
o = !1,
c = null,
u = null;
function l(e, t, r) {
for (var a, n, i, s, o, u, l, p, f, h, d, y, g, m, v, C, E, S, T, I, A, B, b, N, R, w, k, _, L, U, D, P, V, O = r.length(); O >= 128;) {
for (k = 0; k < 16; ++k) t[k][0] = r.getInt32() >>> 0, t[k][1] = r.getInt32() >>> 0;
for (; k < 80; ++k) a = (((_ = (U = t[k - 2])[0]) >>> 19 | (L = U[1]) << 13) ^ (L >>> 29 | _ << 3) ^ _ >>> 6) >>> 0, n = ((_ << 13 | L >>> 19) ^ (L << 3 | _ >>> 29) ^ (_ << 26 | L >>> 6)) >>> 0, i = (((_ = (P = t[k - 15])[0]) >>> 1 | (L = P[1]) << 31) ^ (_ >>> 8 | L << 24) ^ _ >>> 7) >>> 0, s = ((_ << 31 | L >>> 1) ^ (_ << 24 | L >>> 8) ^ (_ << 25 | L >>> 7)) >>> 0, D = t[k - 7], V = t[k - 16], L = n + D[1] + s + V[1], t[k][0] = a + D[0] + i + V[0] + (L / 4294967296 >>> 0) >>> 0, t[k][1] = L >>> 0;
for (d = e[0][0], y = e[0][1], g = e[1][0], m = e[1][1], v = e[2][0], C = e[2][1], E = e[3][0], S = e[3][1], T = e[4][0], I = e[4][1], A = e[5][0], B = e[5][1], b = e[6][0], N = e[6][1], R = e[7][0], w = e[7][1], k = 0; k < 80; ++k) l = ((T >>> 14 | I << 18) ^ (T >>> 18 | I << 14) ^ (I >>> 9 | T << 23)) >>> 0, p = (b ^ T & (A ^ b)) >>> 0, o = ((d >>> 28 | y << 4) ^ (y >>> 2 | d << 30) ^ (y >>> 7 | d << 25)) >>> 0, u = ((d << 4 | y >>> 28) ^ (y << 30 | d >>> 2) ^ (y << 25 | d >>> 7)) >>> 0, f = (d & g | v & (d ^ g)) >>> 0, h = (y & m | C & (y ^ m)) >>> 0, L = w + (((T << 18 | I >>> 14) ^ (T << 14 | I >>> 18) ^ (I << 23 | T >>> 9)) >>> 0) + ((N ^ I & (B ^ N)) >>> 0) + c[k][1] + t[k][1], a = R + l + p + c[k][0] + t[k][0] + (L / 4294967296 >>> 0) >>> 0, n = L >>> 0, i = o + f + ((L = u + h) / 4294967296 >>> 0) >>> 0, s = L >>> 0, R = b, w = N, b = A, N = B, A = T, B = I, T = E + a + ((L = S + n) / 4294967296 >>> 0) >>> 0, I = L >>> 0, E = v, S = C, v = g, C = m, g = d, m = y, d = a + i + ((L = n + s) / 4294967296 >>> 0) >>> 0, y = L >>> 0;
L = e[0][1] + y, e[0][0] = e[0][0] + d + (L / 4294967296 >>> 0) >>> 0, e[0][1] = L >>> 0, L = e[1][1] + m, e[1][0] = e[1][0] + g + (L / 4294967296 >>> 0) >>> 0, e[1][1] = L >>> 0, L = e[2][1] + C, e[2][0] = e[2][0] + v + (L / 4294967296 >>> 0) >>> 0, e[2][1] = L >>> 0, L = e[3][1] + S, e[3][0] = e[3][0] + E + (L / 4294967296 >>> 0) >>> 0, e[3][1] = L >>> 0, L = e[4][1] + I, e[4][0] = e[4][0] + T + (L / 4294967296 >>> 0) >>> 0, e[4][1] = L >>> 0, L = e[5][1] + B, e[5][0] = e[5][0] + A + (L / 4294967296 >>> 0) >>> 0, e[5][1] = L >>> 0, L = e[6][1] + N, e[6][0] = e[6][0] + b + (L / 4294967296 >>> 0) >>> 0, e[6][1] = L >>> 0, L = e[7][1] + w, e[7][0] = e[7][0] + R + (L / 4294967296 >>> 0) >>> 0, e[7][1] = L >>> 0, O -= 128;
}
}
}, function (e, t, r) {
e.exports = r(33);
}, function (e, t, r) {
e.exports = r(0), r(5), r(36), r(3), r(13), r(10), r(38), r(8), r(40), r(41), r(42), r(30), r(15), r(7), r(26), r(28), r(43), r(21), r(27), r(24), r(18), r(2), r(25), r(44), r(20), r(1);
}, function (e, t) {
var r;
r = function () {
return this;
}();
try {
r = r || new Function("return this")();
} catch (e) {
"object" == typeof window && (r = window);
}
e.exports = r;
}, function (e, t) {
var r = {};
e.exports = r;
var a = {};
r.encode = function (e, t, r) {
if ("string" != typeof t) throw new TypeError('"alphabet" must be a string.');
if (void 0 !== r && "number" != typeof r) throw new TypeError('"maxline" must be a number.');
var a = "";
if (e instanceof Uint8Array) {
var n = 0,
i = t.length,
s = t.charAt(0),
o = [0];
for (n = 0; n < e.length; ++n) {
for (var c = 0, u = e[n]; c < o.length; ++c) u += o[c] << 8, o[c] = u % i, u = u / i | 0;
for (; u > 0;) o.push(u % i), u = u / i | 0;
}
for (n = 0; 0 === e[n] && n < e.length - 1; ++n) a += s;
for (n = o.length - 1; n >= 0; --n) a += t[o[n]];
} else a = function (e, t) {
var r = 0,
a = t.length,
n = t.charAt(0),
i = [0];
for (r = 0; r < e.length(); ++r) {
for (var s = 0, o = e.at(r); s < i.length; ++s) o += i[s] << 8, i[s] = o % a, o = o / a | 0;
for (; o > 0;) i.push(o % a), o = o / a | 0;
}
var c = "";
for (r = 0; 0 === e.at(r) && r < e.length() - 1; ++r) c += n;
for (r = i.length - 1; r >= 0; --r) c += t[i[r]];
return c;
}(e, t);
if (r) {
var l = new RegExp(".{1," + r + "}", "g");
a = a.match(l).join("\r\n");
}
return a;
}, r.decode = function (e, t) {
if ("string" != typeof e) throw new TypeError('"input" must be a string.');
if ("string" != typeof t) throw new TypeError('"alphabet" must be a string.');
var r = a[t];
if (!r) {
r = a[t] = [];
for (var n = 0; n < t.length; ++n) r[t.charCodeAt(n)] = n;
}
e = e.replace(/\s/g, "");
var i = t.length,
s = t.charAt(0),
o = [0];
for (n = 0; n < e.length; n++) {
var c = r[e.charCodeAt(n)];
if (void 0 === c) return;
for (var u = 0, l = c; u < o.length; ++u) l += o[u] * i, o[u] = 255 & l, l >>= 8;
for (; l > 0;) o.push(255 & l), l >>= 8;
}
for (var p = 0; e[p] === s && p < e.length - 1; ++p) o.push(0);
return "undefined" != typeof Buffer ? Buffer.from(o.reverse()) : new Uint8Array(o.reverse());
};
}, function (e, t, r) {
var a = r(0);
r(5), r(20);
var n = e.exports = a.tls;
function i(e, t, r) {
var i = t.entity === a.tls.ConnectionEnd.client;
e.read.cipherState = {
init: !1,
cipher: a.cipher.createDecipher("AES-CBC", i ? r.keys.server_write_key : r.keys.client_write_key),
iv: i ? r.keys.server_write_IV : r.keys.client_write_IV
}, e.write.cipherState = {
init: !1,
cipher: a.cipher.createCipher("AES-CBC", i ? r.keys.client_write_key : r.keys.server_write_key),
iv: i ? r.keys.client_write_IV : r.keys.server_write_IV
}, e.read.cipherFunction = u, e.write.cipherFunction = s, e.read.macLength = e.write.macLength = r.mac_length, e.read.macFunction = e.write.macFunction = n.hmac_sha1;
}
function s(e, t) {
var r,
i = !1,
s = t.macFunction(t.macKey, t.sequenceNumber, e);
e.fragment.putBytes(s), t.updateSequenceNumber(), r = e.version.minor === n.Versions.TLS_1_0.minor ? t.cipherState.init ? null : t.cipherState.iv : a.random.getBytesSync(16), t.cipherState.init = !0;
var c = t.cipherState.cipher;
return c.start({
iv: r
}), e.version.minor >= n.Versions.TLS_1_1.minor && c.output.putBytes(r), c.update(e.fragment), c.finish(o) && (e.fragment = c.output, e.length = e.fragment.length(), i = !0), i;
}
function o(e, t, r) {
if (!r) {
var a = e - t.length() % e;
t.fillWithByte(a - 1, a);
}
return !0;
}
function c(e, t, r) {
var a = !0;
if (r) {
for (var n = t.length(), i = t.last(), s = n - 1 - i; s < n - 1; ++s) a = a && t.at(s) == i;
a && t.truncate(i + 1);
}
return a;
}
function u(e, t) {
var r,
i = !1;
r = e.version.minor === n.Versions.TLS_1_0.minor ? t.cipherState.init ? null : t.cipherState.iv : e.fragment.getBytes(16), t.cipherState.init = !0;
var s = t.cipherState.cipher;
s.start({
iv: r
}), s.update(e.fragment), i = s.finish(c);
var o = t.macLength,
u = a.random.getBytesSync(o),
l = s.output.length();
l >= o ? (e.fragment = s.output.getBytes(l - o), u = s.output.getBytes(o)) : e.fragment = s.output.getBytes(), e.fragment = a.util.createBuffer(e.fragment), e.length = e.fragment.length();
var p = t.macFunction(t.macKey, t.sequenceNumber, e);
return t.updateSequenceNumber(), i = function (e, t, r) {
var n = a.hmac.create();
return n.start("SHA1", e), n.update(t), t = n.digest().getBytes(), n.start(null, null), n.update(r), r = n.digest().getBytes(), t === r;
}(t.macKey, u, p) && i;
}
n.CipherSuites.TLS_RSA_WITH_AES_128_CBC_SHA = {
id: [0, 47],
name: "TLS_RSA_WITH_AES_128_CBC_SHA",
initSecurityParameters: function (e) {
e.bulk_cipher_algorithm = n.BulkCipherAlgorithm.aes, e.cipher_type = n.CipherType.block, e.enc_key_length = 16, e.block_length = 16, e.fixed_iv_length = 16, e.record_iv_length = 16, e.mac_algorithm = n.MACAlgorithm.hmac_sha1, e.mac_length = 20, e.mac_key_length = 20;
},
initConnectionState: i
}, n.CipherSuites.TLS_RSA_WITH_AES_256_CBC_SHA = {
id: [0, 53],
name: "TLS_RSA_WITH_AES_256_CBC_SHA",
initSecurityParameters: function (e) {
e.bulk_cipher_algorithm = n.BulkCipherAlgorithm.aes, e.cipher_type = n.CipherType.block, e.enc_key_length = 32, e.block_length = 16, e.fixed_iv_length = 16, e.record_iv_length = 16, e.mac_algorithm = n.MACAlgorithm.hmac_sha1, e.mac_length = 20, e.mac_key_length = 20;
},
initConnectionState: i
};
}, function (e, t, r) {
var a = r(0);
r(30), e.exports = a.mgf = a.mgf || {}, a.mgf.mgf1 = a.mgf1;
}, function (e, t, r) {
var a = r(0);
r(12), r(2), r(31), r(1);
var n = r(39),
i = n.publicKeyValidator,
s = n.privateKeyValidator;
if (void 0 === o) var o = a.jsbn.BigInteger;
var c = a.util.ByteBuffer,
u = "undefined" == typeof Buffer ? Uint8Array : Buffer;
a.pki = a.pki || {}, e.exports = a.pki.ed25519 = a.ed25519 = a.ed25519 || {};
var l = a.ed25519;
function p(e) {
var t = e.message;
if (t instanceof Uint8Array || t instanceof u) return t;
var r = e.encoding;
if (void 0 === t) {
if (!e.md) throw new TypeError('"options.message" or "options.md" not specified.');
t = e.md.digest().getBytes(), r = "binary";
}
if ("string" == typeof t && !r) throw new TypeError('"options.encoding" must be "binary" or "utf8".');
if ("string" == typeof t) {
if ("undefined" != typeof Buffer) return Buffer.from(t, r);
t = new c(t, r);
} else if (!(t instanceof c)) throw new TypeError('"options.message" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a string with "options.encoding" specifying its encoding.');
for (var a = new u(t.length()), n = 0; n < a.length; ++n) a[n] = t.at(n);
return a;
}
l.constants = {}, l.constants.PUBLIC_KEY_BYTE_LENGTH = 32, l.constants.PRIVATE_KEY_BYTE_LENGTH = 64, l.constants.SEED_BYTE_LENGTH = 32, l.constants.SIGN_BYTE_LENGTH = 64, l.constants.HASH_BYTE_LENGTH = 64, l.generateKeyPair = function (e) {
var t = (e = e || {}).seed;
if (void 0 === t) t = a.random.getBytesSync(l.constants.SEED_BYTE_LENGTH);else if ("string" == typeof t) {
if (t.length !== l.constants.SEED_BYTE_LENGTH) throw new TypeError('"seed" must be ' + l.constants.SEED_BYTE_LENGTH + " bytes in length.");
} else if (!(t instanceof Uint8Array)) throw new TypeError('"seed" must be a node.js Buffer, Uint8Array, or a binary string.');
t = p({
message: t,
encoding: "binary"
});
for (var r = new u(l.constants.PUBLIC_KEY_BYTE_LENGTH), n = new u(l.constants.PRIVATE_KEY_BYTE_LENGTH), i = 0; i < 32; ++i) n[i] = t[i];
return function (e, t) {
var r,
a = [P(), P(), P(), P()],
n = E(t, 32);
for (n[0] &= 248, n[31] &= 127, n[31] |= 64, _(a, n), B(e, a), r = 0; r < 32; ++r) t[r + 32] = e[r];
}(r, n), {
publicKey: r,
privateKey: n
};
}, l.privateKeyFromAsn1 = function (e) {
var t = {},
r = [];
if (!a.asn1.validate(e, s, t, r)) {
var n = new Error("Invalid Key.");
throw n.errors = r, n;
}
var i = a.asn1.derToOid(t.privateKeyOid),
o = a.oids.EdDSA25519;
if (i !== o) throw new Error('Invalid OID "' + i + '"; OID must be "' + o + '".');
var c = t.privateKey;
return {
privateKeyBytes: p({
message: a.asn1.fromDer(c).value,
encoding: "binary"
})
};
}, l.publicKeyFromAsn1 = function (e) {
var t = {},
r = [];
if (!a.asn1.validate(e, i, t, r)) {
var n = new Error("Invalid Key.");
throw n.errors = r, n;
}
var s = a.asn1.derToOid(t.publicKeyOid),
o = a.oids.EdDSA25519;
if (s !== o) throw new Error('Invalid OID "' + s + '"; OID must be "' + o + '".');
var c = t.ed25519PublicKey;
if (c.length !== l.constants.PUBLIC_KEY_BYTE_LENGTH) throw new Error("Key length is invalid.");
return p({
message: c,
encoding: "binary"
});
}, l.publicKeyFromPrivateKey = function (e) {
var t = p({
message: (e = e || {}).privateKey,
encoding: "binary"
});
if (t.length !== l.constants.PRIVATE_KEY_BYTE_LENGTH) throw new TypeError('"options.privateKey" must have a byte length of ' + l.constants.PRIVATE_KEY_BYTE_LENGTH);
for (var r = new u(l.constants.PUBLIC_KEY_BYTE_LENGTH), a = 0; a < r.length; ++a) r[a] = t[32 + a];
return r;
}, l.sign = function (e) {
var t = p(e = e || {}),
r = p({
message: e.privateKey,
encoding: "binary"
});
if (r.length === l.constants.SEED_BYTE_LENGTH) r = l.generateKeyPair({
seed: r
}).privateKey;else if (r.length !== l.constants.PRIVATE_KEY_BYTE_LENGTH) throw new TypeError('"options.privateKey" must have a byte length of ' + l.constants.SEED_BYTE_LENGTH + " or " + l.constants.PRIVATE_KEY_BYTE_LENGTH);
var a = new u(l.constants.SIGN_BYTE_LENGTH + t.length);
!function (e, t, r, a) {
var n,
i,
s = new Float64Array(64),
o = [P(), P(), P(), P()],
c = E(a, 32);
c[0] &= 248, c[31] &= 127, c[31] |= 64;
var u = r + 64;
for (n = 0; n < r; ++n) e[64 + n] = t[n];
for (n = 0; n < 32; ++n) e[32 + n] = c[32 + n];
var l = E(e.subarray(32), r + 32);
for (T(l), _(o, l), B(e, o), n = 32; n < 64; ++n) e[n] = a[n];
var p = E(e, r + 64);
for (T(p), n = 32; n < 64; ++n) s[n] = 0;
for (n = 0; n < 32; ++n) s[n] = l[n];
for (n = 0; n < 32; ++n) for (i = 0; i < 32; i++) s[n + i] += p[n] * c[i];
S(e.subarray(32), s);
}(a, t, t.length, r);
for (var n = new u(l.constants.SIGN_BYTE_LENGTH), i = 0; i < n.length; ++i) n[i] = a[i];
return n;
}, l.verify = function (e) {
var t = p(e = e || {});
if (void 0 === e.signature) throw new TypeError('"options.signature" must be a node.js Buffer, a Uint8Array, a forge ByteBuffer, or a binary string.');
var r = p({
message: e.signature,
encoding: "binary"
});
if (r.length !== l.constants.SIGN_BYTE_LENGTH) throw new TypeError('"options.signature" must have a byte length of ' + l.constants.SIGN_BYTE_LENGTH);
var a = p({
message: e.publicKey,
encoding: "binary"
});
if (a.length !== l.constants.PUBLIC_KEY_BYTE_LENGTH) throw new TypeError('"options.publicKey" must have a byte length of ' + l.constants.PUBLIC_KEY_BYTE_LENGTH);
var n,
i = new u(l.constants.SIGN_BYTE_LENGTH + t.length),
s = new u(l.constants.SIGN_BYTE_LENGTH + t.length);
for (n = 0; n < l.constants.SIGN_BYTE_LENGTH; ++n) i[n] = r[n];
for (n = 0; n < t.length; ++n) i[n + l.constants.SIGN_BYTE_LENGTH] = t[n];
return function (e, t, r, a) {
var n,
i = new u(32),
s = [P(), P(), P(), P()],
o = [P(), P(), P(), P()];
if (-1, r < 64) return -1;
if (function (e, t) {
var r = P(),
a = P(),
n = P(),
i = P(),
s = P(),
o = P(),
c = P();
L(e[2], h), function (e, t) {
var r;
for (r = 0; r < 16; ++r) e[r] = t[2 * r] + (t[2 * r + 1] << 8);
e[15] &= 32767;
}(e[1], t), K(n, e[1]), x(i, n, d), O(n, n, e[2]), V(i, e[2], i), K(s, i), K(o, s), x(c, o, s), x(r, c, n), x(r, r, i), function (e, t) {
var r,
a = P();
for (r = 0; r < 16; ++r) a[r] = t[r];
for (r = 250; r >= 0; --r) K(a, a), 1 !== r && x(a, a, t);
for (r = 0; r < 16; ++r) e[r] = a[r];
}(r, r), x(r, r, n), x(r, r, i), x(r, r, i), x(e[0], r, i), K(a, e[0]), x(a, a, i), N(a, n) && x(e[0], e[0], C);
if (K(a, e[0]), x(a, a, i), N(a, n)) return -1;
w(e[0]) === t[31] >> 7 && O(e[0], f, e[0]);
return x(e[3], e[0], e[1]), 0;
}(o, a)) return -1;
for (n = 0; n < r; ++n) e[n] = t[n];
for (n = 0; n < 32; ++n) e[n + 32] = a[n];
var c = E(e, r);
if (T(c), k(s, o, c), _(o, t.subarray(32)), I(s, o), B(i, s), r -= 64, R(t, 0, i, 0)) {
for (n = 0; n < r; ++n) e[n] = 0;
return -1;
}
for (n = 0; n < r; ++n) e[n] = t[n + 64];
return r;
}(s, i, i.length, a) >= 0;
};
var f = P(),
h = P([1]),
d = P([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]),
y = P([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]),
g = P([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]),
m = P([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]),
v = new Float64Array([237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]),
C = P([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
function E(e, t) {
var r = a.md.sha512.create(),
n = new c(e);
r.update(n.getBytes(t), "binary");
var i = r.digest().getBytes();
if ("undefined" != typeof Buffer) return Buffer.from(i, "binary");
for (var s = new u(l.constants.HASH_BYTE_LENGTH), o = 0; o < 64; ++o) s[o] = i.charCodeAt(o);
return s;
}
function S(e, t) {
var r, a, n, i;
for (a = 63; a >= 32; --a) {
for (r = 0, n = a - 32, i = a - 12; n < i; ++n) t[n] += r - 16 * t[a] * v[n - (a - 32)], r = t[n] + 128 >> 8, t[n] -= 256 * r;
t[n] += r, t[a] = 0;
}
for (r = 0, n = 0; n < 32; ++n) t[n] += r - (t[31] >> 4) * v[n], r = t[n] >> 8, t[n] &= 255;
for (n = 0; n < 32; ++n) t[n] -= r * v[n];
for (a = 0; a < 32; ++a) t[a + 1] += t[a] >> 8, e[a] = 255 & t[a];
}
function T(e) {
for (var t = new Float64Array(64), r = 0; r < 64; ++r) t[r] = e[r], e[r] = 0;
S(e, t);
}
function I(e, t) {
var r = P(),
a = P(),
n = P(),
i = P(),
s = P(),
o = P(),
c = P(),
u = P(),
l = P();
O(r, e[1], e[0]), O(l, t[1], t[0]), x(r, r, l), V(a, e[0], e[1]), V(l, t[0], t[1]), x(a, a, l), x(n, e[3], t[3]), x(n, n, y), x(i, e[2], t[2]), V(i, i, i), O(s, a, r), O(o, i, n), V(c, i, n), V(u, a, r), x(e[0], s, o), x(e[1], u, c), x(e[2], c, o), x(e[3], s, u);
}
function A(e, t, r) {
for (var a = 0; a < 4; ++a) D(e[a], t[a], r);
}
function B(e, t) {
var r = P(),
a = P(),
n = P();
!function (e, t) {
var r,
a = P();
for (r = 0; r < 16; ++r) a[r] = t[r];
for (r = 253; r >= 0; --r) K(a, a), 2 !== r && 4 !== r && x(a, a, t);
for (r = 0; r < 16; ++r) e[r] = a[r];
}(n, t[2]), x(r, t[0], n), x(a, t[1], n), b(e, a), e[31] ^= w(r) << 7;
}
function b(e, t) {
var r,
a,
n,
i = P(),
s = P();
for (r = 0; r < 16; ++r) s[r] = t[r];
for (U(s), U(s), U(s), a = 0; a < 2; ++a) {
for (i[0] = s[0] - 65517, r = 1; r < 15; ++r) i[r] = s[r] - 65535 - (i[r - 1] >> 16 & 1), i[r - 1] &= 65535;
i[15] = s[15] - 32767 - (i[14] >> 16 & 1), n = i[15] >> 16 & 1, i[14] &= 65535, D(s, i, 1 - n);
}
for (r = 0; r < 16; r++) e[2 * r] = 255 & s[r], e[2 * r + 1] = s[r] >> 8;
}
function N(e, t) {
var r = new u(32),
a = new u(32);
return b(r, e), b(a, t), R(r, 0, a, 0);
}
function R(e, t, r, a) {
return function (e, t, r, a, n) {
var i,
s = 0;
for (i = 0; i < n; ++i) s |= e[t + i] ^ r[a + i];
return (1 & s - 1 >>> 8) - 1;
}(e, t, r, a, 32);
}
function w(e) {
var t = new u(32);
return b(t, e), 1 & t[0];
}
function k(e, t, r) {
var a, n;
for (L(e[0], f), L(e[1], h), L(e[2], h), L(e[3], f), n = 255; n >= 0; --n) A(e, t, a = r[n / 8 | 0] >> (7 & n) & 1), I(t, e), I(e, e), A(e, t, a);
}
function _(e, t) {
var r = [P(), P(), P(), P()];
L(r[0], g), L(r[1], m), L(r[2], h), x(r[3], g, m), k(e, r, t);
}
function L(e, t) {
var r;
for (r = 0; r < 16; r++) e[r] = 0 | t[r];
}
function U(e) {
var t,
r,
a = 1;
for (t = 0; t < 16; ++t) r = e[t] + a + 65535, a = Math.floor(r / 65536), e[t] = r - 65536 * a;
e[0] += a - 1 + 37 * (a - 1);
}
function D(e, t, r) {
for (var a, n = ~(r - 1), i = 0; i < 16; ++i) a = n & (e[i] ^ t[i]), e[i] ^= a, t[i] ^= a;
}
function P(e) {
var t,
r = new Float64Array(16);
if (e) for (t = 0; t < e.length; ++t) r[t] = e[t];
return r;
}
function V(e, t, r) {
for (var a = 0; a < 16; ++a) e[a] = t[a] + r[a];
}
function O(e, t, r) {
for (var a = 0; a < 16; ++a) e[a] = t[a] - r[a];
}
function K(e, t) {
x(e, t, t);
}
function x(e, t, r) {
var a,
n,
i = 0,
s = 0,
o = 0,
c = 0,
u = 0,
l = 0,
p = 0,
f = 0,
h = 0,
d = 0,
y = 0,
g = 0,
m = 0,
v = 0,
C = 0,
E = 0,
S = 0,
T = 0,
I = 0,
A = 0,
B = 0,
b = 0,
N = 0,
R = 0,
w = 0,
k = 0,
_ = 0,
L = 0,
U = 0,
D = 0,
P = 0,
V = r[0],
O = r[1],
K = r[2],
x = r[3],
M = r[4],
F = r[5],
j = r[6],
G = r[7],
H = r[8],
q = r[9],
Q = r[10],
z = r[11],
Y = r[12],
W = r[13],
X = r[14],
Z = r[15];
i += (a = t[0]) * V, s += a * O, o += a * K, c += a * x, u += a * M, l += a * F, p += a * j, f += a * G, h += a * H, d += a * q, y += a * Q, g += a * z, m += a * Y, v += a * W, C += a * X, E += a * Z, s += (a = t[1]) * V, o += a * O, c += a * K, u += a * x, l += a * M, p += a * F, f += a * j, h += a * G, d += a * H, y += a * q, g += a * Q, m += a * z, v += a * Y, C += a * W, E += a * X, S += a * Z, o += (a = t[2]) * V, c += a * O, u += a * K, l += a * x, p += a * M, f += a * F, h += a * j, d += a * G, y += a * H, g += a * q, m += a * Q, v += a * z, C += a * Y, E += a * W, S += a * X, T += a * Z, c += (a = t[3]) * V, u += a * O, l += a * K, p += a * x, f += a * M, h += a * F, d += a * j, y += a * G, g += a * H, m += a * q, v += a * Q, C += a * z, E += a * Y, S += a * W, T += a * X, I += a * Z, u += (a = t[4]) * V, l += a * O, p += a * K, f += a * x, h += a * M, d += a * F, y += a * j, g += a * G, m += a * H, v += a * q, C += a * Q, E += a * z, S += a * Y, T += a * W, I += a * X, A += a * Z, l += (a = t[5]) * V, p += a * O, f += a * K, h += a * x, d += a * M, y += a * F, g += a * j, m += a * G, v += a * H, C += a * q, E += a * Q, S += a * z, T += a * Y, I += a * W, A += a * X, B += a * Z, p += (a = t[6]) * V, f += a * O, h += a * K, d += a * x, y += a * M, g += a * F, m += a * j, v += a * G, C += a * H, E += a * q, S += a * Q, T += a * z, I += a * Y, A += a * W, B += a * X, b += a * Z, f += (a = t[7]) * V, h += a * O, d += a * K, y += a * x, g += a * M, m += a * F, v += a * j, C += a * G, E += a * H, S += a * q, T += a * Q, I += a * z, A += a * Y, B += a * W, b += a * X, N += a * Z, h += (a = t[8]) * V, d += a * O, y += a * K, g += a * x, m += a * M, v += a * F, C += a * j, E += a * G, S += a * H, T += a * q, I += a * Q, A += a * z, B += a * Y, b += a * W, N += a * X, R += a * Z, d += (a = t[9]) * V, y += a * O, g += a * K, m += a * x, v += a * M, C += a * F, E += a * j, S += a * G, T += a * H, I += a * q, A += a * Q, B += a * z, b += a * Y, N += a * W, R += a * X, w += a * Z, y += (a = t[10]) * V, g += a * O, m += a * K, v += a * x, C += a * M, E += a * F, S += a * j, T += a * G, I += a * H, A += a * q, B += a * Q, b += a * z, N += a * Y, R += a * W, w += a * X, k += a * Z, g += (a = t[11]) * V, m += a * O, v += a * K, C += a * x, E += a * M, S += a * F, T += a * j, I += a * G, A += a * H, B += a * q, b += a * Q, N += a * z, R += a * Y, w += a * W, k += a * X, _ += a * Z, m += (a = t[12]) * V, v += a * O, C += a * K, E += a * x, S += a * M, T += a * F, I += a * j, A += a * G, B += a * H, b += a * q, N += a * Q, R += a * z, w += a * Y, k += a * W, _ += a * X, L += a * Z, v += (a = t[13]) * V, C += a * O, E += a * K, S += a * x, T += a * M, I += a * F, A += a * j, B += a * G, b += a * H, N += a * q, R += a * Q, w += a * z, k += a * Y, _ += a * W, L += a * X, U += a * Z, C += (a = t[14]) * V, E += a * O, S += a * K, T += a * x, I += a * M, A += a * F, B += a * j, b += a * G, N += a * H, R += a * q, w += a * Q, k += a * z, _ += a * Y, L += a * W, U += a * X, D += a * Z, E += (a = t[15]) * V, s += 38 * (T += a * K), o += 38 * (I += a * x), c += 38 * (A += a * M), u += 38 * (B += a * F), l += 38 * (b += a * j), p += 38 * (N += a * G), f += 38 * (R += a * H), h += 38 * (w += a * q), d += 38 * (k += a * Q), y += 38 * (_ += a * z), g += 38 * (L += a * Y), m += 38 * (U += a * W), v += 38 * (D += a * X), C += 38 * (P += a * Z), i = (a = (i += 38 * (S += a * O)) + (n = 1) + 65535) - 65536 * (n = Math.floor(a / 65536)), s = (a = s + n + 65535) - 65536 * (n = Math.floor(a / 65536)), o = (a = o + n + 65535) - 65536 * (n = Math.floor(a / 65536)), c = (a = c + n + 65535) - 65536 * (n = Math.floor(a / 65536)), u = (a = u + n + 65535) - 65536 * (n = Math.floor(a / 65536)), l = (a = l + n + 65535) - 65536 * (n = Math.floor(a / 65536)), p = (a = p + n + 65535) - 65536 * (n = Math.floor(a / 65536)), f = (a = f + n + 65535) - 65536 * (n = Math.floor(a / 65536)), h = (a = h + n + 65535) - 65536 * (n = Math.floor(a / 65536)), d = (a = d + n + 65535) - 65536 * (n = Math.floor(a / 65536)), y = (a = y + n + 65535) - 65536 * (n = Math.floor(a / 65536)), g = (a = g + n + 65535) - 65536 * (n = Math.floor(a / 65536)), m = (a = m + n + 65535) - 65536 * (n = Math.floor(a / 65536)), v = (a = v + n + 65535) - 65536 * (n = Math.floor(a / 65536)), C = (a = C + n + 65535) - 65536 * (n = Math.floor(a / 65536)), E = (a = E + n + 65535) - 65536 * (n = Math.floor(a / 65536)), i = (a = (i += n - 1 + 37 * (n - 1)) + (n = 1) + 65535) - 65536 * (n = Math.floor(a / 65536)), s = (a = s + n + 65535) - 65536 * (n = Math.floor(a / 65536)), o = (a = o + n + 65535) - 65536 * (n = Math.floor(a / 65536)), c = (a = c + n + 65535) - 65536 * (n = Math.floor(a / 65536)), u = (a = u + n + 65535) - 65536 * (n = Math.floor(a / 65536)), l = (a = l + n + 65535) - 65536 * (n = Math.floor(a / 65536)), p = (a = p + n + 65535) - 65536 * (n = Math.floor(a / 65536)), f = (a = f + n + 65535) - 65536 * (n = Math.floor(a / 65536)), h = (a = h + n + 65535) - 65536 * (n = Math.floor(a / 65536)), d = (a = d + n + 65535) - 65536 * (n = Math.floor(a / 65536)), y = (a = y + n + 65535) - 65536 * (n = Math.floor(a / 65536)), g = (a = g + n + 65535) - 65536 * (n = Math.floor(a / 65536)), m = (a = m + n + 65535) - 65536 * (n = Math.floor(a / 65536)), v = (a = v + n + 65535) - 65536 * (n = Math.floor(a / 65536)), C = (a = C + n + 65535) - 65536 * (n = Math.floor(a / 65536)), E = (a = E + n + 65535) - 65536 * (n = Math.floor(a / 65536)), i += n - 1 + 37 * (n - 1), e[0] = i, e[1] = s, e[2] = o, e[3] = c, e[4] = u, e[5] = l, e[6] = p, e[7] = f, e[8] = h, e[9] = d, e[10] = y, e[11] = g, e[12] = m, e[13] = v, e[14] = C, e[15] = E;
}
}, function (e, t, r) {
var a = r(0);
r(3);
var n = a.asn1;
t.privateKeyValidator = {
name: "PrivateKeyInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "PrivateKeyInfo.version",
tagClass: n.Class.UNIVERSAL,
type: n.Type.INTEGER,
constructed: !1,
capture: "privateKeyVersion"
}, {
name: "PrivateKeyInfo.privateKeyAlgorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "AlgorithmIdentifier.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "privateKeyOid"
}]
}, {
name: "PrivateKeyInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OCTETSTRING,
constructed: !1,
capture: "privateKey"
}]
}, t.publicKeyValidator = {
name: "SubjectPublicKeyInfo",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
captureAsn1: "subjectPublicKeyInfo",
value: [{
name: "SubjectPublicKeyInfo.AlgorithmIdentifier",
tagClass: n.Class.UNIVERSAL,
type: n.Type.SEQUENCE,
constructed: !0,
value: [{
name: "AlgorithmIdentifier.algorithm",
tagClass: n.Class.UNIVERSAL,
type: n.Type.OID,
constructed: !1,
capture: "publicKeyOid"
}]
}, {
tagClass: n.Class.UNIVERSAL,
type: n.Type.BITSTRING,
constructed: !1,
composed: !0,
captureBitStringValue: "ed25519PublicKey"
}]
};
}, function (e, t, r) {
var a = r(0);
r(1), r(2), r(12), e.exports = a.kem = a.kem || {};
var n = a.jsbn.BigInteger;
function i(e, t, r, n) {
e.generate = function (e, i) {
for (var s = new a.util.ByteBuffer(), o = Math.ceil(i / n) + r, c = new a.util.ByteBuffer(), u = r; u < o; ++u) {
c.putInt32(u), t.start(), t.update(e + c.getBytes());
var l = t.digest();
s.putBytes(l.getBytes(n));
}
return s.truncate(s.length() - i), s.getBytes();
};
}
a.kem.rsa = {}, a.kem.rsa.create = function (e, t) {
var r = (t = t || {}).prng || a.random,
i = {
encrypt: function (t, i) {
var s,
o = Math.ceil(t.n.bitLength() / 8);
do {
s = new n(a.util.bytesToHex(r.getBytesSync(o)), 16).mod(t.n);
} while (s.compareTo(n.ONE) <= 0);
var c = o - (s = a.util.hexToBytes(s.toString(16))).length;
return c > 0 && (s = a.util.fillString(String.fromCharCode(0), c) + s), {
encapsulation: t.encrypt(s, "NONE"),
key: e.generate(s, i)
};
},
decrypt: function (t, r, a) {
var n = t.decrypt(r, "NONE");
return e.generate(n, a);
}
};
return i;
}, a.kem.kdf1 = function (e, t) {
i(this, e, 0, t || e.digestLength);
}, a.kem.kdf2 = function (e, t) {
i(this, e, 1, t || e.digestLength);
};
}, function (e, t, r) {
var a = r(0);
r(1), e.exports = a.log = a.log || {}, a.log.levels = ["none", "error", "warning", "info", "debug", "verbose", "max"];
var n,
i = {},
s = [],
o = null;
a.log.LEVEL_LOCKED = 2, a.log.NO_LEVEL_CHECK = 4, a.log.INTERPOLATE = 8;
for (var c = 0; c < a.log.levels.length; ++c) {
var u = a.log.levels[c];
i[u] = {
index: c,
name: u.toUpperCase()
};
}
a.log.logMessage = function (e) {
for (var t = i[e.level].index, r = 0; r < s.length; ++r) {
var n = s[r];
if (n.flags & a.log.NO_LEVEL_CHECK) n.f(e);else t <= i[n.level].index && n.f(n, e);
}
}, a.log.prepareStandard = function (e) {
"standard" in e || (e.standard = i[e.level].name + " [" + e.category + "] " + e.message);
}, a.log.prepareFull = function (e) {
if (!("full" in e)) {
var t = [e.message];
t = t.concat([] || 0), e.full = a.util.format.apply(this, t);
}
}, a.log.prepareStandardFull = function (e) {
"standardFull" in e || (a.log.prepareStandard(e), e.standardFull = e.standard);
};
var l = ["error", "warning", "info", "debug", "verbose"];
for (c = 0; c < l.length; ++c) !function (e) {
a.log[e] = function (t, r) {
var n = Array.prototype.slice.call(arguments).slice(2),
i = {
timestamp: new Date(),
level: e,
category: t,
message: r,
arguments: n
};
a.log.logMessage(i);
};
}(l[c]);
if (a.log.makeLogger = function (e) {
var t = {
flags: 0,
f: e
};
return a.log.setLevel(t, "none"), t;
}, a.log.setLevel = function (e, t) {
var r = !1;
if (e && !(e.flags & a.log.LEVEL_LOCKED)) for (var n = 0; n < a.log.levels.length; ++n) {
if (t == a.log.levels[n]) {
e.level = t, r = !0;
break;
}
}
return r;
}, a.log.lock = function (e, t) {
void 0 === t || t ? e.flags |= a.log.LEVEL_LOCKED : e.flags &= ~a.log.LEVEL_LOCKED;
}, a.log.addLogger = function (e) {
s.push(e);
}, "undefined" != typeof console && "log" in console) {
var p;
if (console.error && console.warn && console.info && console.debug) {
var f = {
error: console.error,
warning: console.warn,
info: console.info,
debug: console.debug,
verbose: console.debug
},
h = function (e, t) {
a.log.prepareStandard(t);
var r = f[t.level],
n = [t.standard];
n = n.concat(t.arguments.slice()), r.apply(console, n);
};
p = a.log.makeLogger(h);
} else {
h = function (e, t) {
a.log.prepareStandardFull(t), console.log(t.standardFull);
};
p = a.log.makeLogger(h);
}
a.log.setLevel(p, "debug"), a.log.addLogger(p), o = p;
} else console = {
log: function () {}
};
null !== o && ((n = "undefined" != typeof window && window.location ? new URL(window.location.href).searchParams : new URLSearchParams()).has("console.level") && a.log.setLevel(o, n.get("console.level").slice(-1)[0]), n.has("console.lock") && "true" == n.get("console.lock").slice(-1)[0] && a.log.lock(o));
a.log.consoleLogger = o;
}, function (e, t, r) {
e.exports = r(4), r(14), r(9), r(23), r(31);
}, function (e, t, r) {
var a = r(0);
r(5), r(3), r(10), r(6), r(7), r(29), r(2), r(1), r(17);
var n = a.asn1,
i = e.exports = a.pkcs7 = a.pkcs7 || {};
function s(e) {
var t = {},
r = [];
if (!n.validate(e, i.asn1.recipientInfoValidator, t, r)) {
var s = new Error("Cannot read PKCS#7 RecipientInfo. ASN.1 object is not an PKCS#7 RecipientInfo.");
throw s.errors = r, s;
}
return {
version: t.version.charCodeAt(0),
issuer: a.pki.RDNAttributesAsArray(t.issuer),
serialNumber: a.util.createBuffer(t.serial).toHex(),
encryptedContent: {
algorithm: n.derToOid(t.encAlgorithm),
parameter: t.encParameter ? t.encParameter.value : void 0,
content: t.encKey
}
};
}
function o(e) {
for (var t, r = [], i = 0; i < e.length; ++i) r.push((t = e[i], n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(t.version).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [a.pki.distinguishedNameToAsn1({
attributes: t.issuer
}), n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, a.util.hexToBytes(t.serialNumber))]), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.encryptedContent.algorithm).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")]), n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, t.encryptedContent.content)])));
return r;
}
function c(e) {
var t = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.version).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [a.pki.distinguishedNameToAsn1({
attributes: e.issuer
}), n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, a.util.hexToBytes(e.serialNumber))]), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.digestAlgorithm).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")])]);
if (e.authenticatedAttributesAsn1 && t.value.push(e.authenticatedAttributesAsn1), t.value.push(n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.signatureAlgorithm).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")])), t.value.push(n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, e.signature)), e.unauthenticatedAttributes.length > 0) {
for (var r = n.create(n.Class.CONTEXT_SPECIFIC, 1, !0, []), i = 0; i < e.unauthenticatedAttributes.length; ++i) {
var s = e.unauthenticatedAttributes[i];
r.values.push(u(s));
}
t.value.push(r);
}
return t;
}
function u(e) {
var t;
if (e.type === a.pki.oids.contentType) t = n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.value).getBytes());else if (e.type === a.pki.oids.messageDigest) t = n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, e.value.bytes());else if (e.type === a.pki.oids.signingTime) {
var r = new Date("1950-01-01T00:00:00Z"),
i = new Date("2050-01-01T00:00:00Z"),
s = e.value;
if ("string" == typeof s) {
var o = Date.parse(s);
s = isNaN(o) ? 13 === s.length ? n.utcTimeToDate(s) : n.generalizedTimeToDate(s) : new Date(o);
}
t = s >= r && s < i ? n.create(n.Class.UNIVERSAL, n.Type.UTCTIME, !1, n.dateToUtcTime(s)) : n.create(n.Class.UNIVERSAL, n.Type.GENERALIZEDTIME, !1, n.dateToGeneralizedTime(s));
}
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.type).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, [t])]);
}
function l(e, t, r) {
var i = {};
if (!n.validate(t, r, i, [])) {
var s = new Error("Cannot read PKCS#7 message. ASN.1 object is not a supported PKCS#7 message.");
throw s.errors = s, s;
}
if (n.derToOid(i.contentType) !== a.pki.oids.data) throw new Error("Unsupported PKCS#7 message. Only wrapped ContentType Data supported.");
if (i.encryptedContent) {
var o = "";
if (a.util.isArray(i.encryptedContent)) for (var c = 0; c < i.encryptedContent.length; ++c) {
if (i.encryptedContent[c].type !== n.Type.OCTETSTRING) throw new Error("Malformed PKCS#7 message, expecting encrypted content constructed of only OCTET STRING objects.");
o += i.encryptedContent[c].value;
} else o = i.encryptedContent;
e.encryptedContent = {
algorithm: n.derToOid(i.encAlgorithm),
parameter: a.util.createBuffer(i.encParameter.value),
content: a.util.createBuffer(o)
};
}
if (i.content) {
o = "";
if (a.util.isArray(i.content)) for (c = 0; c < i.content.length; ++c) {
if (i.content[c].type !== n.Type.OCTETSTRING) throw new Error("Malformed PKCS#7 message, expecting content constructed of only OCTET STRING objects.");
o += i.content[c].value;
} else o = i.content;
e.content = a.util.createBuffer(o);
}
return e.version = i.version.charCodeAt(0), e.rawCapture = i, i;
}
function p(e) {
if (void 0 === e.encryptedContent.key) throw new Error("Symmetric key not available.");
if (void 0 === e.content) {
var t;
switch (e.encryptedContent.algorithm) {
case a.pki.oids["aes128-CBC"]:
case a.pki.oids["aes192-CBC"]:
case a.pki.oids["aes256-CBC"]:
t = a.aes.createDecryptionCipher(e.encryptedContent.key);
break;
case a.pki.oids.desCBC:
case a.pki.oids["des-EDE3-CBC"]:
t = a.des.createDecryptionCipher(e.encryptedContent.key);
break;
default:
throw new Error("Unsupported symmetric cipher, OID " + e.encryptedContent.algorithm);
}
if (t.start(e.encryptedContent.parameter), t.update(e.encryptedContent.content), !t.finish()) throw new Error("Symmetric decryption failed.");
e.content = t.output;
}
}
i.messageFromPem = function (e) {
var t = a.pem.decode(e)[0];
if ("PKCS7" !== t.type) {
var r = new Error('Could not convert PKCS#7 message from PEM; PEM header type is not "PKCS#7".');
throw r.headerType = t.type, r;
}
if (t.procType && "ENCRYPTED" === t.procType.type) throw new Error("Could not convert PKCS#7 message from PEM; PEM is encrypted.");
var s = n.fromDer(t.body);
return i.messageFromAsn1(s);
}, i.messageToPem = function (e, t) {
var r = {
type: "PKCS7",
body: n.toDer(e.toAsn1()).getBytes()
};
return a.pem.encode(r, {
maxline: t
});
}, i.messageFromAsn1 = function (e) {
var t = {},
r = [];
if (!n.validate(e, i.asn1.contentInfoValidator, t, r)) {
var s = new Error("Cannot read PKCS#7 message. ASN.1 object is not an PKCS#7 ContentInfo.");
throw s.errors = r, s;
}
var o,
c = n.derToOid(t.contentType);
switch (c) {
case a.pki.oids.envelopedData:
o = i.createEnvelopedData();
break;
case a.pki.oids.encryptedData:
o = i.createEncryptedData();
break;
case a.pki.oids.signedData:
o = i.createSignedData();
break;
default:
throw new Error("Cannot read PKCS#7 message. ContentType with OID " + c + " is not (yet) supported.");
}
return o.fromAsn1(t.content.value[0]), o;
}, i.createSignedData = function () {
var e = null;
return e = {
type: a.pki.oids.signedData,
version: 1,
certificates: [],
crls: [],
signers: [],
digestAlgorithmIdentifiers: [],
contentInfo: null,
signerInfos: [],
fromAsn1: function (t) {
if (l(e, t, i.asn1.signedDataValidator), e.certificates = [], e.crls = [], e.digestAlgorithmIdentifiers = [], e.contentInfo = null, e.signerInfos = [], e.rawCapture.certificates) for (var r = e.rawCapture.certificates.value, n = 0; n < r.length; ++n) e.certificates.push(a.pki.certificateFromAsn1(r[n]));
},
toAsn1: function () {
e.contentInfo || e.sign();
for (var t = [], r = 0; r < e.certificates.length; ++r) t.push(a.pki.certificateToAsn1(e.certificates[r]));
var i = [],
s = n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.version).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, e.digestAlgorithmIdentifiers), e.contentInfo])]);
return t.length > 0 && s.value[0].value.push(n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, t)), i.length > 0 && s.value[0].value.push(n.create(n.Class.CONTEXT_SPECIFIC, 1, !0, i)), s.value[0].value.push(n.create(n.Class.UNIVERSAL, n.Type.SET, !0, e.signerInfos)), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.type).getBytes()), s]);
},
addSigner: function (t) {
var r = t.issuer,
n = t.serialNumber;
if (t.certificate) {
var i = t.certificate;
"string" == typeof i && (i = a.pki.certificateFromPem(i)), r = i.issuer.attributes, n = i.serialNumber;
}
var s = t.key;
if (!s) throw new Error("Could not add PKCS#7 signer; no private key specified.");
"string" == typeof s && (s = a.pki.privateKeyFromPem(s));
var o = t.digestAlgorithm || a.pki.oids.sha1;
switch (o) {
case a.pki.oids.sha1:
case a.pki.oids.sha256:
case a.pki.oids.sha384:
case a.pki.oids.sha512:
case a.pki.oids.md5:
break;
default:
throw new Error("Could not add PKCS#7 signer; unknown message digest algorithm: " + o);
}
var c = t.authenticatedAttributes || [];
if (c.length > 0) {
for (var u = !1, l = !1, p = 0; p < c.length; ++p) {
var f = c[p];
if (u || f.type !== a.pki.oids.contentType) {
if (l || f.type !== a.pki.oids.messageDigest) ;else if (l = !0, u) break;
} else if (u = !0, l) break;
}
if (!u || !l) throw new Error("Invalid signer.authenticatedAttributes. If signer.authenticatedAttributes is specified, then it must contain at least two attributes, PKCS #9 content-type and PKCS #9 message-digest.");
}
e.signers.push({
key: s,
version: 1,
issuer: r,
serialNumber: n,
digestAlgorithm: o,
signatureAlgorithm: a.pki.oids.rsaEncryption,
signature: null,
authenticatedAttributes: c,
unauthenticatedAttributes: []
});
},
sign: function (t) {
var r;
(t = t || {}, "object" != typeof e.content || null === e.contentInfo) && (e.contentInfo = n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(a.pki.oids.data).getBytes())]), "content" in e && (e.content instanceof a.util.ByteBuffer ? r = e.content.bytes() : "string" == typeof e.content && (r = a.util.encodeUtf8(e.content)), t.detached ? e.detachedContent = n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, r) : e.contentInfo.value.push(n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, r)]))));
0 !== e.signers.length && function (t) {
var r;
r = e.detachedContent ? e.detachedContent : (r = e.contentInfo.value[1]).value[0];
if (!r) throw new Error("Could not sign PKCS#7 message; there is no content to sign.");
var i = n.derToOid(e.contentInfo.value[0].value),
s = n.toDer(r);
for (var o in s.getByte(), n.getBerValueLength(s), s = s.getBytes(), t) t[o].start().update(s);
for (var l = new Date(), p = 0; p < e.signers.length; ++p) {
var f = e.signers[p];
if (0 === f.authenticatedAttributes.length) {
if (i !== a.pki.oids.data) throw new Error("Invalid signer; authenticatedAttributes must be present when the ContentInfo content type is not PKCS#7 Data.");
} else {
f.authenticatedAttributesAsn1 = n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, []);
for (var h = n.create(n.Class.UNIVERSAL, n.Type.SET, !0, []), d = 0; d < f.authenticatedAttributes.length; ++d) {
var y = f.authenticatedAttributes[d];
y.type === a.pki.oids.messageDigest ? y.value = t[f.digestAlgorithm].digest() : y.type === a.pki.oids.signingTime && (y.value || (y.value = l)), h.value.push(u(y)), f.authenticatedAttributesAsn1.value.push(u(y));
}
s = n.toDer(h).getBytes(), f.md.start().update(s);
}
f.signature = f.key.sign(f.md, "RSASSA-PKCS1-V1_5");
}
e.signerInfos = function (e) {
for (var t = [], r = 0; r < e.length; ++r) t.push(c(e[r]));
return t;
}(e.signers);
}(function () {
for (var t = {}, r = 0; r < e.signers.length; ++r) {
var i = e.signers[r];
(s = i.digestAlgorithm) in t || (t[s] = a.md[a.pki.oids[s]].create()), 0 === i.authenticatedAttributes.length ? i.md = t[s] : i.md = a.md[a.pki.oids[s]].create();
}
for (var s in e.digestAlgorithmIdentifiers = [], t) e.digestAlgorithmIdentifiers.push(n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(s).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.NULL, !1, "")]));
return t;
}());
},
verify: function () {
throw new Error("PKCS#7 signature verification not yet implemented.");
},
addCertificate: function (t) {
"string" == typeof t && (t = a.pki.certificateFromPem(t)), e.certificates.push(t);
},
addCertificateRevokationList: function (e) {
throw new Error("PKCS#7 CRL support not yet implemented.");
}
};
}, i.createEncryptedData = function () {
var e = null;
return e = {
type: a.pki.oids.encryptedData,
version: 0,
encryptedContent: {
algorithm: a.pki.oids["aes256-CBC"]
},
fromAsn1: function (t) {
l(e, t, i.asn1.encryptedDataValidator);
},
decrypt: function (t) {
void 0 !== t && (e.encryptedContent.key = t), p(e);
}
};
}, i.createEnvelopedData = function () {
var e = null;
return e = {
type: a.pki.oids.envelopedData,
version: 0,
recipients: [],
encryptedContent: {
algorithm: a.pki.oids["aes256-CBC"]
},
fromAsn1: function (t) {
var r = l(e, t, i.asn1.envelopedDataValidator);
e.recipients = function (e) {
for (var t = [], r = 0; r < e.length; ++r) t.push(s(e[r]));
return t;
}(r.recipientInfos.value);
},
toAsn1: function () {
return n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(e.type).getBytes()), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.INTEGER, !1, n.integerToDer(e.version).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SET, !0, o(e.recipients)), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, (t = e.encryptedContent, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(a.pki.oids.data).getBytes()), n.create(n.Class.UNIVERSAL, n.Type.SEQUENCE, !0, [n.create(n.Class.UNIVERSAL, n.Type.OID, !1, n.oidToDer(t.algorithm).getBytes()), t.parameter ? n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, t.parameter.getBytes()) : void 0]), n.create(n.Class.CONTEXT_SPECIFIC, 0, !0, [n.create(n.Class.UNIVERSAL, n.Type.OCTETSTRING, !1, t.content.getBytes())])]))])])]);
var t;
},
findRecipient: function (t) {
for (var r = t.issuer.attributes, a = 0; a < e.recipients.length; ++a) {
var n = e.recipients[a],
i = n.issuer;
if (n.serialNumber === t.serialNumber && i.length === r.length) {
for (var s = !0, o = 0; o < r.length; ++o) if (i[o].type !== r[o].type || i[o].value !== r[o].value) {
s = !1;
break;
}
if (s) return n;
}
}
return null;
},
decrypt: function (t, r) {
if (void 0 === e.encryptedContent.key && void 0 !== t && void 0 !== r) switch (t.encryptedContent.algorithm) {
case a.pki.oids.rsaEncryption:
case a.pki.oids.desCBC:
var n = r.decrypt(t.encryptedContent.content);
e.encryptedContent.key = a.util.createBuffer(n);
break;
default:
throw new Error("Unsupported asymmetric cipher, OID " + t.encryptedContent.algorithm);
}
p(e);
},
addRecipient: function (t) {
e.recipients.push({
version: 0,
issuer: t.issuer.attributes,
serialNumber: t.serialNumber,
encryptedContent: {
algorithm: a.pki.oids.rsaEncryption,
key: t.publicKey
}
});
},
encrypt: function (t, r) {
if (void 0 === e.encryptedContent.content) {
var n, i, s;
switch (r = r || e.encryptedContent.algorithm, t = t || e.encryptedContent.key, r) {
case a.pki.oids["aes128-CBC"]:
n = 16, i = 16, s = a.aes.createEncryptionCipher;
break;
case a.pki.oids["aes192-CBC"]:
n = 24, i = 16, s = a.aes.createEncryptionCipher;
break;
case a.pki.oids["aes256-CBC"]:
n = 32, i = 16, s = a.aes.createEncryptionCipher;
break;
case a.pki.oids["des-EDE3-CBC"]:
n = 24, i = 8, s = a.des.createEncryptionCipher;
break;
default:
throw new Error("Unsupported symmetric cipher, OID " + r);
}
if (void 0 === t) t = a.util.createBuffer(a.random.getBytes(n));else if (t.length() != n) throw new Error("Symmetric key has wrong length; got " + t.length() + " bytes, expected " + n + ".");
e.encryptedContent.algorithm = r, e.encryptedContent.key = t, e.encryptedContent.parameter = a.util.createBuffer(a.random.getBytes(i));
var o = s(t);
if (o.start(e.encryptedContent.parameter.copy()), o.update(e.content), !o.finish()) throw new Error("Symmetric encryption failed.");
e.encryptedContent.content = o.output;
}
for (var c = 0; c < e.recipients.length; ++c) {
var u = e.recipients[c];
if (void 0 === u.encryptedContent.content) switch (u.encryptedContent.algorithm) {
case a.pki.oids.rsaEncryption:
u.encryptedContent.content = u.encryptedContent.key.encrypt(e.encryptedContent.key.data);
break;
default:
throw new Error("Unsupported asymmetric cipher, OID " + u.encryptedContent.algorithm);
}
}
}
};
};
}, function (e, t, r) {
var a = r(0);
r(5), r(8), r(14), r(9), r(1);
var n = e.exports = a.ssh = a.ssh || {};
function i(e, t) {
var r = t.toString(16);
r[0] >= "8" && (r = "00" + r);
var n = a.util.hexToBytes(r);
e.putInt32(n.length), e.putBytes(n);
}
function s(e, t) {
e.putInt32(t.length), e.putString(t);
}
function o() {
for (var e = a.md.sha1.create(), t = arguments.length, r = 0; r < t; ++r) e.update(arguments[r]);
return e.digest();
}
n.privateKeyToPutty = function (e, t, r) {
var n = "" === (t = t || "") ? "none" : "aes256-cbc",
c = "PuTTY-User-Key-File-2: ssh-rsa\r\n";
c += "Encryption: " + n + "\r\n", c += "Comment: " + (r = r || "") + "\r\n";
var u = a.util.createBuffer();
s(u, "ssh-rsa"), i(u, e.e), i(u, e.n);
var l = a.util.encode64(u.bytes(), 64),
p = Math.floor(l.length / 66) + 1;
c += "Public-Lines: " + p + "\r\n", c += l;
var f,
h = a.util.createBuffer();
if (i(h, e.d), i(h, e.p), i(h, e.q), i(h, e.qInv), t) {
var d = h.length() + 16 - 1;
d -= d % 16;
var y = o(h.bytes());
y.truncate(y.length() - d + h.length()), h.putBuffer(y);
var g = a.util.createBuffer();
g.putBuffer(o("\0\0\0\0", t)), g.putBuffer(o("\0\0\0", t));
var m = a.aes.createEncryptionCipher(g.truncate(8), "CBC");
m.start(a.util.createBuffer().fillWithByte(0, 16)), m.update(h.copy()), m.finish();
var v = m.output;
v.truncate(16), f = a.util.encode64(v.bytes(), 64);
} else f = a.util.encode64(h.bytes(), 64);
c += "\r\nPrivate-Lines: " + (p = Math.floor(f.length / 66) + 1) + "\r\n", c += f;
var C = o("putty-private-key-file-mac-key", t),
E = a.util.createBuffer();
s(E, "ssh-rsa"), s(E, n), s(E, r), E.putInt32(u.length()), E.putBuffer(u), E.putInt32(h.length()), E.putBuffer(h);
var S = a.hmac.create();
return S.start("sha1", C), S.update(E.bytes()), c += "\r\nPrivate-MAC: " + S.digest().toHex() + "\r\n";
}, n.publicKeyToOpenSSH = function (e, t) {
t = t || "";
var r = a.util.createBuffer();
return s(r, "ssh-rsa"), i(r, e.e), i(r, e.n), "ssh-rsa " + a.util.encode64(r.bytes()) + " " + t;
}, n.privateKeyToOpenSSH = function (e, t) {
return t ? a.pki.encryptRsaPrivateKey(e, t, {
legacy: !0,
algorithm: "aes128"
}) : a.pki.privateKeyToPem(e);
}, n.getPublicKeyFingerprint = function (e, t) {
var r = (t = t || {}).md || a.md.md5.create(),
n = a.util.createBuffer();
s(n, "ssh-rsa"), i(n, e.e), i(n, e.n), r.start(), r.update(n.getBytes());
var o = r.digest();
if ("hex" === t.encoding) {
var c = o.toHex();
return t.delimiter ? c.match(/.{2}/g).join(t.delimiter) : c;
}
if ("binary" === t.encoding) return o.getBytes();
if (t.encoding) throw new Error('Unknown encoding "' + t.encoding + '".');
return o;
};
}]);
});
});
/***/ }),
/***/ 9662:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var tryToString = __webpack_require__(6330);
var TypeError = global.TypeError;
// `Assert: IsCallable(argument) is true`
module.exports = function (argument) {
if (isCallable(argument)) return argument;
throw TypeError(tryToString(argument) + ' is not a function');
};
/***/ }),
/***/ 6077:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var String = global.String;
var TypeError = global.TypeError;
module.exports = function (argument) {
if (typeof argument == 'object' || isCallable(argument)) return argument;
throw TypeError("Can't set " + String(argument) + ' as a prototype');
};
/***/ }),
/***/ 1530:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var charAt = __webpack_require__(8710).charAt;
// `AdvanceStringIndex` abstract operation
// https://tc39.es/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
return index + (unicode ? charAt(S, index).length : 1);
};
/***/ }),
/***/ 9670:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isObject = __webpack_require__(111);
var String = global.String;
var TypeError = global.TypeError;
// `Assert: Type(argument) is Object`
module.exports = function (argument) {
if (isObject(argument)) return argument;
throw TypeError(String(argument) + ' is not an object');
};
/***/ }),
/***/ 4019:
/***/ ((module) => {
// eslint-disable-next-line es/no-typed-arrays -- safe
module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';
/***/ }),
/***/ 260:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var NATIVE_ARRAY_BUFFER = __webpack_require__(4019);
var DESCRIPTORS = __webpack_require__(9781);
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var isObject = __webpack_require__(111);
var hasOwn = __webpack_require__(2597);
var classof = __webpack_require__(648);
var tryToString = __webpack_require__(6330);
var createNonEnumerableProperty = __webpack_require__(8880);
var redefine = __webpack_require__(1320);
var defineProperty = __webpack_require__(3070).f;
var isPrototypeOf = __webpack_require__(7976);
var getPrototypeOf = __webpack_require__(9518);
var setPrototypeOf = __webpack_require__(7674);
var wellKnownSymbol = __webpack_require__(5112);
var uid = __webpack_require__(9711);
var Int8Array = global.Int8Array;
var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
var Uint8ClampedArray = global.Uint8ClampedArray;
var Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;
var TypedArray = Int8Array && getPrototypeOf(Int8Array);
var TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);
var ObjectPrototype = Object.prototype;
var TypeError = global.TypeError;
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
var TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');
// Fixing native typed arrays in Opera Presto crashes the browser, see #595
var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';
var TYPED_ARRAY_TAG_REQUIRED = false;
var NAME, Constructor, Prototype;
var TypedArrayConstructorsList = {
Int8Array: 1,
Uint8Array: 1,
Uint8ClampedArray: 1,
Int16Array: 2,
Uint16Array: 2,
Int32Array: 4,
Uint32Array: 4,
Float32Array: 4,
Float64Array: 8
};
var BigIntArrayConstructorsList = {
BigInt64Array: 8,
BigUint64Array: 8
};
var isView = function isView(it) {
if (!isObject(it)) return false;
var klass = classof(it);
return klass === 'DataView'
|| hasOwn(TypedArrayConstructorsList, klass)
|| hasOwn(BigIntArrayConstructorsList, klass);
};
var isTypedArray = function (it) {
if (!isObject(it)) return false;
var klass = classof(it);
return hasOwn(TypedArrayConstructorsList, klass)
|| hasOwn(BigIntArrayConstructorsList, klass);
};
var aTypedArray = function (it) {
if (isTypedArray(it)) return it;
throw TypeError('Target is not a typed array');
};
var aTypedArrayConstructor = function (C) {
if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;
throw TypeError(tryToString(C) + ' is not a typed array constructor');
};
var exportTypedArrayMethod = function (KEY, property, forced, options) {
if (!DESCRIPTORS) return;
if (forced) for (var ARRAY in TypedArrayConstructorsList) {
var TypedArrayConstructor = global[ARRAY];
if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {
delete TypedArrayConstructor.prototype[KEY];
} catch (error) {
// old WebKit bug - some methods are non-configurable
try {
TypedArrayConstructor.prototype[KEY] = property;
} catch (error2) { /* empty */ }
}
}
if (!TypedArrayPrototype[KEY] || forced) {
redefine(TypedArrayPrototype, KEY, forced ? property
: NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
}
};
var exportTypedArrayStaticMethod = function (KEY, property, forced) {
var ARRAY, TypedArrayConstructor;
if (!DESCRIPTORS) return;
if (setPrototypeOf) {
if (forced) for (ARRAY in TypedArrayConstructorsList) {
TypedArrayConstructor = global[ARRAY];
if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {
delete TypedArrayConstructor[KEY];
} catch (error) { /* empty */ }
}
if (!TypedArray[KEY] || forced) {
// V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
try {
return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
} catch (error) { /* empty */ }
} else return;
}
for (ARRAY in TypedArrayConstructorsList) {
TypedArrayConstructor = global[ARRAY];
if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
redefine(TypedArrayConstructor, KEY, property);
}
}
};
for (NAME in TypedArrayConstructorsList) {
Constructor = global[NAME];
Prototype = Constructor && Constructor.prototype;
if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);
else NATIVE_ARRAY_BUFFER_VIEWS = false;
}
for (NAME in BigIntArrayConstructorsList) {
Constructor = global[NAME];
Prototype = Constructor && Constructor.prototype;
if (Prototype) createNonEnumerableProperty(Prototype, TYPED_ARRAY_CONSTRUCTOR, Constructor);
}
// WebKit bug - typed arrays constructors prototype is Object.prototype
if (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {
// eslint-disable-next-line no-shadow -- safe
TypedArray = function TypedArray() {
throw TypeError('Incorrect invocation');
};
if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);
}
}
if (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {
TypedArrayPrototype = TypedArray.prototype;
if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {
if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);
}
}
// WebKit bug - one more object in Uint8ClampedArray prototype chain
if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {
setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);
}
if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
TYPED_ARRAY_TAG_REQUIRED = true;
defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {
return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
} });
for (NAME in TypedArrayConstructorsList) if (global[NAME]) {
createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);
}
}
module.exports = {
NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,
TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,
aTypedArray: aTypedArray,
aTypedArrayConstructor: aTypedArrayConstructor,
exportTypedArrayMethod: exportTypedArrayMethod,
exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,
isView: isView,
isTypedArray: isTypedArray,
TypedArray: TypedArray,
TypedArrayPrototype: TypedArrayPrototype
};
/***/ }),
/***/ 1318:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toIndexedObject = __webpack_require__(5656);
var toAbsoluteIndex = __webpack_require__(1400);
var lengthOfArrayLike = __webpack_require__(6244);
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = lengthOfArrayLike(O);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare -- NaN check
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare -- NaN check
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.es/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/***/ 9341:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var fails = __webpack_require__(7293);
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
method.call(null, argument || function () { throw 1; }, 1);
});
};
/***/ }),
/***/ 3671:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var aCallable = __webpack_require__(9662);
var toObject = __webpack_require__(7908);
var IndexedObject = __webpack_require__(8361);
var lengthOfArrayLike = __webpack_require__(6244);
var TypeError = global.TypeError;
// `Array.prototype.{ reduce, reduceRight }` methods implementation
var createMethod = function (IS_RIGHT) {
return function (that, callbackfn, argumentsLength, memo) {
aCallable(callbackfn);
var O = toObject(that);
var self = IndexedObject(O);
var length = lengthOfArrayLike(O);
var index = IS_RIGHT ? length - 1 : 0;
var i = IS_RIGHT ? -1 : 1;
if (argumentsLength < 2) while (true) {
if (index in self) {
memo = self[index];
index += i;
break;
}
index += i;
if (IS_RIGHT ? index < 0 : length <= index) {
throw TypeError('Reduce of empty array with no initial value');
}
}
for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
memo = callbackfn(memo, self[index], index, O);
}
return memo;
};
};
module.exports = {
// `Array.prototype.reduce` method
// https://tc39.es/ecma262/#sec-array.prototype.reduce
left: createMethod(false),
// `Array.prototype.reduceRight` method
// https://tc39.es/ecma262/#sec-array.prototype.reduceright
right: createMethod(true)
};
/***/ }),
/***/ 206:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
module.exports = uncurryThis([].slice);
/***/ }),
/***/ 4326:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var toString = uncurryThis({}.toString);
var stringSlice = uncurryThis(''.slice);
module.exports = function (it) {
return stringSlice(toString(it), 8, -1);
};
/***/ }),
/***/ 648:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var TO_STRING_TAG_SUPPORT = __webpack_require__(1694);
var isCallable = __webpack_require__(614);
var classofRaw = __webpack_require__(4326);
var wellKnownSymbol = __webpack_require__(5112);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var Object = global.Object;
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;
};
/***/ }),
/***/ 9920:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var hasOwn = __webpack_require__(2597);
var ownKeys = __webpack_require__(3887);
var getOwnPropertyDescriptorModule = __webpack_require__(1236);
var definePropertyModule = __webpack_require__(3070);
module.exports = function (target, source, exceptions) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
}
};
/***/ }),
/***/ 8544:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
// eslint-disable-next-line es/no-object-getprototypeof -- required for testing
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/***/ 8880:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var definePropertyModule = __webpack_require__(3070);
var createPropertyDescriptor = __webpack_require__(9114);
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ 9114:
/***/ ((module) => {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ 9781:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
// Detect IE8's incomplete defineProperty implementation
module.exports = !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
});
/***/ }),
/***/ 317:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isObject = __webpack_require__(111);
var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/***/ 6833:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var userAgent = __webpack_require__(8113);
module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
/***/ }),
/***/ 5268:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var classof = __webpack_require__(4326);
var global = __webpack_require__(7854);
module.exports = classof(global.process) == 'process';
/***/ }),
/***/ 8113:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var getBuiltIn = __webpack_require__(5005);
module.exports = getBuiltIn('navigator', 'userAgent') || '';
/***/ }),
/***/ 7392:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var userAgent = __webpack_require__(8113);
var process = global.process;
var Deno = global.Deno;
var versions = process && process.versions || Deno && Deno.version;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
// in old Chrome, versions of V8 isn't V8 = Chrome / 10
// but their correct versions are not interesting for us
version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
}
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
// so check `userAgent` even if `.v8` exists, but 0
if (!version && userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = +match[1];
}
}
module.exports = version;
/***/ }),
/***/ 748:
/***/ ((module) => {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/***/ 2109:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var getOwnPropertyDescriptor = __webpack_require__(1236).f;
var createNonEnumerableProperty = __webpack_require__(8880);
var redefine = __webpack_require__(1320);
var setGlobal = __webpack_require__(3505);
var copyConstructorProperties = __webpack_require__(9920);
var isForced = __webpack_require__(4705);
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
options.name - the .name of the function if it does not match the key
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty == typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/***/ 7293:
/***/ ((module) => {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/***/ 7007:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
// TODO: Remove from `core-js@4` since it's moved to entry points
__webpack_require__(4916);
var uncurryThis = __webpack_require__(1702);
var redefine = __webpack_require__(1320);
var regexpExec = __webpack_require__(2261);
var fails = __webpack_require__(7293);
var wellKnownSymbol = __webpack_require__(5112);
var createNonEnumerableProperty = __webpack_require__(8880);
var SPECIES = wellKnownSymbol('species');
var RegExpPrototype = RegExp.prototype;
module.exports = function (KEY, exec, FORCED, SHAM) {
var SYMBOL = wellKnownSymbol(KEY);
var DELEGATES_TO_SYMBOL = !fails(function () {
// String methods call symbol-named RegEp methods
var O = {};
O[SYMBOL] = function () { return 7; };
return ''[KEY](O) != 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
// Symbol-named RegExp methods call .exec
var execCalled = false;
var re = /a/;
if (KEY === 'split') {
// We can't use real regex here since it causes deoptimization
// and serious performance degradation in V8
// https://github.com/zloirock/core-js/issues/306
re = {};
// RegExp[@@split] doesn't call the regex's exec method, but first creates
// a new one. We need to return the patched regex when creating the new one.
re.constructor = {};
re.constructor[SPECIES] = function () { return re; };
re.flags = '';
re[SYMBOL] = /./[SYMBOL];
}
re.exec = function () { execCalled = true; return null; };
re[SYMBOL]('');
return !execCalled;
});
if (
!DELEGATES_TO_SYMBOL ||
!DELEGATES_TO_EXEC ||
FORCED
) {
var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
var uncurriedNativeMethod = uncurryThis(nativeMethod);
var $exec = regexp.exec;
if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
// The native String method already delegates to @@method (this
// polyfilled function), leasing to infinite recursion.
// We avoid it by directly calling the native @@method method.
return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };
}
return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };
}
return { done: false };
});
redefine(String.prototype, KEY, methods[0]);
redefine(RegExpPrototype, SYMBOL, methods[1]);
}
if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
};
/***/ }),
/***/ 2104:
/***/ ((module) => {
var FunctionPrototype = Function.prototype;
var apply = FunctionPrototype.apply;
var bind = FunctionPrototype.bind;
var call = FunctionPrototype.call;
// eslint-disable-next-line es/no-reflect -- safe
module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {
return call.apply(apply, arguments);
});
/***/ }),
/***/ 9974:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var aCallable = __webpack_require__(9662);
var bind = uncurryThis(uncurryThis.bind);
// optional / simple context binding
module.exports = function (fn, that) {
aCallable(fn);
return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ 6916:
/***/ ((module) => {
var call = Function.prototype.call;
module.exports = call.bind ? call.bind(call) : function () {
return call.apply(call, arguments);
};
/***/ }),
/***/ 6530:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var hasOwn = __webpack_require__(2597);
var FunctionPrototype = Function.prototype;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
var EXISTS = hasOwn(FunctionPrototype, 'name');
// additional protection from minified / mangled / dropped function names
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
module.exports = {
EXISTS: EXISTS,
PROPER: PROPER,
CONFIGURABLE: CONFIGURABLE
};
/***/ }),
/***/ 1702:
/***/ ((module) => {
var FunctionPrototype = Function.prototype;
var bind = FunctionPrototype.bind;
var call = FunctionPrototype.call;
var uncurryThis = bind && bind.bind(call, call);
module.exports = bind ? function (fn) {
return fn && uncurryThis(fn);
} : function (fn) {
return fn && function () {
return call.apply(fn, arguments);
};
};
/***/ }),
/***/ 5005:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var aFunction = function (argument) {
return isCallable(argument) ? argument : undefined;
};
module.exports = function (namespace, method) {
return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
};
/***/ }),
/***/ 8173:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var aCallable = __webpack_require__(9662);
// `GetMethod` abstract operation
// https://tc39.es/ecma262/#sec-getmethod
module.exports = function (V, P) {
var func = V[P];
return func == null ? undefined : aCallable(func);
};
/***/ }),
/***/ 647:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var toObject = __webpack_require__(7908);
var floor = Math.floor;
var charAt = uncurryThis(''.charAt);
var replace = uncurryThis(''.replace);
var stringSlice = uncurryThis(''.slice);
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
// `GetSubstitution` abstract operation
// https://tc39.es/ecma262/#sec-getsubstitution
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
var tailPos = position + matched.length;
var m = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== undefined) {
namedCaptures = toObject(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return replace(replacement, symbols, function (match, ch) {
var capture;
switch (charAt(ch, 0)) {
case '$': return '$';
case '&': return matched;
case '`': return stringSlice(str, 0, position);
case "'": return stringSlice(str, tailPos);
case '<':
capture = namedCaptures[stringSlice(ch, 1, -1)];
break;
default: // \d\d?
var n = +ch;
if (n === 0) return match;
if (n > m) {
var f = floor(n / 10);
if (f === 0) return match;
if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
return match;
}
capture = captures[n - 1];
}
return capture === undefined ? '' : capture;
});
};
/***/ }),
/***/ 7854:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line es/no-global-this -- safe
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
// eslint-disable-next-line no-restricted-globals -- safe
check(typeof self == 'object' && self) ||
check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
// eslint-disable-next-line no-new-func -- fallback
(function () { return this; })() || Function('return this')();
/***/ }),
/***/ 2597:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var toObject = __webpack_require__(7908);
var hasOwnProperty = uncurryThis({}.hasOwnProperty);
// `HasOwnProperty` abstract operation
// https://tc39.es/ecma262/#sec-hasownproperty
module.exports = Object.hasOwn || function hasOwn(it, key) {
return hasOwnProperty(toObject(it), key);
};
/***/ }),
/***/ 3501:
/***/ ((module) => {
module.exports = {};
/***/ }),
/***/ 490:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var getBuiltIn = __webpack_require__(5005);
module.exports = getBuiltIn('document', 'documentElement');
/***/ }),
/***/ 4664:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var fails = __webpack_require__(7293);
var createElement = __webpack_require__(317);
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/***/ 8361:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var uncurryThis = __webpack_require__(1702);
var fails = __webpack_require__(7293);
var classof = __webpack_require__(4326);
var Object = global.Object;
var split = uncurryThis(''.split);
// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins -- safe
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split(it, '') : Object(it);
} : Object;
/***/ }),
/***/ 9587:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isCallable = __webpack_require__(614);
var isObject = __webpack_require__(111);
var setPrototypeOf = __webpack_require__(7674);
// makes subclassing work correct for wrapped built-ins
module.exports = function ($this, dummy, Wrapper) {
var NewTarget, NewTargetPrototype;
if (
// it can work only with native `setPrototypeOf`
setPrototypeOf &&
// we haven't completely correct pre-ES6 way for getting `new.target`, so use this
isCallable(NewTarget = dummy.constructor) &&
NewTarget !== Wrapper &&
isObject(NewTargetPrototype = NewTarget.prototype) &&
NewTargetPrototype !== Wrapper.prototype
) setPrototypeOf($this, NewTargetPrototype);
return $this;
};
/***/ }),
/***/ 2788:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var isCallable = __webpack_require__(614);
var store = __webpack_require__(5465);
var functionToString = uncurryThis(Function.toString);
// this helper broken in `[email protected]`, so we can't use `shared` helper
if (!isCallable(store.inspectSource)) {
store.inspectSource = function (it) {
return functionToString(it);
};
}
module.exports = store.inspectSource;
/***/ }),
/***/ 9909:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var NATIVE_WEAK_MAP = __webpack_require__(8536);
var global = __webpack_require__(7854);
var uncurryThis = __webpack_require__(1702);
var isObject = __webpack_require__(111);
var createNonEnumerableProperty = __webpack_require__(8880);
var hasOwn = __webpack_require__(2597);
var shared = __webpack_require__(5465);
var sharedKey = __webpack_require__(6200);
var hiddenKeys = __webpack_require__(3501);
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
var TypeError = global.TypeError;
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP || shared.state) {
var store = shared.state || (shared.state = new WeakMap());
var wmget = uncurryThis(store.get);
var wmhas = uncurryThis(store.has);
var wmset = uncurryThis(store.set);
set = function (it, metadata) {
if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it;
wmset(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget(store, it) || {};
};
has = function (it) {
return wmhas(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it;
createNonEnumerableProperty(it, STATE, metadata);
return metadata;
};
get = function (it) {
return hasOwn(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return hasOwn(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/***/ 614:
/***/ ((module) => {
// `IsCallable` abstract operation
// https://tc39.es/ecma262/#sec-iscallable
module.exports = function (argument) {
return typeof argument == 'function';
};
/***/ }),
/***/ 4705:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
var isCallable = __webpack_require__(614);
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: isCallable(detection) ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/***/ 111:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isCallable = __webpack_require__(614);
module.exports = function (it) {
return typeof it == 'object' ? it !== null : isCallable(it);
};
/***/ }),
/***/ 1913:
/***/ ((module) => {
module.exports = false;
/***/ }),
/***/ 7850:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var isObject = __webpack_require__(111);
var classof = __webpack_require__(4326);
var wellKnownSymbol = __webpack_require__(5112);
var MATCH = wellKnownSymbol('match');
// `IsRegExp` abstract operation
// https://tc39.es/ecma262/#sec-isregexp
module.exports = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
};
/***/ }),
/***/ 2190:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var getBuiltIn = __webpack_require__(5005);
var isCallable = __webpack_require__(614);
var isPrototypeOf = __webpack_require__(7976);
var USE_SYMBOL_AS_UID = __webpack_require__(3307);
var Object = global.Object;
module.exports = USE_SYMBOL_AS_UID ? function (it) {
return typeof it == 'symbol';
} : function (it) {
var $Symbol = getBuiltIn('Symbol');
return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));
};
/***/ }),
/***/ 6244:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toLength = __webpack_require__(7466);
// `LengthOfArrayLike` abstract operation
// https://tc39.es/ecma262/#sec-lengthofarraylike
module.exports = function (obj) {
return toLength(obj.length);
};
/***/ }),
/***/ 133:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* eslint-disable es/no-symbol -- required for testing */
var V8_VERSION = __webpack_require__(7392);
var fails = __webpack_require__(7293);
// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
var symbol = Symbol();
// Chrome 38 Symbol has incorrect toString conversion
// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
return !String(symbol) || !(Object(symbol) instanceof Symbol) ||
// Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
!Symbol.sham && V8_VERSION && V8_VERSION < 41;
});
/***/ }),
/***/ 8536:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var inspectSource = __webpack_require__(2788);
var WeakMap = global.WeakMap;
module.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));
/***/ }),
/***/ 30:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* global ActiveXObject -- old IE, WSH */
var anObject = __webpack_require__(9670);
var definePropertiesModule = __webpack_require__(6048);
var enumBugKeys = __webpack_require__(748);
var hiddenKeys = __webpack_require__(3501);
var html = __webpack_require__(490);
var documentCreateElement = __webpack_require__(317);
var sharedKey = __webpack_require__(6200);
var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');
var EmptyConstructor = function () { /* empty */ };
var scriptTag = function (content) {
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
activeXDocument.write(scriptTag(''));
activeXDocument.close();
var temp = activeXDocument.parentWindow.Object;
activeXDocument = null; // avoid memory leak
return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var JS = 'java' + SCRIPT + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
// https://github.com/zloirock/core-js/issues/475
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag('document.F=Object'));
iframeDocument.close();
return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
try {
activeXDocument = new ActiveXObject('htmlfile');
} catch (error) { /* ignore */ }
NullProtoObject = typeof document != 'undefined'
? document.domain && activeXDocument
? NullProtoObjectViaActiveX(activeXDocument) // old IE
: NullProtoObjectViaIFrame()
: NullProtoObjectViaActiveX(activeXDocument); // WSH
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO] = true;
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
EmptyConstructor[PROTOTYPE] = anObject(O);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
};
/***/ }),
/***/ 6048:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(3353);
var definePropertyModule = __webpack_require__(3070);
var anObject = __webpack_require__(9670);
var toIndexedObject = __webpack_require__(5656);
var objectKeys = __webpack_require__(1956);
// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
// eslint-disable-next-line es/no-object-defineproperties -- safe
exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var props = toIndexedObject(Properties);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
return O;
};
/***/ }),
/***/ 3070:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var DESCRIPTORS = __webpack_require__(9781);
var IE8_DOM_DEFINE = __webpack_require__(4664);
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(3353);
var anObject = __webpack_require__(9670);
var toPropertyKey = __webpack_require__(4948);
var TypeError = global.TypeError;
// eslint-disable-next-line es/no-object-defineproperty -- safe
var $defineProperty = Object.defineProperty;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var ENUMERABLE = 'enumerable';
var CONFIGURABLE = 'configurable';
var WRITABLE = 'writable';
// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
anObject(O);
P = toPropertyKey(P);
anObject(Attributes);
if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
var current = $getOwnPropertyDescriptor(O, P);
if (current && current[WRITABLE]) {
O[P] = Attributes.value;
Attributes = {
configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
writable: false
};
}
} return $defineProperty(O, P, Attributes);
} : $defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPropertyKey(P);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return $defineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/***/ 1236:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var call = __webpack_require__(6916);
var propertyIsEnumerableModule = __webpack_require__(5296);
var createPropertyDescriptor = __webpack_require__(9114);
var toIndexedObject = __webpack_require__(5656);
var toPropertyKey = __webpack_require__(4948);
var hasOwn = __webpack_require__(2597);
var IE8_DOM_DEFINE = __webpack_require__(4664);
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPropertyKey(P);
if (IE8_DOM_DEFINE) try {
return $getOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
};
/***/ }),
/***/ 8006:
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
var internalObjectKeys = __webpack_require__(6324);
var enumBugKeys = __webpack_require__(748);
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
// `Object.getOwnPropertyNames` method
// https://tc39.es/ecma262/#sec-object.getownpropertynames
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/***/ 5181:
/***/ ((__unused_webpack_module, exports) => {
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/***/ 9518:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var hasOwn = __webpack_require__(2597);
var isCallable = __webpack_require__(614);
var toObject = __webpack_require__(7908);
var sharedKey = __webpack_require__(6200);
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);
var IE_PROTO = sharedKey('IE_PROTO');
var Object = global.Object;
var ObjectPrototype = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.getprototypeof
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
var object = toObject(O);
if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
var constructor = object.constructor;
if (isCallable(constructor) && object instanceof constructor) {
return constructor.prototype;
} return object instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/***/ 7976:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
module.exports = uncurryThis({}.isPrototypeOf);
/***/ }),
/***/ 6324:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var hasOwn = __webpack_require__(2597);
var toIndexedObject = __webpack_require__(5656);
var indexOf = __webpack_require__(1318).indexOf;
var hiddenKeys = __webpack_require__(3501);
var push = uncurryThis([].push);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
// Don't enum bug & hidden keys
while (names.length > i) if (hasOwn(O, key = names[i++])) {
~indexOf(result, key) || push(result, key);
}
return result;
};
/***/ }),
/***/ 1956:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var internalObjectKeys = __webpack_require__(6324);
var enumBugKeys = __webpack_require__(748);
// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
// eslint-disable-next-line es/no-object-keys -- safe
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/***/ 5296:
/***/ ((__unused_webpack_module, exports) => {
"use strict";
var $propertyIsEnumerable = {}.propertyIsEnumerable;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : $propertyIsEnumerable;
/***/ }),
/***/ 7674:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* eslint-disable no-proto -- safe */
var uncurryThis = __webpack_require__(1702);
var anObject = __webpack_require__(9670);
var aPossiblePrototype = __webpack_require__(6077);
// `Object.setPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
// eslint-disable-next-line es/no-object-setprototypeof -- safe
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
setter(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/***/ 2140:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var call = __webpack_require__(6916);
var isCallable = __webpack_require__(614);
var isObject = __webpack_require__(111);
var TypeError = global.TypeError;
// `OrdinaryToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
module.exports = function (input, pref) {
var fn, val;
if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/***/ 3887:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var getBuiltIn = __webpack_require__(5005);
var uncurryThis = __webpack_require__(1702);
var getOwnPropertyNamesModule = __webpack_require__(8006);
var getOwnPropertySymbolsModule = __webpack_require__(5181);
var anObject = __webpack_require__(9670);
var concat = uncurryThis([].concat);
// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/***/ 1320:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var isCallable = __webpack_require__(614);
var hasOwn = __webpack_require__(2597);
var createNonEnumerableProperty = __webpack_require__(8880);
var setGlobal = __webpack_require__(3505);
var inspectSource = __webpack_require__(2788);
var InternalStateModule = __webpack_require__(9909);
var CONFIGURABLE_FUNCTION_NAME = __webpack_require__(6530).CONFIGURABLE;
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(String).split('String');
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
var name = options && options.name !== undefined ? options.name : key;
var state;
if (isCallable(value)) {
if (String(name).slice(0, 7) === 'Symbol(') {
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
}
if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
createNonEnumerableProperty(value, 'name', name);
}
state = enforceInternalState(value);
if (!state.source) {
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
}
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else createNonEnumerableProperty(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return isCallable(this) && getInternalState(this).source || inspectSource(this);
});
/***/ }),
/***/ 7651:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var call = __webpack_require__(6916);
var anObject = __webpack_require__(9670);
var isCallable = __webpack_require__(614);
var classof = __webpack_require__(4326);
var regexpExec = __webpack_require__(2261);
var TypeError = global.TypeError;
// `RegExpExec` abstract operation
// https://tc39.es/ecma262/#sec-regexpexec
module.exports = function (R, S) {
var exec = R.exec;
if (isCallable(exec)) {
var result = call(exec, R, S);
if (result !== null) anObject(result);
return result;
}
if (classof(R) === 'RegExp') return call(regexpExec, R, S);
throw TypeError('RegExp#exec called on incompatible receiver');
};
/***/ }),
/***/ 2261:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
/* eslint-disable regexp/no-useless-quantifier -- testing */
var call = __webpack_require__(6916);
var uncurryThis = __webpack_require__(1702);
var toString = __webpack_require__(1340);
var regexpFlags = __webpack_require__(7066);
var stickyHelpers = __webpack_require__(2999);
var shared = __webpack_require__(2309);
var create = __webpack_require__(30);
var getInternalState = __webpack_require__(9909).get;
var UNSUPPORTED_DOT_ALL = __webpack_require__(9441);
var UNSUPPORTED_NCG = __webpack_require__(7168);
var nativeReplace = shared('native-string-replace', String.prototype.replace);
var nativeExec = RegExp.prototype.exec;
var patchedExec = nativeExec;
var charAt = uncurryThis(''.charAt);
var indexOf = uncurryThis(''.indexOf);
var replace = uncurryThis(''.replace);
var stringSlice = uncurryThis(''.slice);
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/;
var re2 = /b*/g;
call(nativeExec, re1, 'a');
call(nativeExec, re2, 'a');
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
if (PATCH) {
patchedExec = function exec(string) {
var re = this;
var state = getInternalState(re);
var str = toString(string);
var raw = state.raw;
var result, reCopy, lastIndex, match, i, object, group;
if (raw) {
raw.lastIndex = re.lastIndex;
result = call(patchedExec, raw, str);
re.lastIndex = raw.lastIndex;
return result;
}
var groups = state.groups;
var sticky = UNSUPPORTED_Y && re.sticky;
var flags = call(regexpFlags, re);
var source = re.source;
var charsAdded = 0;
var strCopy = str;
if (sticky) {
flags = replace(flags, 'y', '');
if (indexOf(flags, 'g') === -1) {
flags += 'g';
}
strCopy = stringSlice(str, re.lastIndex);
// Support anchored sticky behavior.
if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
source = '(?: ' + source + ')';
strCopy = ' ' + strCopy;
charsAdded++;
}
// ^(? + rx + ) is needed, in combination with some str slicing, to
// simulate the 'y' flag.
reCopy = new RegExp('^(?:' + source + ')', flags);
}
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
match = call(nativeExec, sticky ? reCopy : re, strCopy);
if (sticky) {
if (match) {
match.input = stringSlice(match.input, charsAdded);
match[0] = stringSlice(match[0], charsAdded);
match.index = re.lastIndex;
re.lastIndex += match[0].length;
} else re.lastIndex = 0;
} else if (UPDATES_LAST_INDEX_WRONG && match) {
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
}
if (NPCG_INCLUDED && match && match.length > 1) {
// Fix browsers whose `exec` methods don't consistently return `undefined`
// for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
call(nativeReplace, match[0], reCopy, function () {
for (i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) match[i] = undefined;
}
});
}
if (match && groups) {
match.groups = object = create(null);
for (i = 0; i < groups.length; i++) {
group = groups[i];
object[group[0]] = match[group[1]];
}
}
return match;
};
}
module.exports = patchedExec;
/***/ }),
/***/ 7066:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var anObject = __webpack_require__(9670);
// `RegExp.prototype.flags` getter implementation
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
module.exports = function () {
var that = anObject(this);
var result = '';
if (that.global) result += 'g';
if (that.ignoreCase) result += 'i';
if (that.multiline) result += 'm';
if (that.dotAll) result += 's';
if (that.unicode) result += 'u';
if (that.sticky) result += 'y';
return result;
};
/***/ }),
/***/ 2999:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
var global = __webpack_require__(7854);
// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
var $RegExp = global.RegExp;
var UNSUPPORTED_Y = fails(function () {
var re = $RegExp('a', 'y');
re.lastIndex = 2;
return re.exec('abcd') != null;
});
// UC Browser bug
// https://github.com/zloirock/core-js/issues/1008
var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
return !$RegExp('a', 'y').sticky;
});
var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
var re = $RegExp('^r', 'gy');
re.lastIndex = 2;
return re.exec('str') != null;
});
module.exports = {
BROKEN_CARET: BROKEN_CARET,
MISSED_STICKY: MISSED_STICKY,
UNSUPPORTED_Y: UNSUPPORTED_Y
};
/***/ }),
/***/ 9441:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
var global = __webpack_require__(7854);
// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
var $RegExp = global.RegExp;
module.exports = fails(function () {
var re = $RegExp('.', 's');
return !(re.dotAll && re.exec('\n') && re.flags === 's');
});
/***/ }),
/***/ 7168:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var fails = __webpack_require__(7293);
var global = __webpack_require__(7854);
// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
var $RegExp = global.RegExp;
module.exports = fails(function () {
var re = $RegExp('(?<a>b)', 'g');
return re.exec('b').groups.a !== 'b' ||
'b'.replace(re, '$<a>c') !== 'bc';
});
/***/ }),
/***/ 4488:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var TypeError = global.TypeError;
// `RequireObjectCoercible` abstract operation
// https://tc39.es/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/***/ 3505:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
// eslint-disable-next-line es/no-object-defineproperty -- safe
var defineProperty = Object.defineProperty;
module.exports = function (key, value) {
try {
defineProperty(global, key, { value: value, configurable: true, writable: true });
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/***/ 6340:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var getBuiltIn = __webpack_require__(5005);
var definePropertyModule = __webpack_require__(3070);
var wellKnownSymbol = __webpack_require__(5112);
var DESCRIPTORS = __webpack_require__(9781);
var SPECIES = wellKnownSymbol('species');
module.exports = function (CONSTRUCTOR_NAME) {
var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
var defineProperty = definePropertyModule.f;
if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
defineProperty(Constructor, SPECIES, {
configurable: true,
get: function () { return this; }
});
}
};
/***/ }),
/***/ 6200:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var shared = __webpack_require__(2309);
var uid = __webpack_require__(9711);
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/***/ 5465:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var setGlobal = __webpack_require__(3505);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
module.exports = store;
/***/ }),
/***/ 2309:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var IS_PURE = __webpack_require__(1913);
var store = __webpack_require__(5465);
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.20.2',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2022 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/***/ 8710:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var toIntegerOrInfinity = __webpack_require__(9303);
var toString = __webpack_require__(1340);
var requireObjectCoercible = __webpack_require__(4488);
var charAt = uncurryThis(''.charAt);
var charCodeAt = uncurryThis(''.charCodeAt);
var stringSlice = uncurryThis(''.slice);
var createMethod = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = toString(requireObjectCoercible($this));
var position = toIntegerOrInfinity(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = charCodeAt(S, position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING
? charAt(S, position)
: first
: CONVERT_TO_STRING
? stringSlice(S, position, position + 2)
: (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
module.exports = {
// `String.prototype.codePointAt` method
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod(true)
};
/***/ }),
/***/ 261:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var apply = __webpack_require__(2104);
var bind = __webpack_require__(9974);
var isCallable = __webpack_require__(614);
var hasOwn = __webpack_require__(2597);
var fails = __webpack_require__(7293);
var html = __webpack_require__(490);
var arraySlice = __webpack_require__(206);
var createElement = __webpack_require__(317);
var IS_IOS = __webpack_require__(6833);
var IS_NODE = __webpack_require__(5268);
var set = global.setImmediate;
var clear = global.clearImmediate;
var process = global.process;
var Dispatch = global.Dispatch;
var Function = global.Function;
var MessageChannel = global.MessageChannel;
var String = global.String;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var location, defer, channel, port;
try {
// Deno throws a ReferenceError on `location` access without `--location` flag
location = global.location;
} catch (error) { /* empty */ }
var run = function (id) {
if (hasOwn(queue, id)) {
var fn = queue[id];
delete queue[id];
fn();
}
};
var runner = function (id) {
return function () {
run(id);
};
};
var listener = function (event) {
run(event.data);
};
var post = function (id) {
// old engines have not location.origin
global.postMessage(String(id), location.protocol + '//' + location.host);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!set || !clear) {
set = function setImmediate(fn) {
var args = arraySlice(arguments, 1);
queue[++counter] = function () {
apply(isCallable(fn) ? fn : Function(fn), undefined, args);
};
defer(counter);
return counter;
};
clear = function clearImmediate(id) {
delete queue[id];
};
// Node.js 0.8-
if (IS_NODE) {
defer = function (id) {
process.nextTick(runner(id));
};
// Sphere (JS game engine) Dispatch API
} else if (Dispatch && Dispatch.now) {
defer = function (id) {
Dispatch.now(runner(id));
};
// Browsers with MessageChannel, includes WebWorkers
// except iOS - https://github.com/zloirock/core-js/issues/624
} else if (MessageChannel && !IS_IOS) {
channel = new MessageChannel();
port = channel.port2;
channel.port1.onmessage = listener;
defer = bind(port.postMessage, port);
// Browsers with postMessage, skip WebWorkers
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
} else if (
global.addEventListener &&
isCallable(global.postMessage) &&
!global.importScripts &&
location && location.protocol !== 'file:' &&
!fails(post)
) {
defer = post;
global.addEventListener('message', listener, false);
// IE8-
} else if (ONREADYSTATECHANGE in createElement('script')) {
defer = function (id) {
html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
html.removeChild(this);
run(id);
};
};
// Rest old browsers
} else {
defer = function (id) {
setTimeout(runner(id), 0);
};
}
}
module.exports = {
set: set,
clear: clear
};
/***/ }),
/***/ 1400:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toIntegerOrInfinity = __webpack_require__(9303);
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
var integer = toIntegerOrInfinity(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/***/ 5656:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(8361);
var requireObjectCoercible = __webpack_require__(4488);
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/***/ 9303:
/***/ ((module) => {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToIntegerOrInfinity` abstract operation
// https://tc39.es/ecma262/#sec-tointegerorinfinity
module.exports = function (argument) {
var number = +argument;
// eslint-disable-next-line no-self-compare -- safe
return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);
};
/***/ }),
/***/ 7466:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toIntegerOrInfinity = __webpack_require__(9303);
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.es/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/***/ 7908:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var requireObjectCoercible = __webpack_require__(4488);
var Object = global.Object;
// `ToObject` abstract operation
// https://tc39.es/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/***/ 4590:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var toPositiveInteger = __webpack_require__(3002);
var RangeError = global.RangeError;
module.exports = function (it, BYTES) {
var offset = toPositiveInteger(it);
if (offset % BYTES) throw RangeError('Wrong offset');
return offset;
};
/***/ }),
/***/ 3002:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var toIntegerOrInfinity = __webpack_require__(9303);
var RangeError = global.RangeError;
module.exports = function (it) {
var result = toIntegerOrInfinity(it);
if (result < 0) throw RangeError("The argument can't be less than 0");
return result;
};
/***/ }),
/***/ 7593:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var call = __webpack_require__(6916);
var isObject = __webpack_require__(111);
var isSymbol = __webpack_require__(2190);
var getMethod = __webpack_require__(8173);
var ordinaryToPrimitive = __webpack_require__(2140);
var wellKnownSymbol = __webpack_require__(5112);
var TypeError = global.TypeError;
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
// `ToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-toprimitive
module.exports = function (input, pref) {
if (!isObject(input) || isSymbol(input)) return input;
var exoticToPrim = getMethod(input, TO_PRIMITIVE);
var result;
if (exoticToPrim) {
if (pref === undefined) pref = 'default';
result = call(exoticToPrim, input, pref);
if (!isObject(result) || isSymbol(result)) return result;
throw TypeError("Can't convert object to primitive value");
}
if (pref === undefined) pref = 'number';
return ordinaryToPrimitive(input, pref);
};
/***/ }),
/***/ 4948:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var toPrimitive = __webpack_require__(7593);
var isSymbol = __webpack_require__(2190);
// `ToPropertyKey` abstract operation
// https://tc39.es/ecma262/#sec-topropertykey
module.exports = function (argument) {
var key = toPrimitive(argument, 'string');
return isSymbol(key) ? key : key + '';
};
/***/ }),
/***/ 1694:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var wellKnownSymbol = __webpack_require__(5112);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
test[TO_STRING_TAG] = 'z';
module.exports = String(test) === '[object z]';
/***/ }),
/***/ 1340:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var classof = __webpack_require__(648);
var String = global.String;
module.exports = function (argument) {
if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
return String(argument);
};
/***/ }),
/***/ 6330:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var String = global.String;
module.exports = function (argument) {
try {
return String(argument);
} catch (error) {
return 'Object';
}
};
/***/ }),
/***/ 9711:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var uncurryThis = __webpack_require__(1702);
var id = 0;
var postfix = Math.random();
var toString = uncurryThis(1.0.toString);
module.exports = function (key) {
return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
};
/***/ }),
/***/ 3307:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
/* eslint-disable es/no-symbol -- required for testing */
var NATIVE_SYMBOL = __webpack_require__(133);
module.exports = NATIVE_SYMBOL
&& !Symbol.sham
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/***/ 3353:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var fails = __webpack_require__(7293);
// V8 ~ Chrome 36-
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
module.exports = DESCRIPTORS && fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty(function () { /* empty */ }, 'prototype', {
value: 42,
writable: false
}).prototype != 42;
});
/***/ }),
/***/ 5112:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
var global = __webpack_require__(7854);
var shared = __webpack_require__(2309);
var hasOwn = __webpack_require__(2597);
var uid = __webpack_require__(9711);
var NATIVE_SYMBOL = __webpack_require__(133);
var USE_SYMBOL_AS_UID = __webpack_require__(3307);
var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var symbolFor = Symbol && Symbol['for'];
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
module.exports = function (name) {
if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
var description = 'Symbol.' + name;
if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {
WellKnownSymbolsStore[name] = Symbol[name];
} else if (USE_SYMBOL_AS_UID && symbolFor) {
WellKnownSymbolsStore[name] = symbolFor(description);
} else {
WellKnownSymbolsStore[name] = createWellKnownSymbol(description);
}
} return WellKnownSymbolsStore[name];
};
/***/ }),
/***/ 5827:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var $ = __webpack_require__(2109);
var $reduce = __webpack_require__(3671).left;
var arrayMethodIsStrict = __webpack_require__(9341);
var CHROME_VERSION = __webpack_require__(7392);
var IS_NODE = __webpack_require__(5268);
var STRICT_METHOD = arrayMethodIsStrict('reduce');
// Chrome 80-82 has a critical bug
// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
// `Array.prototype.reduce` method
// https://tc39.es/ecma262/#sec-array.prototype.reduce
$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {
reduce: function reduce(callbackfn /* , initialValue */) {
var length = arguments.length;
return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/***/ 4603:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var global = __webpack_require__(7854);
var uncurryThis = __webpack_require__(1702);
var isForced = __webpack_require__(4705);
var inheritIfRequired = __webpack_require__(9587);
var createNonEnumerableProperty = __webpack_require__(8880);
var defineProperty = __webpack_require__(3070).f;
var getOwnPropertyNames = __webpack_require__(8006).f;
var isPrototypeOf = __webpack_require__(7976);
var isRegExp = __webpack_require__(7850);
var toString = __webpack_require__(1340);
var regExpFlags = __webpack_require__(7066);
var stickyHelpers = __webpack_require__(2999);
var redefine = __webpack_require__(1320);
var fails = __webpack_require__(7293);
var hasOwn = __webpack_require__(2597);
var enforceInternalState = __webpack_require__(9909).enforce;
var setSpecies = __webpack_require__(6340);
var wellKnownSymbol = __webpack_require__(5112);
var UNSUPPORTED_DOT_ALL = __webpack_require__(9441);
var UNSUPPORTED_NCG = __webpack_require__(7168);
var MATCH = wellKnownSymbol('match');
var NativeRegExp = global.RegExp;
var RegExpPrototype = NativeRegExp.prototype;
var SyntaxError = global.SyntaxError;
var getFlags = uncurryThis(regExpFlags);
var exec = uncurryThis(RegExpPrototype.exec);
var charAt = uncurryThis(''.charAt);
var replace = uncurryThis(''.replace);
var stringIndexOf = uncurryThis(''.indexOf);
var stringSlice = uncurryThis(''.slice);
// TODO: Use only propper RegExpIdentifierName
var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
var re1 = /a/g;
var re2 = /a/g;
// "new" should create a new object, old webkit bug
var CORRECT_NEW = new NativeRegExp(re1) !== re1;
var MISSED_STICKY = stickyHelpers.MISSED_STICKY;
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
var BASE_FORCED = DESCRIPTORS &&
(!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {
re2[MATCH] = false;
// RegExp constructor can alter flags and IsRegExp works correct with @@match
return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
}));
var handleDotAll = function (string) {
var length = string.length;
var index = 0;
var result = '';
var brackets = false;
var chr;
for (; index <= length; index++) {
chr = charAt(string, index);
if (chr === '\\') {
result += chr + charAt(string, ++index);
continue;
}
if (!brackets && chr === '.') {
result += '[\\s\\S]';
} else {
if (chr === '[') {
brackets = true;
} else if (chr === ']') {
brackets = false;
} result += chr;
}
} return result;
};
var handleNCG = function (string) {
var length = string.length;
var index = 0;
var result = '';
var named = [];
var names = {};
var brackets = false;
var ncg = false;
var groupid = 0;
var groupname = '';
var chr;
for (; index <= length; index++) {
chr = charAt(string, index);
if (chr === '\\') {
chr = chr + charAt(string, ++index);
} else if (chr === ']') {
brackets = false;
} else if (!brackets) switch (true) {
case chr === '[':
brackets = true;
break;
case chr === '(':
if (exec(IS_NCG, stringSlice(string, index + 1))) {
index += 2;
ncg = true;
}
result += chr;
groupid++;
continue;
case chr === '>' && ncg:
if (groupname === '' || hasOwn(names, groupname)) {
throw new SyntaxError('Invalid capture group name');
}
names[groupname] = true;
named[named.length] = [groupname, groupid];
ncg = false;
groupname = '';
continue;
}
if (ncg) groupname += chr;
else result += chr;
} return [result, named];
};
// `RegExp` constructor
// https://tc39.es/ecma262/#sec-regexp-constructor
if (isForced('RegExp', BASE_FORCED)) {
var RegExpWrapper = function RegExp(pattern, flags) {
var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
var patternIsRegExp = isRegExp(pattern);
var flagsAreUndefined = flags === undefined;
var groups = [];
var rawPattern = pattern;
var rawFlags, dotAll, sticky, handled, result, state;
if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {
return pattern;
}
if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
pattern = pattern.source;
if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);
}
pattern = pattern === undefined ? '' : toString(pattern);
flags = flags === undefined ? '' : toString(flags);
rawPattern = pattern;
if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {
dotAll = !!flags && stringIndexOf(flags, 's') > -1;
if (dotAll) flags = replace(flags, /s/g, '');
}
rawFlags = flags;
if (MISSED_STICKY && 'sticky' in re1) {
sticky = !!flags && stringIndexOf(flags, 'y') > -1;
if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');
}
if (UNSUPPORTED_NCG) {
handled = handleNCG(pattern);
pattern = handled[0];
groups = handled[1];
}
result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);
if (dotAll || sticky || groups.length) {
state = enforceInternalState(result);
if (dotAll) {
state.dotAll = true;
state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);
}
if (sticky) state.sticky = true;
if (groups.length) state.groups = groups;
}
if (pattern !== rawPattern) try {
// fails in old engines, but we have no alternatives for unsupported regex syntax
createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);
} catch (error) { /* empty */ }
return result;
};
var proxy = function (key) {
key in RegExpWrapper || defineProperty(RegExpWrapper, key, {
configurable: true,
get: function () { return NativeRegExp[key]; },
set: function (it) { NativeRegExp[key] = it; }
});
};
for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {
proxy(keys[index++]);
}
RegExpPrototype.constructor = RegExpWrapper;
RegExpWrapper.prototype = RegExpPrototype;
redefine(global, 'RegExp', RegExpWrapper);
}
// https://tc39.es/ecma262/#sec-get-regexp-@@species
setSpecies('RegExp');
/***/ }),
/***/ 4916:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var $ = __webpack_require__(2109);
var exec = __webpack_require__(2261);
// `RegExp.prototype.exec` method
// https://tc39.es/ecma262/#sec-regexp.prototype.exec
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
exec: exec
});
/***/ }),
/***/ 2087:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
var DESCRIPTORS = __webpack_require__(9781);
var objectDefinePropertyModule = __webpack_require__(3070);
var regExpFlags = __webpack_require__(7066);
var fails = __webpack_require__(7293);
var RegExpPrototype = RegExp.prototype;
var FORCED = DESCRIPTORS && fails(function () {
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
});
// `RegExp.prototype.flags` getter
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
configurable: true,
get: regExpFlags
});
/***/ }),
/***/ 5306:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var apply = __webpack_require__(2104);
var call = __webpack_require__(6916);
var uncurryThis = __webpack_require__(1702);
var fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);
var fails = __webpack_require__(7293);
var anObject = __webpack_require__(9670);
var isCallable = __webpack_require__(614);
var toIntegerOrInfinity = __webpack_require__(9303);
var toLength = __webpack_require__(7466);
var toString = __webpack_require__(1340);
var requireObjectCoercible = __webpack_require__(4488);
var advanceStringIndex = __webpack_require__(1530);
var getMethod = __webpack_require__(8173);
var getSubstitution = __webpack_require__(647);
var regExpExec = __webpack_require__(7651);
var wellKnownSymbol = __webpack_require__(5112);
var REPLACE = wellKnownSymbol('replace');
var max = Math.max;
var min = Math.min;
var concat = uncurryThis([].concat);
var push = uncurryThis([].push);
var stringIndexOf = uncurryThis(''.indexOf);
var stringSlice = uncurryThis(''.slice);
var maybeToString = function (it) {
return it === undefined ? it : String(it);
};
// IE <= 11 replaces $0 with the whole match, as if it was $&
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
var REPLACE_KEEPS_$0 = (function () {
// eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
return 'a'.replace(/./, '$0') === '$0';
})();
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
if (/./[REPLACE]) {
return /./[REPLACE]('a', '$0') === '';
}
return false;
})();
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
var re = /./;
re.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
// eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
return ''.replace(re, '$<a>') !== '7';
});
// @@replace logic
fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
return [
// `String.prototype.replace` method
// https://tc39.es/ecma262/#sec-string.prototype.replace
function replace(searchValue, replaceValue) {
var O = requireObjectCoercible(this);
var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);
return replacer
? call(replacer, searchValue, O, replaceValue)
: call(nativeReplace, toString(O), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
function (string, replaceValue) {
var rx = anObject(this);
var S = toString(string);
if (
typeof replaceValue == 'string' &&
stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
stringIndexOf(replaceValue, '$<') === -1
) {
var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
if (res.done) return res.value;
}
var functionalReplace = isCallable(replaceValue);
if (!functionalReplace) replaceValue = toString(replaceValue);
var global = rx.global;
if (global) {
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
while (true) {
var result = regExpExec(rx, S);
if (result === null) break;
push(results, result);
if (!global) break;
var matchStr = toString(result[0]);
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
}
var accumulatedResult = '';
var nextSourcePosition = 0;
for (var i = 0; i < results.length; i++) {
result = results[i];
var matched = toString(result[0]);
var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
var captures = [];
// NOTE: This is equivalent to
// captures = result.slice(1).map(maybeToString)
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = concat([matched], captures, position, S);
if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
var replacement = toString(apply(replaceValue, undefined, replacerArgs));
} else {
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
}
if (position >= nextSourcePosition) {
accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
nextSourcePosition = position + matched.length;
}
}
return accumulatedResult + stringSlice(S, nextSourcePosition);
}
];
}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
/***/ }),
/***/ 3462:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var global = __webpack_require__(7854);
var call = __webpack_require__(6916);
var ArrayBufferViewCore = __webpack_require__(260);
var lengthOfArrayLike = __webpack_require__(6244);
var toOffset = __webpack_require__(4590);
var toIndexedObject = __webpack_require__(7908);
var fails = __webpack_require__(7293);
var RangeError = global.RangeError;
var Int8Array = global.Int8Array;
var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
var $set = Int8ArrayPrototype && Int8ArrayPrototype.set;
var aTypedArray = ArrayBufferViewCore.aTypedArray;
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
var WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {
// eslint-disable-next-line es/no-typed-arrays -- required for testing
var array = new Uint8ClampedArray(2);
call($set, array, { length: 1, 0: 3 }, 1);
return array[1] !== 3;
});
// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other
var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {
var array = new Int8Array(2);
array.set(1);
array.set('2', 1);
return array[0] !== 0 || array[1] !== 2;
});
// `%TypedArray%.prototype.set` method
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set
exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
aTypedArray(this);
var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
var src = toIndexedObject(arrayLike);
if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);
var length = this.length;
var len = lengthOfArrayLike(src);
var index = 0;
if (len + offset > length) throw RangeError('Wrong length');
while (index < len) this[offset + index] = src[index++];
}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);
/***/ }),
/***/ 4633:
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
var $ = __webpack_require__(2109);
var global = __webpack_require__(7854);
var task = __webpack_require__(261);
var FORCED = !global.setImmediate || !global.clearImmediate;
// http://w3c.github.io/setImmediate/
$({ global: true, bind: true, enumerable: true, forced: FORCED }, {
// `setImmediate` method
// http://w3c.github.io/setImmediate/#si-setImmediate
setImmediate: task.set,
// `clearImmediate` method
// http://w3c.github.io/setImmediate/#si-clearImmediate
clearImmediate: task.clear
});
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/global */
/******/ (() => {
/******/ __webpack_require__.g = (function() {
/******/ if (typeof globalThis === 'object') return globalThis;
/******/ try {
/******/ return this || new Function('return this')();
/******/ } catch (e) {
/******/ if (typeof window === 'object') return window;
/******/ }
/******/ })();
/******/ })();
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be inlined
/******/ var __webpack_exports__ = __webpack_require__(5579);
/******/
/******/ })()
;