io.parrots
Version:
Parrots.io App
360 lines (359 loc) • 35.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Injectable } from '@angular/core';
import { Headers, RequestOptions } from '@angular/http';
import { InstanceConnectionManager } from './InstanceConnectionManager.service';
var JobScheduler = /** @class */ (function () {
function JobScheduler(instanceConnectionManager) {
this.instanceConnectionManager = instanceConnectionManager;
}
/**
* @param {?} sessionId
* @return {?}
*/
JobScheduler.prototype.setInstanceSessionId = /**
* @param {?} sessionId
* @return {?}
*/
function (sessionId) {
sessionStorage.setItem(JobScheduler.SESSION_ID_KEY, sessionId);
};
/**
* @return {?}
*/
JobScheduler.prototype.getInstanceSessionId = /**
* @return {?}
*/
function () {
return sessionStorage.getItem(JobScheduler.SESSION_ID_KEY);
};
/**
* @param {?} options
* @param {?} headerData
* @param {?=} xmlType
* @return {?}
*/
JobScheduler.prototype.addingHeaderRequestOptionsArgs = /**
* @param {?} options
* @param {?} headerData
* @param {?=} xmlType
* @return {?}
*/
function (options, headerData, xmlType) {
if (options === null || typeof options === 'undefined') {
options = new RequestOptions();
}
if (headerData !== null && typeof headerData !== 'undefined') {
if (options.headers !== null && typeof options.headers !== 'undefined') {
for (var /** @type {?} */ key in headerData) {
options.headers.set(key, headerData[key]);
}
}
else {
options.headers = new Headers(headerData);
}
}
var /** @type {?} */ sessionId = this.getInstanceSessionId();
if (sessionId !== undefined && sessionId !== null) {
options.headers.delete('Session-Id');
options.headers.set('Session-Id', sessionId);
}
if (xmlType) {
options.headers.set("Accept", "application/xml");
options.headers.set("Content-Type", "application/xml");
}
else {
options.headers.set("Content-Type", "application/json");
}
return options;
};
/**
* @return {?}
*/
JobScheduler.prototype.getListJob = /**
* @return {?}
*/
function () {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/query";
var /** @type {?} */ body = {
"filter": ""
};
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.interruptJob = /**
* @param {?} uuid
* @return {?}
*/
function (uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/" + uuid + "/interrupt";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
var /** @type {?} */ body = {};
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} body
* @return {?}
*/
JobScheduler.prototype.createJob = /**
* @param {?} body
* @return {?}
*/
function (body) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @return {?}
*/
JobScheduler.prototype.getListSchedule = /**
* @return {?}
*/
function () {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/query";
var /** @type {?} */ body = {
"filter": ""
};
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} body
* @return {?}
*/
JobScheduler.prototype.createSchedule = /**
* @param {?} body
* @return {?}
*/
function (body) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} body
* @return {?}
*/
JobScheduler.prototype.editSchedule = /**
* @param {?} body
* @return {?}
*/
function (body) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + body.uuid;
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.putWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.enableSchedule = /**
* @param {?} uuid
* @return {?}
*/
function (uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + uuid + "/enable";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
var /** @type {?} */ body = {};
return this.instanceConnectionManager.putWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.disableSchedule = /**
* @param {?} uuid
* @return {?}
*/
function (uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + uuid + "/disable";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
var /** @type {?} */ body = {};
return this.instanceConnectionManager.putWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.getTrigger = /**
* @param {?} uuid
* @return {?}
*/
function (uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + uuid + "/trigger";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.getWithHttpInfo(url, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} body
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.addTrigger = /**
* @param {?} body
* @param {?} uuid
* @return {?}
*/
function (body, uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + uuid + "/trigger";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} _uuid
* @param {?} uuidTrigger
* @return {?}
*/
JobScheduler.prototype.removeTrigger = /**
* @param {?} _uuid
* @param {?} uuidTrigger
* @return {?}
*/
function (_uuid, uuidTrigger) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + _uuid + "/trigger/" + uuidTrigger;
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.deleteWithHttpInfo(url, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
/**
* @param {?} body
* @param {?} uuid
* @return {?}
*/
JobScheduler.prototype.createCron = /**
* @param {?} body
* @param {?} uuid
* @return {?}
*/
function (body, uuid) {
if (this.instanceConnectionManager !== null && typeof this.instanceConnectionManager !== 'undefined') {
var /** @type {?} */ url = "admin/job/schedule/" + uuid + "/trigger/cron";
//! for testing
var /** @type {?} */ requestOptionsArgs = this.addingHeaderRequestOptionsArgs(new RequestOptions(), {
"Increment-Version": "false",
});
return this.instanceConnectionManager.postWithHttpInfo(url, body, requestOptionsArgs);
}
else {
return Promise.reject(null);
}
};
JobScheduler.SESSION_ID_KEY = 'Instance-Session-Id';
JobScheduler.decorators = [
{ type: Injectable },
];
/** @nocollapse */
JobScheduler.ctorParameters = function () { return [
{ type: InstanceConnectionManager, },
]; };
return JobScheduler;
}());
export { JobScheduler };
function JobScheduler_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
JobScheduler.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
JobScheduler.ctorParameters;
/** @type {?} */
JobScheduler.SESSION_ID_KEY;
/** @type {?} */
JobScheduler.prototype.instanceConnectionManager;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSm9iU2NoZWR1bGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pby5wYXJyb3RzLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2UvSm9iU2NoZWR1bGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztJQVM1RSxzQkFBWSx5QkFBb0Q7UUFDNUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0tBQzlEOzs7OztJQUVNLDJDQUFvQjs7OztjQUFDLFNBQWlCO1FBQ3pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQzs7Ozs7SUFHNUQsMkNBQW9COzs7O1FBQ3ZCLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQzs7Ozs7Ozs7SUFHdkQscURBQThCOzs7Ozs7Y0FBQyxPQUEyQixFQUFFLFVBQXNDLEVBQUUsT0FBaUI7UUFDekgsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1NBQ2xDO1FBRUQsRUFBRSxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxPQUFPLFVBQVUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxDQUFDLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxHQUFHLENBQUMsQ0FBQyxxQkFBSSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM3QzthQUNKO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QztTQUNKO1FBRUQscUJBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQ2hEO1FBRUQsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNWLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQzFEO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUMzRDtRQUdELE1BQU0sQ0FBQyxPQUFPLENBQUM7Ozs7O0lBR1osaUNBQVU7Ozs7UUFDYixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLGlCQUFpQixDQUFDO1lBQ2pDLHFCQUFJLElBQUksR0FBUTtnQkFDWixRQUFRLEVBQUcsRUFBRTthQUNaLENBQUM7O1lBR04scUJBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQy9FLG1CQUFtQixFQUFFLE9BQU87YUFFL0IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDekY7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9COzs7Ozs7SUFHRSxtQ0FBWTs7OztjQUFDLElBQVk7UUFDNUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ25HLHFCQUFJLEdBQUcsR0FBUSxZQUFZLEdBQUMsSUFBSSxHQUFDLFlBQVksQ0FBQzs7WUFHOUMscUJBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQy9FLG1CQUFtQixFQUFFLE9BQU87YUFFL0IsQ0FBQyxDQUFDO1lBRUgscUJBQUksSUFBSSxHQUFRLEVBQUUsQ0FBQztZQUVuQixNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUN6RjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7Ozs7OztJQUdFLGdDQUFTOzs7O2NBQUMsSUFBUztRQUN0QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLFdBQVcsQ0FBQzs7WUFHM0IscUJBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQy9FLG1CQUFtQixFQUFFLE9BQU87YUFFL0IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDekY7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9COzs7OztJQUdFLHNDQUFlOzs7O1FBQ2xCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMseUJBQXlCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuRyxxQkFBSSxHQUFHLEdBQVEsMEJBQTBCLENBQUM7WUFDMUMscUJBQUksSUFBSSxHQUFRO2dCQUNaLFFBQVEsRUFBRyxFQUFFO2FBQ1osQ0FBQzs7WUFHTixxQkFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxjQUFjLEVBQUUsRUFBRTtnQkFDL0UsbUJBQW1CLEVBQUUsT0FBTzthQUUvQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUN6RjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7Ozs7OztJQUdFLHFDQUFjOzs7O2NBQUMsSUFBUztRQUMzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLG9CQUFvQixDQUFDOztZQUdwQyxxQkFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxjQUFjLEVBQUUsRUFBRTtnQkFDL0UsbUJBQW1CLEVBQUUsT0FBTzthQUUvQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUN6RjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7Ozs7OztJQUdFLG1DQUFZOzs7O2NBQUMsSUFBUztRQUN6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLHFCQUFxQixHQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7O1lBRy9DLHFCQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLGNBQWMsRUFBRSxFQUFFO2dCQUMvRSxtQkFBbUIsRUFBRSxPQUFPO2FBRS9CLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUN4RjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7Ozs7OztJQUdFLHFDQUFjOzs7O2NBQUMsSUFBUztRQUMzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLHFCQUFxQixHQUFDLElBQUksR0FBQyxTQUFTLENBQUM7O1lBR3BELHFCQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLGNBQWMsRUFBRSxFQUFFO2dCQUMvRSxtQkFBbUIsRUFBRSxPQUFPO2FBRS9CLENBQUMsQ0FBQztZQUVILHFCQUFJLElBQUksR0FBUSxFQUFFLENBQUM7WUFFbkIsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3hGO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjs7Ozs7O0lBR0Usc0NBQWU7Ozs7Y0FBQyxJQUFTO1FBQzVCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMseUJBQXlCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuRyxxQkFBSSxHQUFHLEdBQVEscUJBQXFCLEdBQUMsSUFBSSxHQUFDLFVBQVUsQ0FBQzs7WUFHckQscUJBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQy9FLG1CQUFtQixFQUFFLE9BQU87YUFFL0IsQ0FBQyxDQUFDO1lBRUgscUJBQUksSUFBSSxHQUFRLEVBQUUsQ0FBQztZQUVuQixNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDeEY7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9COzs7Ozs7SUFHRSxpQ0FBVTs7OztjQUFDLElBQVM7UUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ25HLHFCQUFJLEdBQUcsR0FBUSxxQkFBcUIsR0FBQyxJQUFJLEdBQUMsVUFBVSxDQUFDOztZQUdyRCxxQkFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxjQUFjLEVBQUUsRUFBRTtnQkFDL0UsbUJBQW1CLEVBQUUsT0FBTzthQUUvQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUNsRjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDL0I7Ozs7Ozs7SUFHRSxpQ0FBVTs7Ozs7Y0FBQyxJQUFTLEVBQUMsSUFBUztRQUNqQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLHFCQUFxQixHQUFDLElBQUksR0FBQyxVQUFVLENBQUM7O1lBR3JELHFCQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLGNBQWMsRUFBRSxFQUFFO2dCQUMvRSxtQkFBbUIsRUFBRSxPQUFPO2FBRS9CLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3pGO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjs7Ozs7OztJQUdFLG9DQUFhOzs7OztjQUFDLEtBQWEsRUFBQyxXQUFtQjtRQUNsRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkcscUJBQUksR0FBRyxHQUFRLHFCQUFxQixHQUFDLEtBQUssR0FBQyxXQUFXLEdBQUMsV0FBVyxDQUFDOztZQUduRSxxQkFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxjQUFjLEVBQUUsRUFBRTtnQkFDL0UsbUJBQW1CLEVBQUUsT0FBTzthQUUvQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3JGO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvQjs7Ozs7OztJQUdFLGlDQUFVOzs7OztjQUFDLElBQVMsRUFBQyxJQUFTO1FBQ2pDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMseUJBQXlCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuRyxxQkFBSSxHQUFHLEdBQVEscUJBQXFCLEdBQUMsSUFBSSxHQUFDLGVBQWUsQ0FBQzs7WUFHMUQscUJBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksY0FBYyxFQUFFLEVBQUU7Z0JBQy9FLG1CQUFtQixFQUFFLE9BQU87YUFFL0IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDekY7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9COztrQ0ExUDJDLHFCQUFxQjs7Z0JBSHhFLFVBQVU7Ozs7Z0JBRkYseUJBQXlCOzt1QkFGbEM7O1NBS2EsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhlYWRlcnMsIFJlcXVlc3RPcHRpb25zLCBSZXF1ZXN0T3B0aW9uc0FyZ3MgfSBmcm9tICdAYW5ndWxhci9odHRwJztcbmltcG9ydCB7IEluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgfSBmcm9tICcuL0luc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKb2JTY2hlZHVsZXIge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTRVNTSU9OX0lEX0tFWTogc3RyaW5nID0gJ0luc3RhbmNlLVNlc3Npb24tSWQnO1xuXG4gICAgcHJpdmF0ZSBpbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyOiBJbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyO1xuXG4gICAgY29uc3RydWN0b3IoaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlcjogSW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlcikge1xuICAgICAgICB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgPSBpbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJbnN0YW5jZVNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKEpvYlNjaGVkdWxlci5TRVNTSU9OX0lEX0tFWSwgc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5zdGFuY2VTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oSm9iU2NoZWR1bGVyLlNFU1NJT05fSURfS0VZKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhvcHRpb25zOiBSZXF1ZXN0T3B0aW9uc0FyZ3MsIGhlYWRlckRhdGE6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9LCB4bWxUeXBlPzogYm9vbGVhbik6IFJlcXVlc3RPcHRpb25zQXJncyB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhlYWRlckRhdGEgIT09IG51bGwgJiYgdHlwZW9mIGhlYWRlckRhdGEgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5oZWFkZXJzICE9PSBudWxsICYmIHR5cGVvZiBvcHRpb25zLmhlYWRlcnMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGhlYWRlckRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLnNldChrZXksIGhlYWRlckRhdGFba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhoZWFkZXJEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZXNzaW9uSWQgPSB0aGlzLmdldEluc3RhbmNlU2Vzc2lvbklkKCk7XG5cbiAgICAgICAgaWYgKHNlc3Npb25JZCAhPT0gdW5kZWZpbmVkICYmIHNlc3Npb25JZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLmRlbGV0ZSgnU2Vzc2lvbi1JZCcpO1xuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLnNldCgnU2Vzc2lvbi1JZCcsIHNlc3Npb25JZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoeG1sVHlwZSkge1xuICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzLnNldChcIkFjY2VwdFwiLCBcImFwcGxpY2F0aW9uL3htbFwiKTtcbiAgICAgICAgICAgIG9wdGlvbnMuaGVhZGVycy5zZXQoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi94bWxcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExpc3RKb2IoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbGV0IHVybDogYW55ID0gXCJhZG1pbi9qb2IvcXVlcnlcIjtcbiAgICAgICAgICAgIGxldCBib2R5OiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgXCJmaWx0ZXJcIiA6IFwiXCJcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyEgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc0FyZ3MgPSB0aGlzLmFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhuZXcgUmVxdWVzdE9wdGlvbnMoKSwge1xuICAgICAgICAgICAgICAgIFwiSW5jcmVtZW50LVZlcnNpb25cIjogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgIC8vIFwiQ2xpZW50LU5hbWVcIjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIucG9zdFdpdGhIdHRwSW5mbyh1cmwsIGJvZHksIHJlcXVlc3RPcHRpb25zQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW50ZXJydXB0Sm9iKHV1aWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxldCB1cmw6IGFueSA9IFwiYWRtaW4vam9iL1wiK3V1aWQrXCIvaW50ZXJydXB0XCI7XG5cbiAgICAgICAgICAgIC8vISBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgbGV0IHJlcXVlc3RPcHRpb25zQXJncyA9IHRoaXMuYWRkaW5nSGVhZGVyUmVxdWVzdE9wdGlvbnNBcmdzKG5ldyBSZXF1ZXN0T3B0aW9ucygpLCB7XG4gICAgICAgICAgICAgICAgXCJJbmNyZW1lbnQtVmVyc2lvblwiOiBcImZhbHNlXCIsXG4gICAgICAgICAgICAgICAgLy8gXCJDbGllbnQtTmFtZVwiOiBcIlwiXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGV0IGJvZHk6IGFueSA9IHt9O1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLnBvc3RXaXRoSHR0cEluZm8odXJsLCBib2R5LCByZXF1ZXN0T3B0aW9uc0FyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUpvYihib2R5OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgdXJsOiBhbnkgPSBcImFkbWluL2pvYlwiO1xuXG4gICAgICAgICAgICAvLyEgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc0FyZ3MgPSB0aGlzLmFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhuZXcgUmVxdWVzdE9wdGlvbnMoKSwge1xuICAgICAgICAgICAgICAgIFwiSW5jcmVtZW50LVZlcnNpb25cIjogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgIC8vIFwiQ2xpZW50LU5hbWVcIjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIucG9zdFdpdGhIdHRwSW5mbyh1cmwsIGJvZHksIHJlcXVlc3RPcHRpb25zQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TGlzdFNjaGVkdWxlKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxldCB1cmw6IGFueSA9IFwiYWRtaW4vam9iL3NjaGVkdWxlL3F1ZXJ5XCI7XG4gICAgICAgICAgICBsZXQgYm9keTogYW55ID0ge1xuICAgICAgICAgICAgICAgIFwiZmlsdGVyXCIgOiBcIlwiXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8hIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNBcmdzID0gdGhpcy5hZGRpbmdIZWFkZXJSZXF1ZXN0T3B0aW9uc0FyZ3MobmV3IFJlcXVlc3RPcHRpb25zKCksIHtcbiAgICAgICAgICAgICAgICBcIkluY3JlbWVudC1WZXJzaW9uXCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAvLyBcIkNsaWVudC1OYW1lXCI6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLnBvc3RXaXRoSHR0cEluZm8odXJsLCBib2R5LCByZXF1ZXN0T3B0aW9uc0FyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVNjaGVkdWxlKGJvZHk6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxldCB1cmw6IGFueSA9IFwiYWRtaW4vam9iL3NjaGVkdWxlXCI7XG5cbiAgICAgICAgICAgIC8vISBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgbGV0IHJlcXVlc3RPcHRpb25zQXJncyA9IHRoaXMuYWRkaW5nSGVhZGVyUmVxdWVzdE9wdGlvbnNBcmdzKG5ldyBSZXF1ZXN0T3B0aW9ucygpLCB7XG4gICAgICAgICAgICAgICAgXCJJbmNyZW1lbnQtVmVyc2lvblwiOiBcImZhbHNlXCIsXG4gICAgICAgICAgICAgICAgLy8gXCJDbGllbnQtTmFtZVwiOiBcIlwiXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlci5wb3N0V2l0aEh0dHBJbmZvKHVybCwgYm9keSwgcmVxdWVzdE9wdGlvbnNBcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0U2NoZWR1bGUoYm9keTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbGV0IHVybDogYW55ID0gXCJhZG1pbi9qb2Ivc2NoZWR1bGUvXCIrYm9keS51dWlkO1xuXG4gICAgICAgICAgICAvLyEgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc0FyZ3MgPSB0aGlzLmFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhuZXcgUmVxdWVzdE9wdGlvbnMoKSwge1xuICAgICAgICAgICAgICAgIFwiSW5jcmVtZW50LVZlcnNpb25cIjogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgIC8vIFwiQ2xpZW50LU5hbWVcIjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIucHV0V2l0aEh0dHBJbmZvKHVybCwgYm9keSwgcmVxdWVzdE9wdGlvbnNBcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbmFibGVTY2hlZHVsZSh1dWlkOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgdXJsOiBhbnkgPSBcImFkbWluL2pvYi9zY2hlZHVsZS9cIit1dWlkK1wiL2VuYWJsZVwiO1xuXG4gICAgICAgICAgICAvLyEgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc0FyZ3MgPSB0aGlzLmFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhuZXcgUmVxdWVzdE9wdGlvbnMoKSwge1xuICAgICAgICAgICAgICAgIFwiSW5jcmVtZW50LVZlcnNpb25cIjogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgIC8vIFwiQ2xpZW50LU5hbWVcIjogXCJcIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBib2R5OiBhbnkgPSB7fTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlci5wdXRXaXRoSHR0cEluZm8odXJsLCBib2R5LCByZXF1ZXN0T3B0aW9uc0FyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2FibGVTY2hlZHVsZSh1dWlkOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgdXJsOiBhbnkgPSBcImFkbWluL2pvYi9zY2hlZHVsZS9cIit1dWlkK1wiL2Rpc2FibGVcIjtcblxuICAgICAgICAgICAgLy8hIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNBcmdzID0gdGhpcy5hZGRpbmdIZWFkZXJSZXF1ZXN0T3B0aW9uc0FyZ3MobmV3IFJlcXVlc3RPcHRpb25zKCksIHtcbiAgICAgICAgICAgICAgICBcIkluY3JlbWVudC1WZXJzaW9uXCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAvLyBcIkNsaWVudC1OYW1lXCI6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsZXQgYm9keTogYW55ID0ge307XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIucHV0V2l0aEh0dHBJbmZvKHVybCwgYm9keSwgcmVxdWVzdE9wdGlvbnNBcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUcmlnZ2VyKHV1aWQ6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxldCB1cmw6IGFueSA9IFwiYWRtaW4vam9iL3NjaGVkdWxlL1wiK3V1aWQrXCIvdHJpZ2dlclwiO1xuXG4gICAgICAgICAgICAvLyEgZm9yIHRlc3RpbmdcbiAgICAgICAgICAgIGxldCByZXF1ZXN0T3B0aW9uc0FyZ3MgPSB0aGlzLmFkZGluZ0hlYWRlclJlcXVlc3RPcHRpb25zQXJncyhuZXcgUmVxdWVzdE9wdGlvbnMoKSwge1xuICAgICAgICAgICAgICAgIFwiSW5jcmVtZW50LVZlcnNpb25cIjogXCJmYWxzZVwiLFxuICAgICAgICAgICAgICAgIC8vIFwiUmV0dXJuLVR5cGVcIjogXCJkdG9cIlxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIuZ2V0V2l0aEh0dHBJbmZvKHVybCwgcmVxdWVzdE9wdGlvbnNBcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRUcmlnZ2VyKGJvZHk6IGFueSx1dWlkOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmluc3RhbmNlQ29ubmVjdGlvbk1hbmFnZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBsZXQgdXJsOiBhbnkgPSBcImFkbWluL2pvYi9zY2hlZHVsZS9cIit1dWlkK1wiL3RyaWdnZXJcIjtcblxuICAgICAgICAgICAgLy8hIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNBcmdzID0gdGhpcy5hZGRpbmdIZWFkZXJSZXF1ZXN0T3B0aW9uc0FyZ3MobmV3IFJlcXVlc3RPcHRpb25zKCksIHtcbiAgICAgICAgICAgICAgICBcIkluY3JlbWVudC1WZXJzaW9uXCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAvLyBcIlJldHVybi1UeXBlXCI6IFwiZHRvXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLnBvc3RXaXRoSHR0cEluZm8odXJsLCBib2R5LCByZXF1ZXN0T3B0aW9uc0FyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVRyaWdnZXIoX3V1aWQ6IHN0cmluZyx1dWlkVHJpZ2dlcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbGV0IHVybDogYW55ID0gXCJhZG1pbi9qb2Ivc2NoZWR1bGUvXCIrX3V1aWQrXCIvdHJpZ2dlci9cIit1dWlkVHJpZ2dlcjtcblxuICAgICAgICAgICAgLy8hIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNBcmdzID0gdGhpcy5hZGRpbmdIZWFkZXJSZXF1ZXN0T3B0aW9uc0FyZ3MobmV3IFJlcXVlc3RPcHRpb25zKCksIHtcbiAgICAgICAgICAgICAgICBcIkluY3JlbWVudC1WZXJzaW9uXCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAvLyBcIkNsaWVudC1OYW1lXCI6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLmRlbGV0ZVdpdGhIdHRwSW5mbyh1cmwsIHJlcXVlc3RPcHRpb25zQXJncyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlQ3Jvbihib2R5OiBhbnksdXVpZDogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2VDb25uZWN0aW9uTWFuYWdlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgbGV0IHVybDogYW55ID0gXCJhZG1pbi9qb2Ivc2NoZWR1bGUvXCIrdXVpZCtcIi90cmlnZ2VyL2Nyb25cIjtcblxuICAgICAgICAgICAgLy8hIGZvciB0ZXN0aW5nXG4gICAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNBcmdzID0gdGhpcy5hZGRpbmdIZWFkZXJSZXF1ZXN0T3B0aW9uc0FyZ3MobmV3IFJlcXVlc3RPcHRpb25zKCksIHtcbiAgICAgICAgICAgICAgICBcIkluY3JlbWVudC1WZXJzaW9uXCI6IFwiZmFsc2VcIixcbiAgICAgICAgICAgICAgICAvLyBcIkNsaWVudC1OYW1lXCI6IFwiXCJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZUNvbm5lY3Rpb25NYW5hZ2VyLnBvc3RXaXRoSHR0cEluZm8odXJsLCBib2R5LCByZXF1ZXN0T3B0aW9uc0FyZ3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=