ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
256 lines • 22.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @return {?}
*/
function rtl() {
/** @type {?} */
var element = (/** @type {?} */ (document.getElementsByClassName('toolbar')[0]));
while (element) {
if (element.dir !== '') {
return element.dir === 'rtl';
}
if (!element.parentElement) {
break;
}
element = element.parentElement;
}
return false;
}
/**
* @param {?} width
* @return {?}
*/
export function resizeUpTo535px(width) {
/** @type {?} */
var tinyElement = document.getElementById('scaleSelectContainer');
/** @type {?} */
var tiny = (/** @type {?} */ (tinyElement));
if (width < 535) {
// not perfect, but good first approximation
tiny.classList.add('hidden');
}
else {
tiny.classList.remove('hidden');
}
}
/**
* @param {?} container
* @param {?} width
* @return {?}
*/
export function resizeUpTo640px(container, width) {
/** @type {?} */
var smallElements = container.getElementsByClassName('hiddenSmallView');
for (var i = 0; i < smallElements.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (smallElements[i]));
if (width < 640) {
elt.classList.add('hidden');
}
else {
elt.classList.remove('hidden');
}
}
/** @type {?} */
var visibleSmallViewElements = container.getElementsByClassName('visibleSmallView');
for (var i = 0; i < visibleSmallViewElements.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (visibleSmallViewElements[i]));
if (width < 640) {
elt.classList.remove('hidden');
}
else {
elt.classList.add('hidden');
}
}
/** @type {?} */
var toolbarButtonSpacer = container.getElementsByClassName('toolbarButtonSpacer');
for (var i = 0; i < toolbarButtonSpacer.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (toolbarButtonSpacer[i]));
if (width < 640) {
elt.classList.add('below640px');
}
else {
elt.classList.remove('below640px');
}
}
/** @type {?} */
var findbar = document.getElementsByClassName('findbar');
for (var i = 0; i < findbar.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (findbar[i]));
if (width < 640) {
elt.classList.add('below640px');
}
else {
elt.classList.remove('below640px');
}
}
}
/**
* @param {?} container
* @param {?} width
* @return {?}
*/
export function resizeUpTo700px(container, width) {
/** @type {?} */
var mediumElements = container.getElementsByClassName('hiddenMediumView');
for (var i = 0; i < mediumElements.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (mediumElements[i]));
if (width < 700) {
elt.classList.add('hidden');
}
else {
elt.classList.remove('hidden');
}
}
// #103
/** @type {?} */
var visibleMediumElements = container.getElementsByClassName('visibleMediumView');
for (var i = 0; i < visibleMediumElements.length; i++) {
/** @type {?} */
var elt = (/** @type {?} */ (visibleMediumElements[i]));
if (width < 700) {
elt.classList.remove('hidden');
}
else {
elt.classList.add('hidden');
}
}
}
/**
* @param {?} width
* @return {?}
*/
export function resizeUpTo900px(width) {
/** @type {?} */
var elt = document.getElementById('toolbarViewerMiddle');
if (elt) {
if (width < 900) {
elt.classList.add('toolbarViewerMiddleBelow900px');
}
else {
elt.classList.remove('toolbarViewerMiddleBelow900px');
}
}
}
/**
* @param {?} width
* @return {?}
*/
export function resizeUpTo840px(width) {
/** @type {?} */
var elt = document.getElementsByClassName('zoom')[0];
if (elt) {
if (width < 840) {
elt.classList.add('below840px');
}
else {
elt.classList.remove('below840px');
}
}
}
/**
* @param {?} container
* @param {?} width
* @return {?}
*/
export function resizeUpTo770px(container, width) {
/** @type {?} */
var elt = document.getElementsByClassName('zoom')[0];
if (elt) {
if (width < 770) {
elt.classList.add('below770px');
}
else {
elt.classList.remove('below770px');
}
}
/** @type {?} */
var hiddenLargeElements = container.getElementsByClassName('hiddenLargeView');
for (var i = 0; i < hiddenLargeElements.length; i++) {
elt = (/** @type {?} */ (hiddenLargeElements[i]));
if (width < 770) {
elt.classList.add('hidden');
}
else {
elt.classList.remove('hidden');
}
}
/** @type {?} */
var visibleLargeElements = container.getElementsByClassName('visibleLargeView');
for (var i = 0; i < visibleLargeElements.length; i++) {
elt = (/** @type {?} */ (visibleLargeElements[i]));
if (width < 770) {
elt.classList.remove('hidden');
}
else {
elt.classList.add('hidden');
}
}
}
/**
* @return {?}
*/
export function removeDynamicCSS() {
/** @type {?} */
var classesToRemove = ['toolbarViewerMiddleBelow900px', 'below840px', 'below770px', 'below700px', 'below640px'];
/** @type {?} */
var elt = document.getElementsByClassName('zoom')[0];
if (elt) {
classesToRemove.forEach((/**
* @param {?} c
* @return {?}
*/
function (c) {
/** @type {?} */
var parents = elt.getElementsByClassName(c);
if (parents) {
for (var i = 0; i < parents.length; i++) {
/** @type {?} */
var element = parents.item(i);
if (element) {
element.classList.remove(c);
}
}
}
}));
/** @type {?} */
var tinyElement = document.getElementById('scaleSelectContainer');
if (tinyElement) {
tinyElement.classList.remove('hidden');
}
/** @type {?} */
var classesToRemoveHiddenFrom = [
'hiddenSmallView',
'visibleSmallView',
'hiddenMediumView',
'visibleMediumView',
'hiddenLargeView',
'visibleLargeView'
];
classesToRemoveHiddenFrom.forEach((/**
* @param {?} c
* @return {?}
*/
function (c) {
/** @type {?} */
var parents = elt.getElementsByClassName(c);
if (parents) {
for (var i = 0; i < parents.length; i++) {
/** @type {?} */
var element = parents.item(i);
if (element) {
element.classList.remove('hidden');
}
}
}
}));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzcG9uc2l2ZUNTU1NpbXVsYXRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci8iLCJzb3VyY2VzIjpbImxpYi9SZXNwb25zaXZlQ1NTU2ltdWxhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsU0FBUyxHQUFHOztRQUNOLE9BQU8sR0FBRyxtQkFBQSxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQWU7SUFDMUUsT0FBTyxPQUFPLEVBQUU7UUFDZCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3RCLE9BQU8sT0FBTyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxQixNQUFNO1NBQ1A7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUNqQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWE7O1FBQ3JDLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDOztRQUM3RCxJQUFJLEdBQUcsbUJBQUEsV0FBVyxFQUFlO0lBQ3ZDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNmLDRDQUE0QztRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUM5QjtTQUFNO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDakM7QUFDSCxDQUFDOzs7Ozs7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQXNCLEVBQUUsS0FBYTs7UUFDN0QsYUFBYSxHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQztJQUN6RSxLQUFLLElBQUksQ0FBQyxHQUFHLENB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LENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ3BDO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLEVBQUMsQ0FBQztLQUNKO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIHJ0bCgpOiBib29sZWFuIHtcbiAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b29sYmFyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gIHdoaWxlIChlbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQuZGlyICE9PSAnJykge1xuICAgICAgcmV0dXJuIGVsZW1lbnQuZGlyID09PSAncnRsJztcbiAgICB9XG4gICAgaWYgKCFlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZVVwVG81MzVweCh3aWR0aDogbnVtYmVyKSB7XG4gIGNvbnN0IHRpbnlFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU2VsZWN0Q29udGFpbmVyJyk7XG4gIGNvbnN0IHRpbnkgPSB0aW55RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgaWYgKHdpZHRoIDwgNTM1KSB7XG4gICAgLy8gbm90IHBlcmZlY3QsIGJ1dCBnb29kIGZpcnN0IGFwcHJveGltYXRpb25cbiAgICB0aW55LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICB9IGVsc2Uge1xuICAgIHRpbnkuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZVVwVG82NDBweChjb250YWluZXI6IEhUTUxFbGVtZW50LCB3aWR0aDogbnVtYmVyKSB7XG4gIGNvbnN0IHNtYWxsRWxlbWVudHMgPSBjb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlkZGVuU21hbGxWaWV3Jyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc21hbGxFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVsdCA9IHNtYWxsRWxlbWVudHNbaV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHdpZHRoIDwgNjQwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzaWJsZVNtYWxsVmlld0VsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Zpc2libGVTbWFsbFZpZXcnKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpYmxlU21hbGxWaWV3RWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbHQgPSB2aXNpYmxlU21hbGxWaWV3RWxlbWVudHNbaV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHdpZHRoIDwgNjQwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdG9vbGJhckJ1dHRvblNwYWNlciA9IGNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0b29sYmFyQnV0dG9uU3BhY2VyJyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9vbGJhckJ1dHRvblNwYWNlci5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVsdCA9IHRvb2xiYXJCdXR0b25TcGFjZXJbaV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHdpZHRoIDwgNjQwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnYmVsb3c2NDBweCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnYmVsb3c2NDBweCcpO1xuICAgIH1cbiAgfVxuICBjb25zdCBmaW5kYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZmluZGJhcicpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbmRiYXIubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbHQgPSBmaW5kYmFyW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDY0MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2JlbG93NjQwcHgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2JlbG93NjQwcHgnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZVVwVG83MDBweChjb250YWluZXI6IEhUTUxFbGVtZW50LCB3aWR0aDogbnVtYmVyKSB7XG4gIGNvbnN0IG1lZGl1bUVsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZGRlbk1lZGl1bVZpZXcnKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZWRpdW1FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGVsdCA9IG1lZGl1bUVsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDcwMCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG4gIC8vICMxMDNcbiAgY29uc3QgdmlzaWJsZU1lZGl1bUVsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Zpc2libGVNZWRpdW1WaWV3Jyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaWJsZU1lZGl1bUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZWx0ID0gdmlzaWJsZU1lZGl1bUVsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDcwMCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvOTAwcHgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbGJhclZpZXdlck1pZGRsZScpO1xuICBpZiAoZWx0KSB7XG4gICAgaWYgKHdpZHRoIDwgOTAwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgndG9vbGJhclZpZXdlck1pZGRsZUJlbG93OTAwcHgnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWx0LmNsYXNzTGlzdC5yZW1vdmUoJ3Rvb2xiYXJWaWV3ZXJNaWRkbGVCZWxvdzkwMHB4Jyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvODQwcHgod2lkdGg6IG51bWJlcikge1xuICBjb25zdCBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6b29tJylbMF07XG4gIGlmIChlbHQpIHtcbiAgICBpZiAod2lkdGggPCA4NDApIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdiZWxvdzg0MHB4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QucmVtb3ZlKCdiZWxvdzg0MHB4Jyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNpemVVcFRvNzcwcHgoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgd2lkdGg6IG51bWJlcikge1xuICBsZXQgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnem9vbScpWzBdO1xuICBpZiAoZWx0KSB7XG4gICAgaWYgKHdpZHRoIDwgNzcwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LmFkZCgnYmVsb3c3NzBweCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnYmVsb3c3NzBweCcpO1xuICAgIH1cbiAgfVxuICBjb25zdCBoaWRkZW5MYXJnZUVsZW1lbnRzID0gY29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZGRlbkxhcmdlVmlldycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGhpZGRlbkxhcmdlRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBlbHQgPSBoaWRkZW5MYXJnZUVsZW1lbnRzW2ldIGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICh3aWR0aCA8IDc3MCkge1xuICAgICAgZWx0LmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgdmlzaWJsZUxhcmdlRWxlbWVudHMgPSBjb250YWluZXIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndmlzaWJsZUxhcmdlVmlldycpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc2libGVMYXJnZUVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZWx0ID0gdmlzaWJsZUxhcmdlRWxlbWVudHNbaV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHdpZHRoIDwgNzcwKSB7XG4gICAgICBlbHQuY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsdC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUR5bmFtaWNDU1MoKSB7XG4gIGNvbnN0IGNsYXNzZXNUb1JlbW92ZSA9IFsndG9vbGJhclZpZXdlck1pZGRsZUJlbG93OTAwcHgnLCAnYmVsb3c4NDBweCcsICdiZWxvdzc3MHB4JywgJ2JlbG93NzAwcHgnLCAnYmVsb3c2NDBweCddO1xuICBjb25zdCBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd6b29tJylbMF07XG4gIGlmIChlbHQpIHtcbiAgICBjbGFzc2VzVG9SZW1vdmUuZm9yRWFjaChjID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudHMgPSBlbHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjKTtcbiAgICAgIGlmIChwYXJlbnRzKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwYXJlbnRzLml0ZW0oaSk7XG4gICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHRpbnlFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYWxlU2VsZWN0Q29udGFpbmVyJyk7XG4gICAgaWYgKHRpbnlFbGVtZW50KSB7XG4gICAgICB0aW55RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICB9XG4gICAgY29uc3QgY2xhc3Nlc1RvUmVtb3ZlSGlkZGVuRnJvbSA9IFtcbiAgICAgICdoaWRkZW5TbWFsbFZpZXcnLFxuICAgICAgJ3Zpc2libGVTbWFsbFZpZXcnLFxuICAgICAgJ2hpZGRlbk1lZGl1bVZpZXcnLFxuICAgICAgJ3Zpc2libGVNZWRpdW1WaWV3JyxcbiAgICAgICdoaWRkZW5MYXJnZVZpZXcnLFxuICAgICAgJ3Zpc2libGVMYXJnZVZpZXcnXG4gICAgXTtcbiAgICBjbGFzc2VzVG9SZW1vdmVIaWRkZW5Gcm9tLmZvckVhY2goYyA9PiB7XG4gICAgICBjb25zdCBwYXJlbnRzID0gZWx0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYyk7XG4gICAgICBpZiAocGFyZW50cykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gcGFyZW50cy5pdGVtKGkpO1xuICAgICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=