Greasy Fork

lx-msuic 辅助脚本

lx-msuic 辅助脚本,提供在官方音乐平台歌单、歌曲详情页直接调用LX Music的能力。

目前为 2022-03-28 提交的版本。查看 最新版本

// ==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 = {
    '&amp;': '&',
    '&lt;': '<',
    '&gt;': '>',
    '&quot;': '"',
    '&apos;': "'",
    '&#039;': "'"
  };

  const decodeName = (str = '') => (str === null || str === void 0 ? void 0 : str.replace(/(?:&amp;|&lt;|&gt;|&quot;|&apos;|&#039;)/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);
/******/ 	
/******/ })()
;