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.
708 lines • 55.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/ngx-extended-pdf-viewer-server.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener, TemplateRef, ViewChild, } from '@angular/core';
import { pdfDefaultOptions } from './options/pdf-default-options';
import { VerbosityLevel } from './options/verbosity-level';
import { PdfDummyComponentsComponent } from './pdf-dummy-components/pdf-dummy-components.component';
import { ElementRef } from '@angular/core';
import { PdfSecondaryToolbarComponent } from './secondary-toolbar/pdf-secondary-toolbar/pdf-secondary-toolbar.component';
import { PdfSidebarComponent } from './sidebar/pdf-sidebar/pdf-sidebar.component';
import { ScrollModeType } from './options/pdf-viewer';
var NgxExtendedPdfViewerServerComponent = /** @class */ (function () {
function NgxExtendedPdfViewerServerComponent() {
this.customFindbarButtons = undefined;
this.formData = {};
this.formDataChange = new EventEmitter();
this.pageViewMode = 'multiple';
this.progress = new EventEmitter();
this.srcChange = new EventEmitter();
this.scrollMode = undefined;
this.scrollModeChange = new EventEmitter();
this.authorization = undefined;
this.httpHeaders = undefined;
this.contextMenuAllowed = true;
this.afterPrint = new EventEmitter();
this.beforePrint = new EventEmitter();
this.currentZoomFactor = new EventEmitter();
this.enablePrint = true;
/**
* Number of milliseconds to wait between initializing the PDF viewer and loading the PDF file.
* Most users can let this parameter safely at it's default value of zero.
* Set this to 1000 or higher if you run into timing problems (typically caused by loading the locale files
* after the PDF files, so they are not available when the PDF viewer is initialized).
*/
this.delayFirstView = 0;
/**
* How many log messages should be printed?
* Legal values: VerbosityLevel.INFOS (= 5), VerbosityLevel.WARNINGS (= 1), VerbosityLevel.ERRORS (= 0)
*/
this.logLevel = VerbosityLevel.WARNINGS;
this.enablePinchOnMobile = false;
/**
* Use the minified (minifiedJSLibraries="true", which is the default) or the user-readable pdf.js library (minifiedJSLibraries="false")
*/
this.minifiedJSLibraries = true;
this.primaryMenuVisible = true;
/**
* option to increase (or reduce) print resolution. Default is 150 (dpi). Sensible values
* are 300, 600, and 1200. Note the increase memory consumption, which may even result in a browser crash.
*/
this.printResolution = null;
this.rotationChange = new EventEmitter();
/**
* If this flag is true, this components adds a link to the locale assets. The pdf viewer
* sees this link and uses it to load the locale files automatically.
* @param useBrowserLocale boolean
*/
this.useBrowserLocale = false;
this.backgroundColor = '#e8e8eb';
/**
* Allows the user to define the name of the file after clicking "download"
*/
this.filenameForDownload = 'document.pdf';
/**
* Allows the user to disable the keyboard bindings completely
*/
this.ignoreKeyboard = false;
/**
* Allows the user to disable a list of key bindings.
*/
this.ignoreKeys = [];
/**
* Allows the user to enable a list of key bindings explicitly. If this property is set, every other key binding is ignored.
*/
this.acceptKeys = [];
/**
* Allows the user to put the viewer's svg images into an arbitrary folder
*/
this.imageResourcesPath = './' + pdfDefaultOptions.assetsFolder + '/images/';
/**
* Allows the user to put their locale folder into an arbitrary folder
*/
this.localeFolderPath = './' + pdfDefaultOptions.assetsFolder + '/locale';
/**
* Override the default locale. This must be the complete locale name, such as "es-ES". The string is allowed to be all lowercase.
*/
this.language = undefined;
/**
* By default, listening to the URL is deactivated because often the anchor tag is used for the Angular router
*/
this.listenToURL = false;
/**
* Navigate to a certain "named destination"
*/
this.nameddest = undefined;
/**
* allows you to pass a password to read password-protected files
*/
this.password = undefined;
/**
* pdf.js can show signatures, but fails to verify them. So they are switched off by default.
* Set "[showUnverifiedSignatures]"="true" to display e-signatures nonetheless.
*/
this.showUnverifiedSignatures = false;
this.sidebarVisible = undefined;
this.sidebarVisibleChange = new EventEmitter();
this.showFindButton = undefined;
this.showPagingButtons = true;
this.showZoomButtons = true;
this.showPresentationModeButton = false;
this.showOpenFileButton = true;
this.showPrintButton = true;
this.showDownloadButton = true;
this.showBookmarkButton = true;
this.theme = 'light';
this.showToolbar = true;
this.showSecondaryToolbarButton = true;
/**
* Set by the event (secondaryMenuIsEmpty)
*/
this.hideKebabMenuForSecondaryToolbar = false;
this.showRotateButton = true;
this.handTool = true;
this.handToolChange = new EventEmitter();
this.showHandToolButton = false;
this.showScrollingButton = true;
this.showSpreadButton = true;
this.showPropertiesButton = true;
this.showBorders = true;
this.spreadChange = new EventEmitter();
this.thumbnailDrawn = new EventEmitter();
this._page = undefined;
this.pageChange = new EventEmitter();
this.pageLabel = undefined;
this.pageLabelChange = new EventEmitter();
this.pagesLoaded = new EventEmitter();
this.pageRendered = new EventEmitter();
this.pdfDownloaded = new EventEmitter();
this.pdfLoaded = new EventEmitter();
this.pdfLoadingFailed = new EventEmitter();
this.textLayer = undefined;
this.textLayerRendered = new EventEmitter();
this.updateFindMatchesCount = new EventEmitter();
this.updateFindState = new EventEmitter();
/**
* Legal values: undefined, 'auto', 'page-actual', 'page_fit', 'page-width', or '50' (or any other percentage)
*/
this.zoom = undefined;
this.zoomChange = new EventEmitter();
this.zoomLevels = ['auto', 'page-actual', 'page-fit', 'page-width', 0.5, 1, 1.25, 1.5, 2, 3, 4];
this.maxZoom = 10;
this.minZoom = 0.1;
/**
* This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices.
* This attribute is a string with a percent character at the end (e.g. "150%").
*/
this._mobileFriendlyZoom = '100%';
this.mobileFriendlyZoomScale = 1;
this.toolbarMarginTop = '0px';
this.toolbarWidth = '100%';
this.toolbarWidthInPixels = 100;
this.secondaryToolbarTop = undefined;
// dirty IE11 hack - temporary solution
this.findbarTop = undefined;
// dirty IE11 hack - temporary solution
this.findbarLeft = undefined;
// Additional PDF Form Field Types #567: Used to store the exported values of radio and checkbox buttons
this.buttonValues = {};
this.shuttingDown = false;
}
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "src", {
set: /**
* @param {?} url
* @return {?}
*/
function (url) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "base64Src", {
set: /**
* @param {?} base64
* @return {?}
*/
function (base64) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "height", {
set: /**
* @param {?} h
* @return {?}
*/
function (h) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "showSidebarButton", {
get: /**
* @return {?}
*/
function () {
return true;
},
set: /**
* @param {?} show
* @return {?}
*/
function (show) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "page", {
get: /**
* @return {?}
*/
function () {
return this._page;
},
set: /**
* @param {?} p
* @return {?}
*/
function (p) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "mobileFriendlyZoom", {
get: /**
* @return {?}
*/
function () {
return this._mobileFriendlyZoom;
},
/**
* This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices.
* This attribute is a string with a percent character at the end (e.g. "150%").
*/
set: /**
* This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices.
* This attribute is a string with a percent character at the end (e.g. "150%").
* @param {?} zoom
* @return {?}
*/
function (zoom) { },
enumerable: true,
configurable: true
});
Object.defineProperty(NgxExtendedPdfViewerServerComponent.prototype, "sidebarPositionTop", {
get: /**
* @return {?}
*/
function () {
return '32px';
},
enumerable: true,
configurable: true
});
/**
* @param {?} changes
* @return {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) { };
/**
* @return {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () { };
/**
* @return {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () { };
/**
* @return {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () { };
/**
* @return {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.onContextMenu = /**
* @return {?}
*/
function () {
return this.contextMenuAllowed;
};
NgxExtendedPdfViewerServerComponent.ngxExtendedPdfViewerInitialized = false;
NgxExtendedPdfViewerServerComponent.decorators = [
{ type: Component, args: [{
selector: 'ngx-extended-pdf-viewer',
template: "<link *ngIf=\"useBrowserLocale\" rel=\"resource\" type=\"application/l10n\" [attr.xhref]=\"localeFolderPath+'/locale.properties'\" origin=\"ngx-extended-pdf-viewer\" />\n<pdf-dark-theme *ngIf=\"theme==='dark'\"></pdf-dark-theme>\n<pdf-light-theme *ngIf=\"theme==='light'\"></pdf-light-theme>\n\n<pdf-dynamic-css [zoom]=\"mobileFriendlyZoomScale\" [width]=\"toolbarWidthInPixels\"></pdf-dynamic-css>\n<div class=\"zoom\" [style.height]=\"height\">\n <div class=\"html\">\n <div id=\"mainContainer\">\n <pdf-dummy-components></pdf-dummy-components>\n </div>\n </div>\n</div>\n\n<ng-template #defaultFreeFloatingBar>\n\n</ng-template>\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
NgxExtendedPdfViewerServerComponent.ctorParameters = function () { return []; };
NgxExtendedPdfViewerServerComponent.propDecorators = {
dummyComponents: [{ type: ViewChild, args: [PdfDummyComponentsComponent,] }],
root: [{ type: ViewChild, args: ['root',] }],
customFindbarInputArea: [{ type: Input }],
customToolbar: [{ type: Input }],
customFindbar: [{ type: Input }],
customFindbarButtons: [{ type: Input }],
customSecondaryToolbar: [{ type: Input }],
customSidebar: [{ type: Input }],
customThumbnail: [{ type: Input }],
customFreeFloatingBar: [{ type: Input }],
formData: [{ type: Input }],
formDataChange: [{ type: Output }],
pageViewMode: [{ type: Input }],
progress: [{ type: Output }],
secondaryToolbarComponent: [{ type: ViewChild, args: ['pdfSecondaryToolbarComponent',] }],
sidebarComponent: [{ type: ViewChild, args: ['pdfsidebar',] }],
srcChange: [{ type: Output }],
scrollMode: [{ type: Input }],
scrollModeChange: [{ type: Output }],
authorization: [{ type: Input }],
httpHeaders: [{ type: Input }],
contextMenuAllowed: [{ type: Input }],
afterPrint: [{ type: Output }],
beforePrint: [{ type: Output }],
currentZoomFactor: [{ type: Output }],
enablePrint: [{ type: Input }],
delayFirstView: [{ type: Input }],
logLevel: [{ type: Input }],
enablePinchOnMobile: [{ type: Input }],
minifiedJSLibraries: [{ type: Input }],
printResolution: [{ type: Input }],
rotation: [{ type: Input }],
rotationChange: [{ type: Output }],
src: [{ type: Input }],
base64Src: [{ type: Input }],
height: [{ type: Input }],
useBrowserLocale: [{ type: Input }],
backgroundColor: [{ type: Input }],
filenameForDownload: [{ type: Input }],
ignoreKeyboard: [{ type: Input }],
ignoreKeys: [{ type: Input }],
acceptKeys: [{ type: Input }],
imageResourcesPath: [{ type: Input }],
localeFolderPath: [{ type: Input }],
language: [{ type: Input }],
listenToURL: [{ type: Input }],
nameddest: [{ type: Input }],
password: [{ type: Input }],
showUnverifiedSignatures: [{ type: Input }],
startTabindex: [{ type: Input }],
showSidebarButton: [{ type: Input }],
sidebarVisible: [{ type: Input }],
sidebarVisibleChange: [{ type: Output }],
showFindButton: [{ type: Input }],
showPagingButtons: [{ type: Input }],
showZoomButtons: [{ type: Input }],
showPresentationModeButton: [{ type: Input }],
showOpenFileButton: [{ type: Input }],
showPrintButton: [{ type: Input }],
showDownloadButton: [{ type: Input }],
showBookmarkButton: [{ type: Input }],
theme: [{ type: Input }],
showToolbar: [{ type: Input }],
showSecondaryToolbarButton: [{ type: Input }],
showRotateButton: [{ type: Input }],
handTool: [{ type: Input }],
handToolChange: [{ type: Output }],
showHandToolButton: [{ type: Input }],
showScrollingButton: [{ type: Input }],
showSpreadButton: [{ type: Input }],
showPropertiesButton: [{ type: Input }],
showBorders: [{ type: Input }],
spread: [{ type: Input }],
spreadChange: [{ type: Output }],
thumbnailDrawn: [{ type: Output }],
page: [{ type: Input }],
pageChange: [{ type: Output }],
pageLabel: [{ type: Input }],
pageLabelChange: [{ type: Output }],
pagesLoaded: [{ type: Output }],
pageRendered: [{ type: Output }],
pdfDownloaded: [{ type: Output }],
pdfLoaded: [{ type: Output }],
pdfLoadingFailed: [{ type: Output }],
textLayer: [{ type: Input }],
textLayerRendered: [{ type: Output }],
updateFindMatchesCount: [{ type: Output }],
updateFindState: [{ type: Output }],
zoom: [{ type: Input }],
zoomChange: [{ type: Output }],
zoomLevels: [{ type: Input }],
maxZoom: [{ type: Input }],
minZoom: [{ type: Input }],
_mobileFriendlyZoom: [{ type: Input }],
mobileFriendlyZoom: [{ type: Input }],
onContextMenu: [{ type: HostListener, args: ['contextmenu',] }]
};
return NgxExtendedPdfViewerServerComponent;
}());
export { NgxExtendedPdfViewerServerComponent };
if (false) {
/** @type {?} */
NgxExtendedPdfViewerServerComponent.ngxExtendedPdfViewerInitialized;
/**
* The dummy components are inserted automatically when the user customizes the toolbar
* without adding every original toolbar item. Without the dummy components, the
* initialization code of pdf.js crashes because it assume that every standard widget is there.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.dummyComponents;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.root;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customFindbarInputArea;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customToolbar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customFindbar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customFindbarButtons;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customSecondaryToolbar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customSidebar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customThumbnail;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.customFreeFloatingBar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.formData;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.formDataChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pageViewMode;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.progress;
/**
* @type {?}
* @private
*/
NgxExtendedPdfViewerServerComponent.prototype.secondaryToolbarComponent;
/**
* @type {?}
* @private
*/
NgxExtendedPdfViewerServerComponent.prototype.sidebarComponent;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.srcChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.scrollMode;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.scrollModeChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.authorization;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.httpHeaders;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.contextMenuAllowed;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.afterPrint;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.beforePrint;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.currentZoomFactor;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.enablePrint;
/**
* Number of milliseconds to wait between initializing the PDF viewer and loading the PDF file.
* Most users can let this parameter safely at it's default value of zero.
* Set this to 1000 or higher if you run into timing problems (typically caused by loading the locale files
* after the PDF files, so they are not available when the PDF viewer is initialized).
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.delayFirstView;
/**
* store the timeout id so it can be canceled if user leaves the page before the PDF is shown
* @type {?}
* @private
*/
NgxExtendedPdfViewerServerComponent.prototype.initTimeout;
/**
* How many log messages should be printed?
* Legal values: VerbosityLevel.INFOS (= 5), VerbosityLevel.WARNINGS (= 1), VerbosityLevel.ERRORS (= 0)
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.logLevel;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.enablePinchOnMobile;
/**
* Use the minified (minifiedJSLibraries="true", which is the default) or the user-readable pdf.js library (minifiedJSLibraries="false")
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.minifiedJSLibraries;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.primaryMenuVisible;
/**
* option to increase (or reduce) print resolution. Default is 150 (dpi). Sensible values
* are 300, 600, and 1200. Note the increase memory consumption, which may even result in a browser crash.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.printResolution;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.rotation;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.rotationChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.hasSignature;
/**
* If this flag is true, this components adds a link to the locale assets. The pdf viewer
* sees this link and uses it to load the locale files automatically.
* \@param useBrowserLocale boolean
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.useBrowserLocale;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.backgroundColor;
/**
* Allows the user to define the name of the file after clicking "download"
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.filenameForDownload;
/**
* Allows the user to disable the keyboard bindings completely
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ignoreKeyboard;
/**
* Allows the user to disable a list of key bindings.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.ignoreKeys;
/**
* Allows the user to enable a list of key bindings explicitly. If this property is set, every other key binding is ignored.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.acceptKeys;
/**
* Allows the user to put the viewer's svg images into an arbitrary folder
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.imageResourcesPath;
/**
* Allows the user to put their locale folder into an arbitrary folder
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.localeFolderPath;
/**
* Override the default locale. This must be the complete locale name, such as "es-ES". The string is allowed to be all lowercase.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.language;
/**
* By default, listening to the URL is deactivated because often the anchor tag is used for the Angular router
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.listenToURL;
/**
* Navigate to a certain "named destination"
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.nameddest;
/**
* allows you to pass a password to read password-protected files
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.password;
/**
* pdf.js can show signatures, but fails to verify them. So they are switched off by default.
* Set "[showUnverifiedSignatures]"="true" to display e-signatures nonetheless.
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.showUnverifiedSignatures;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.startTabindex;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.sidebarVisible;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.sidebarVisibleChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showFindButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showPagingButtons;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showZoomButtons;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showPresentationModeButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showOpenFileButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showPrintButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showDownloadButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showBookmarkButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.theme;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showToolbar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showSecondaryToolbarButton;
/**
* Set by the event (secondaryMenuIsEmpty)
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.hideKebabMenuForSecondaryToolbar;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showRotateButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.handTool;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.handToolChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showHandToolButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showScrollingButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showSpreadButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showPropertiesButton;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.showBorders;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.spread;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.spreadChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.thumbnailDrawn;
/**
* @type {?}
* @private
*/
NgxExtendedPdfViewerServerComponent.prototype._page;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pageChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pageLabel;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pageLabelChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pagesLoaded;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pageRendered;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pdfDownloaded;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pdfLoaded;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.pdfLoadingFailed;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.textLayer;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.textLayerRendered;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.updateFindMatchesCount;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.updateFindState;
/**
* Legal values: undefined, 'auto', 'page-actual', 'page_fit', 'page-width', or '50' (or any other percentage)
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype.zoom;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.zoomChange;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.zoomLevels;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.maxZoom;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.minZoom;
/**
* This attributes allows you to increase the size of the UI elements so you can use them on small mobile devices.
* This attribute is a string with a percent character at the end (e.g. "150%").
* @type {?}
*/
NgxExtendedPdfViewerServerComponent.prototype._mobileFriendlyZoom;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.mobileFriendlyZoomScale;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.toolbarMarginTop;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.toolbarWidth;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.toolbarWidthInPixels;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.secondaryToolbarTop;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.findbarTop;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.findbarLeft;
/** @type {?} */
NgxExtendedPdfViewerServerComponent.prototype.buttonValues;
/**
* @type {?}
* @private
*/
NgxExtendedPdfViewerServerComponent.prototype.shuttingDown;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWV4dGVuZGVkLXBkZi12aWV3ZXItc2VydmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1leHRlbmRlZC1wZGYtdmlld2VyLyIsInNvdXJjZXMiOlsibGliL25neC1leHRlbmRlZC1wZGYtdmlld2VyLXNlcnZlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxNQUFNLEVBQ04sWUFBWSxFQUNaLHVCQUF1QixFQUN2QixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDcEcsT0FBTyxFQUFpQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkVBQTJFLENBQUM7QUFHekgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXREO0lBaVhFO1FBblZPLHlCQUFvQixHQUFpQyxTQUFTLENBQUM7UUFlL0QsYUFBUSxHQUFpQixFQUFFLENBQUM7UUFHNUIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUdsRCxpQkFBWSxHQUF1RCxVQUFVLENBQUM7UUFHOUUsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBU2hELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3ZDLGVBQVUsR0FBK0IsU0FBUyxDQUFDO1FBR25ELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBR3RELGtCQUFhLEdBQXVCLFNBQVMsQ0FBQztRQUc5QyxnQkFBVyxHQUF1QixTQUFTLENBQUM7UUFHNUMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRzFCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd2QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRy9DLGdCQUFXLEdBQUcsSUFBSSxDQUFDOzs7Ozs7O1FBU25CLG1CQUFjLEdBQUcsQ0FBQyxDQUFDOzs7OztRQVFuQixhQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUduQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7Ozs7UUFJNUIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLHVCQUFrQixHQUFHLElBQUksQ0FBQzs7Ozs7UUFLMUIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFNdkIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQzs7Ozs7O1FBbUJ4RCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFHekIsb0JBQWUsR0FBRyxTQUFTLENBQUM7Ozs7UUFJNUIsd0JBQW1CLEdBQUcsY0FBYyxDQUFDOzs7O1FBSXJDLG1CQUFjLEdBQUcsS0FBSyxDQUFDOzs7O1FBSXZCLGVBQVUsR0FBa0IsRUFBRSxDQUFDOzs7O1FBSS9CLGVBQVUsR0FBa0IsRUFBRSxDQUFDOzs7O1FBSS9CLHVCQUFrQixHQUFHLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDOzs7O1FBSXhFLHFCQUFnQixHQUFHLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDOzs7O1FBS3JFLGFBQVEsR0FBdUIsU0FBUyxDQUFDOzs7O1FBSXpDLGdCQUFXLEdBQUcsS0FBSyxDQUFDOzs7O1FBSXBCLGNBQVMsR0FBdUIsU0FBUyxDQUFDOzs7O1FBSTFDLGFBQVEsR0FBdUIsU0FBUyxDQUFDOzs7OztRQU16Qyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFZakMsbUJBQWMsR0FBd0IsU0FBUyxDQUFDO1FBR2hELHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHbkQsbUJBQWMsR0FBd0IsU0FBUyxDQUFDO1FBRWhELHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6QixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFFbkMsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRTFCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRXZCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUUxQix1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFHMUIsVUFBSyxHQUFnQyxPQUFPLENBQUM7UUFHN0MsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFHbkIsK0JBQTBCLEdBQUcsSUFBSSxDQUFDOzs7O1FBR2xDLHFDQUFnQyxHQUFHLEtBQUssQ0FBQztRQUd6QyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFN0MsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUUzQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFeEIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRTVCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBTW5CLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFHMUQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUUzRCxVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQVV2QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHcEQsY0FBUyxHQUF1QixTQUFTLENBQUM7UUFHMUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUd6RCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBR25ELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFHckQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUd2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFHL0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUc3QyxjQUFTLEdBQXdCLFNBQVMsQ0FBQztRQUczQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUcvRCwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUdwRSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7Ozs7UUFJaEQsU0FBSSxHQUFnQyxTQUFTLENBQUM7UUFHOUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUErQixDQUFDO1FBRzdELGVBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUczRixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBR2IsWUFBTyxHQUFHLEdBQUcsQ0FBQzs7Ozs7UUFLWix3QkFBbUIsR0FBRyxNQUFNLENBQUM7UUFFL0IsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixpQkFBWSxHQUFHLE1BQU0sQ0FBQztRQUV0Qix5QkFBb0IsR0FBRyxHQUFHLENBQUM7UUFFM0Isd0JBQW1CLEdBQXVCLFNBQVMsQ0FBQzs7UUFHcEQsZUFBVSxHQUF1QixTQUFTLENBQUM7O1FBRzNDLGdCQUFXLEdBQXVCLFNBQVMsQ0FBQzs7UUFHNUMsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFZdEIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFNZCxDQUFDO0lBOU9oQixzQkFDVyxvREFBRzs7Ozs7UUFEZCxVQUNlLEdBQThELElBQUcsQ0FBQzs7O09BQUE7SUFFakYsc0JBQ1csMERBQVM7Ozs7O1FBRHBCLFVBQ3FCLE1BQWMsSUFBRyxDQUFDOzs7T0FBQTtJQUV2QyxzQkFDVyx1REFBTTs7Ozs7UUFEakIsVUFDa0IsQ0FBUyxJQUFHLENBQUM7OztPQUFBO0lBK0QvQixzQkFBVyxrRUFBaUI7Ozs7UUFBNUI7WUFDRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7Ozs7O1FBQ0QsVUFDNkIsSUFBYSxJQUFHLENBQUM7OztPQUY3QztJQW1FRCxzQkFBVyxxREFBSTs7OztRQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7Ozs7O1FBRUQsVUFDZ0IsQ0FBcUIsSUFBRyxDQUFDOzs7T0FIeEM7SUFpRkQsc0JBQVcsbUVBQWtCOzs7O1FBQTdCO1lBQ0UsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsQ0FBQztRQUNEOzs7V0FHRzs7Ozs7OztRQUNILFVBQzhCLElBQVksSUFBRyxDQUFDOzs7T0FON0M7SUFVRCxzQkFBVyxtRUFBa0I7Ozs7UUFBN0I7WUFDRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDOzs7T0FBQTs7Ozs7SUFHRCx5REFBVzs7OztJQUFYLFVBQVksT0FBc0IsSUFBUyxDQUFDOzs7O0lBRTVDLHNEQUFROzs7SUFBUixjQUFZLENBQUM7Ozs7SUFFYiw2REFBZTs7O0lBQWYsY0FBbUIsQ0FBQzs7OztJQUViLHlEQUFXOzs7SUFBbEIsY0FBNEIsQ0FBQzs7OztJQUd0QiwyREFBYTs7O0lBRHBCO1FBRUUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQXZYYSxtRUFBK0IsR0FBRyxLQUFLLENBQUM7O2dCQU52RCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsa3BCQUE4RDtvQkFDOUQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzs7OztrQ0FTRSxTQUFTLFNBQUMsMkJBQTJCO3VCQUdyQyxTQUFTLFNBQUMsTUFBTTt5Q0FJaEIsS0FBSztnQ0FHTCxLQUFLO2dDQUdMLEtBQUs7dUNBR0wsS0FBSzt5Q0FHTCxLQUFLO2dDQUdMLEtBQUs7a0NBR0wsS0FBSzt3Q0FHTCxLQUFLOzJCQUdMLEtBQUs7aUNBR0wsTUFBTTsrQkFHTixLQUFLOzJCQUdMLE1BQU07NENBR04sU0FBUyxTQUFDLDhCQUE4QjttQ0FHeEMsU0FBUyxTQUFDLFlBQVk7NEJBR3RCLE1BQU07NkJBR04sS0FBSzttQ0FHTCxNQUFNO2dDQUdOLEtBQUs7OEJBR0wsS0FBSztxQ0FHTCxLQUFLOzZCQUdMLE1BQU07OEJBR04sTUFBTTtvQ0FHTixNQUFNOzhCQUdOLEtBQUs7aUNBU0wsS0FBSzsyQkFRTCxLQUFLO3NDQUdMLEtBQUs7c0NBSUwsS0FBSztrQ0FPTCxLQUFLOzJCQUdMLEtBQUs7aUNBR0wsTUFBTTtzQkFLTixLQUFLOzRCQUdMLEtBQUs7eUJBR0wsS0FBSzttQ0FRTCxLQUFLO2tDQUdMLEtBQUs7c0NBSUwsS0FBSztpQ0FJTCxLQUFLOzZCQUlMLEtBQUs7NkJBSUwsS0FBSztxQ0FJTCxLQUFLO21DQUlMLEtBQUs7MkJBS0wsS0FBSzs4QkFJTCxLQUFLOzRCQUlMLEtBQUs7MkJBSUwsS0FBSzsyQ0FNTCxLQUFLO2dDQUdMLEtBQUs7b0NBTUwsS0FBSztpQ0FHTCxLQUFLO3VDQUdMLE1BQU07aUNBR04sS0FBSztvQ0FFTCxLQUFLO2tDQUVMLEtBQUs7NkNBRUwsS0FBSztxQ0FFTCxLQUFLO2tDQUVMLEtBQUs7cUNBRUwsS0FBSztxQ0FFTCxLQUFLO3dCQUdMLEtBQUs7OEJBR0wsS0FBSzs2Q0FHTCxLQUFLO21DQU1MLEtBQUs7MkJBRUwsS0FBSztpQ0FFTCxNQUFNO3FDQUVOLEtBQUs7c0NBRUwsS0FBSzttQ0FFTCxLQUFLO3VDQUVMLEtBQUs7OEJBRUwsS0FBSzt5QkFHTCxLQUFLOytCQUdMLE1BQU07aUNBR04sTUFBTTt1QkFTTixLQUFLOzZCQUdMLE1BQU07NEJBR04sS0FBSztrQ0FHTCxNQUFNOzhCQUdOLE1BQU07K0JBR04sTUFBTTtnQ0FHTixNQUFNOzRCQUdOLE1BQU07bUNBR04sTUFBTTs0QkFHTixLQUFLO29DQUdMLE1BQU07eUNBR04sTUFBTTtrQ0FHTixNQUFNO3VCQUlOLEtBQUs7NkJBR0wsTUFBTTs2QkFHTixLQUFLOzBCQUdMLEtBQUs7MEJBR0wsS0FBSztzQ0FNTCxLQUFLO3FDQTRCTCxLQUFLO2dDQWtCTCxZQUFZLFNBQUMsYUFBYTs7SUFJN0IsMENBQUM7Q0FBQSxBQTlYRCxJQThYQztTQXpYWSxtQ0FBbUM7OztJQUM5QyxvRUFBc0Q7Ozs7Ozs7SUFPdEQsOERBQ29EOztJQUVwRCxtREFDd0I7O0lBR3hCLHFFQUNnRDs7SUFFaEQsNERBQ3VDOztJQUV2Qyw0REFDdUM7O0lBRXZDLG1FQUNzRTs7SUFFdEUscUVBQ2dEOztJQUVoRCw0REFDdUM7O0lBRXZDLDhEQUN5Qzs7SUFFekMsb0VBQytDOztJQUUvQyx1REFDbUM7O0lBRW5DLDZEQUN5RDs7SUFFekQsMkRBQ3FGOztJQUVyRix1REFDdUQ7Ozs7O0lBRXZELHdFQUNnRTs7Ozs7SUFFaEUsK0RBQzhDOztJQUU5Qyx3REFDOEM7O0lBRTlDLHlEQUMwRDs7SUFFMUQsK0RBQzZEOztJQUU3RCw0REFDcUQ7O0lBRXJELDBEQUNtRDs7SUFFbkQsaUVBQ2lDOztJQUVqQyx5REFDNkM7O0lBRTdDLDBEQUM4Qzs7SUFFOUMsZ0VBQ3NEOztJQUV0RCwwREFDMEI7Ozs7Ozs7O0lBUTFCLDZEQUMwQjs7Ozs7O0lBRzFCLDBEQUF5Qjs7Ozs7O0lBSXpCLHVEQUMwQzs7SUFFMUMsa0VBQ21DOzs7OztJQUduQyxrRUFDa0M7O0lBRWxDLGlFQUFpQzs7Ozs7O0lBSWpDLDhEQUM4Qjs7SUFFOUIsdURBQ29DOztJQUVwQyw2REFDK0Q7O0lBRS9ELDJEQUE2Qjs7Ozs7OztJQWdCN0IsK0RBQ2dDOztJQUVoQyw4REFDbUM7Ozs7O0lBR25DLGtFQUM0Qzs7Ozs7SUFHNUMsNkRBQzhCOzs7OztJQUc5Qix5REFDc0M7Ozs7O0lBR3RDLHlEQUNzQzs7Ozs7SUFHdEMsaUVBQytFOzs7OztJQUcvRSwrREFDNEU7Ozs7O0lBSTVFLHVEQUNnRDs7Ozs7SUFHaEQsMERBQzJCOzs7OztJQUczQix3REFDaUQ7Ozs7O0lBR2pELHVEQUNnRDs7Ozs7O0lBS2hELHVFQUN3Qzs7SUFFeEMsNERBQ3lDOztJQVF6Qyw2REFDdUQ7O0lBRXZELG1FQUMwRDs7SUFFMUQsNkRBQ3VEOztJQUN2RCxnRUFDZ0M7O0lBQ2hDLDhEQUM4Qjs7SUFDOUIseUVBQzBDOztJQUMxQyxpRUFDaUM7O0lBQ2pDLDhEQUM4Qjs7SUFDOUIsaUVBQ2lDOztJQUNqQyxpRUFDaUM7O0lBRWpDLG9EQUNvRDs7SUFFcEQsMERBQzBCOztJQUUxQix5RUFDeUM7Ozs7O0lBR3pDLCtFQUFnRDs7SUFFaEQsK0RBQytCOztJQUMvQix1REFDdUI7O0lBQ3ZCLDZEQUNvRDs7SUFDcEQsaUVBQ2tDOztJQUNsQyxrRUFDa0M7O0lBQ2xDLCtEQUMrQjs7SUFDL0IsbUVBQ21DOztJQUNuQywwREFDMEI7O0lBRTFCLHFEQUNzQzs7SUFFdEMsMkRBQ2lFOztJQUVqRSw2REFDbUU7Ozs7O0lBRW5FLG9EQUE4Qzs7SUFTOUMseURBQzJEOztJQUUzRCx3REFDaUQ7O0lBRWpELDhEQUNnRTs7SUFFaEUsMERBQzBEOztJQUUxRCwyREFDNEQ7O0lBRTVELDREQUM4RDs7SUFFOUQsd0RBQ3NEOztJQUV0RCwrREFDb0Q7O0lBRXBELHdEQUNrRDs7SUFFbEQsZ0VBQ3NFOztJQUV0RSxxRUFDMkU7O0lBRTNFLDhEQUN1RDs7Ozs7SUFHdkQsbURBQ3FEOztJQUVyRCx5REFDb0U7O0lBRXBFLHlEQUNrRzs7SUFFbEcsc0RBQ29COztJQUVwQixzREFDcUI7Ozs7OztJQUtyQixrRUFBc0M7O0lBRXRDLHNFQUFtQzs7SUFFbkMsK0RBQWdDOztJQUVoQywyREFBNkI7O0lBRTdCLG1FQUFrQzs7SUFFbEMsa0VBQTJEOztJQUczRCx5REFBa0Q7O0lBR2xELDBEQUFtRDs7SUFHbkQsMkRBQThCOzs7OztJQVk5QiwyREFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBIb3N0TGlzdGVuZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYWdlc0xvYWRlZEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGFnZXMtbG9hZGVkLWV2ZW50JztcbmltcG9ydCB7IFBhZ2VSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGFnZS1yZW5kZXJlZC1ldmVudCc7XG5pbXBvcnQgeyBQZGZEb3dubG9hZGVkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9wZGYtZG93bmxvYWRlZC1ldmVudCc7XG5pbXBvcnQgeyBQZGZMb2FkZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzL3BkZi1sb2FkZWQtZXZlbnQnO1xuaW1wb3J0IHsgcGRmRGVmYXVsdE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMvcGRmLWRlZmF1bHQtb3B0aW9ucyc7XG5pbXBvcnQgeyBWZXJib3NpdHlMZXZlbCB9IGZyb20gJy4vb3B0aW9ucy92ZXJib3NpdHktbGV2ZWwnO1xuaW1wb3J0IHsgRmluZFN0YXRlLCBGaW5kUmVzdWx0TWF0Y2hlc0NvdW50IH0gZnJvbSAnLi9ldmVudHMvZmluZC1yZXN1bHQnO1xuaW1wb3J0IHsgUGRmRHVtbXlDb21wb25lbnRzQ29tcG9uZW50IH0gZnJvbSAnLi9wZGYtZHVtbXktY29tcG9uZW50cy9wZGYtZHVtbXktY29tcG9uZW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vc2Vjb25kYXJ5LXRvb2xiYXIvcGRmLXNlY29uZGFyeS10b29sYmFyL3BkZi1zZWNvbmRhcnktdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dExheWVyUmVuZGVyZWRFdmVudCB9IGZyb20gJy4vZXZlbnRzL3RleHRsYXllci1yZW5kZXJlZCc7XG5pbXBvcnQgeyBQZGZUaHVtYm5haWxEcmF3bkV2ZW50IH0gZnJvbSAnLi9ldmVudHMvcGRmLXRodW1ibmFpbC1kcmF3bi1ldmVudCc7XG5pbXBvcnQgeyBQZGZTaWRlYmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlYmFyL3BkZi1zaWRlYmFyL3BkZi1zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY3JvbGxNb2RlVHlwZSB9IGZyb20gJy4vb3B0aW9ucy9wZGYtdmlld2VyJztcbmltcG9ydCB7IFByb2dyZXNzQmFyRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9wcm9ncmVzcy1iYXItZXZlbnQnO1xuaW1wb3J0IHsgRm9ybURhdGFUeXBlIH0gZnJvbSAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci1zZXJ2ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd4RXh0ZW5kZWRQZGZWaWV3ZXJTZXJ2ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBuZ3hFeHRlbmRlZFBkZlZpZXdlckluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBkdW1teSBjb21wb25lbnRzIGFyZSBpbnNlcnRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHVzZXIgY3VzdG9taXplcyB0aGUgdG9vbGJhclxuICAgKiB3aXRob3V0IGFkZGluZyBldmVyeSBvcmlnaW5hbCB0b29sYmFyIGl0ZW0uIFdpdGhvdXQgdGhlIGR1bW15IGNvbXBvbmVudHMsIHRoZVxuICAgKiBpbml0aWFsaXphdGlvbiBjb2RlIG9mIHBkZi5qcyBjcmFzaGVzIGJlY2F1c2UgaXQgYXNzdW1lIHRoYXQgZXZlcnkgc3RhbmRhcmQgd2lkZ2V0IGlzIHRoZXJlLlxuICAgKi9cbiAgQFZpZXdDaGlsZChQZGZEdW1teUNvbXBvbmVudHNDb21wb25lbnQpXG4gIHB1YmxpYyBkdW1teUNvbXBvbmVudHM6IFBkZkR1bW15Q29tcG9uZW50c0NvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdyb290JylcbiAgcHVibGljIHJvb3Q6IEVsZW1lbnRSZWY7XG5cbiAgLyogVUkgdGVtcGxhdGVzICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFySW5wdXRBcmVhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21Ub29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GaW5kYmFyQnV0dG9uczogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tU2Vjb25kYXJ5VG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tU2lkZWJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY3VzdG9tVGh1bWJuYWlsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXN0b21GcmVlRmxvYXRpbmdCYXI6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1EYXRhOiBGb3JtRGF0YVR5cGUgPSB7fTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZvcm1EYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtRGF0YVR5cGU+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VWaWV3TW9kZTogJ3NpbmdsZScgfCAnYm9vaycgfCAnbXVsdGlwbGUnIHwgJ2luZmluaXRlLXNjcm9sbCcgPSAnbXVsdGlwbGUnO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcHJvZ3Jlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2dyZXNzQmFyRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgncGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudCcpXG4gIHByaXZhdGUgc2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudDogUGRmU2Vjb25kYXJ5VG9vbGJhckNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdwZGZzaWRlYmFyJylcbiAgcHJpdmF0ZSBzaWRlYmFyQ29tcG9uZW50OiBQZGZTaWRlYmFyQ29tcG9uZW50O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3JjQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNjcm9sbE1vZGU6IFNjcm9sbE1vZGVUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2Nyb2xsTW9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsTW9kZVR5cGU+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGF1dGhvcml6YXRpb246IE9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaHR0cEhlYWRlcnM6IE9iamVjdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGFmdGVyUHJpbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBiZWZvcmVQcmludCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGN1cnJlbnRab29tRmFjdG9yID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZVByaW50ID0gdHJ1ZTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gaW5pdGlhbGl6aW5nIHRoZSBQREYgdmlld2VyIGFuZCBsb2FkaW5nIHRoZSBQREYgZmlsZS5cbiAgICogTW9zdCB1c2VycyBjYW4gbGV0IHRoaXMgcGFyYW1ldGVyIHNhZmVseSBhdCBpdCdzIGRlZmF1bHQgdmFsdWUgb2YgemVyby5cbiAgICogU2V0IHRoaXMgdG8gMTAwMCBvciBoaWdoZXIgaWYgeW91IHJ1biBpbnRvIHRpbWluZyBwcm9ibGVtcyAodHlwaWNhbGx5IGNhdXNlZCBieSBsb2FkaW5nIHRoZSBsb2NhbGUgZmlsZXNcbiAgICogYWZ0ZXIgdGhlIFBERiBmaWxlcywgc28gdGhleSBhcmUgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBQREYgdmlld2VyIGlzIGluaXRpYWxpemVkKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWxheUZpcnN0VmlldyA9IDA7XG5cbiAgLyoqIHN0b3JlIHRoZSB0aW1lb3V0IGlkIHNvIGl0IGNhbiBiZSBjYW5jZWxlZCBpZiB1c2VyIGxlYXZlcyB0aGUgcGFnZSBiZWZvcmUgdGhlIFBERiBpcyBzaG93biAqL1xuICBwcml2YXRlIGluaXRUaW1lb3V0OiBhbnk7XG5cbiAgLyoqIEhvdyBtYW55IGxvZyBtZXNzYWdlcyBzaG91bGQgYmUgcHJpbnRlZD9cbiAgICogTGVnYWwgdmFsdWVzOiBWZXJib3NpdHlMZXZlbC5JTkZPUyAoPSA1KSwgVmVyYm9zaXR5TGV2ZWwuV0FSTklOR1MgKD0gMSksIFZlcmJvc2l0eUxldmVsLkVSUk9SUyAoPSAwKSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9nTGV2ZWwgPSBWZXJib3NpdHlMZXZlbC5XQVJOSU5HUztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5hYmxlUGluY2hPbk1vYmlsZSA9IGZhbHNlO1xuXG4gIC8qKiBVc2UgdGhlIG1pbmlmaWVkIChtaW5pZmllZEpTTGlicmFyaWVzPVwidHJ1ZVwiLCB3aGljaCBpcyB0aGUgZGVmYXVsdCkgb3IgdGhlIHVzZXItcmVhZGFibGUgcGRmLmpzIGxpYnJhcnkgKG1pbmlmaWVkSlNMaWJyYXJpZXM9XCJmYWxzZVwiKSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluaWZpZWRKU0xpYnJhcmllcyA9IHRydWU7XG5cbiAgcHVibGljIHByaW1hcnlNZW51VmlzaWJsZSA9IHRydWU7XG5cbiAgLyoqIG9wdGlvbiB0byBpbmNyZWFzZSAob3IgcmVkdWNlKSBwcmludCByZXNvbHV0aW9uLiBEZWZhdWx0IGlzIDE1MCAoZHBpKS4gU2Vuc2libGUgdmFsdWVzXG4gICAqIGFyZSAzMDAsIDYwMCwgYW5kIDEyMDAuIE5vdGUgdGhlIGluY3JlYXNlIG1lbW9yeSBjb25zdW1wdGlvbiwgd2hpY2ggbWF5IGV2ZW4gcmVzdWx0IGluIGEgYnJvd3NlciBjcmFzaC4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIHByaW50UmVzb2x1dGlvbiA9IG51bGw7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvdGF0aW9uOiAwIHwgOTAgfCAxODAgfCAyNzA7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3RhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8MCB8IDkwIHwgMTgwIHwgMjcwPigpO1xuXG4gIHB1YmxpYyBoYXNTaWduYXR1cmU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzcmModXJsOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IEJsb2IgfCBVaW50OEFycmF5IHwgeyByYW5nZTogYW55IH0pIHt9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBiYXNlNjRTcmMoYmFzZTY0OiBzdHJpbmcpIHt9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoZWlnaHQoaDogc3RyaW5nKSB7fVxuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGZsYWcgaXMgdHJ1ZSwgdGhpcyBjb21wb25lbnRzIGFkZHMgYSBsaW5rIHRvIHRoZSBsb2NhbGUgYXNzZXRzLiBUaGUgcGRmIHZpZXdlclxuICAgKiBzZWVzIHRoaXMgbGluayBhbmQgdXNlcyBpdCB0byBsb2FkIHRoZSBsb2NhbGUgZmlsZXMgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHVzZUJyb3dzZXJMb2NhbGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHVzZUJyb3dzZXJMb2NhbGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYmFja2dyb3VuZENvbG9yID0gJyNlOGU4ZWInO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gZGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGFmdGVyIGNsaWNraW5nIFwiZG93bmxvYWRcIiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZmlsZW5hbWVGb3JEb3dubG9hZCA9ICdkb2N1bWVudC5wZGYnO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gZGlzYWJsZSB0aGUga2V5Ym9hcmQgYmluZGluZ3MgY29tcGxldGVseSAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWdub3JlS2V5Ym9hcmQgPSBmYWxzZTtcblxuICAvKiogQWxsb3dzIHRoZSB1c2VyIHRvIGRpc2FibGUgYSBsaXN0IG9mIGtleSBiaW5kaW5ncy4gKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlnbm9yZUtleXM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAvKiogQWxsb3dzIHRoZSB1c2VyIHRvIGVuYWJsZSBhIGxpc3Qgb2Yga2V5IGJpbmRpbmdzIGV4cGxpY2l0bHkuIElmIHRoaXMgcHJvcGVydHkgaXMgc2V0LCBldmVyeSBvdGhlciBrZXkgYmluZGluZyBpcyBpZ25vcmVkLiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYWNjZXB0S2V5czogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gIC8qKiBBbGxvd3MgdGhlIHVzZXIgdG8gcHV0IHRoZSB2aWV3ZXIncyBzdmcgaW1hZ2VzIGludG8gYW4gYXJiaXRyYXJ5IGZvbGRlciAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaW1hZ2VSZXNvdXJjZXNQYXRoID0gJy4vJyArIHBkZkRlZmF1bHRPcHRpb25zLmFzc2V0c0ZvbGRlciArICcvaW1hZ2VzLyc7XG5cbiAgLyoqIEFsbG93cyB0aGUgdXNlciB0byBwdXQgdGhlaXIgbG9jYWxlIGZvbGRlciBpbnRvIGFuIGFyYml0cmFyeSBmb2xkZXIgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxvY2FsZUZvbGRlclBhdGggPSAnLi8nICsgcGRmRGVmYXVsdE9wdGlvbnMuYXNzZXRzRm9sZGVyICsgJy9sb2NhbGUnO1xuXG4gIC8qKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgbXVzdCBiZSB0aGUgY29tcGxldGUgbG9jYWxlIG5hbWUsIHN1Y2ggYXMgXCJlcy1FU1wiLiBUaGUgc3RyaW5nIGlzIGFsbG93ZWQgdG8gYmUgYWxsIGxvd2VyY2FzZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYW5ndWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBCeSBkZWZhdWx0LCBsaXN0ZW5pbmcgdG8gdGhlIFVSTCBpcyBkZWFjdGl2YXRlZCBiZWNhdXNlIG9mdGVuIHRoZSBhbmNob3IgdGFnIGlzIHVzZWQgZm9yIHRoZSBBbmd1bGFyIHJvdXRlciAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGlzdGVuVG9VUkwgPSBmYWxzZTtcblxuICAvKiogTmF2aWdhdGUgdG8gYSBjZXJ0YWluIFwibmFtZWQgZGVzdGluYXRpb25cIiAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZWRkZXN0OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgLyoqIGFsbG93cyB5b3UgdG8gcGFzcyBhIHBhc3N3b3JkIHRvIHJlYWQgcGFzc3dvcmQtcHJvdGVjdGVkIGZpbGVzICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYXNzd29yZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKiBwZGYuanMgY2FuIHNob3cgc2lnbmF0dXJlcywgYnV0IGZhaWxzIHRvIHZlcmlmeSB0aGVtLiBTbyB0aGV5IGFyZSBzd2l0Y2hlZCBvZmYgYnkgZGVmYXVsdC5cbiAgICogU2V0IFwiW3Nob3dVbnZlcmlmaWVkU2lnbmF0dXJlc11cIj1cInRydWVcIiB0byBkaXNwbGF5IGUtc2lnbmF0dXJlcyBub25ldGhlbGVzcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VW52ZXJpZmllZFNpZ25hdHVyZXMgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRUYWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBnZXQgc2hvd1NpZGViYXJCdXR0b24oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzaG93U2lkZWJhckJ1dHRvbihzaG93OiBib29sZWFuKSB7fVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaWRlYmFyVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHNpZGViYXJWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93RmluZEJ1dHRvbjogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dQYWdpbmdCdXR0b25zID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dab29tQnV0dG9ucyA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UHJlc2VudGF0aW9uTW9kZUJ1dHRv