reglanegociom3
Version:
359 lines (358 loc) • 29 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Http, RequestOptions, Headers } from '@angular/http';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map';
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/http";
import * as i2 from "@angular/common/http";
export class PostServiceM3 {
/**
* @param {?} http
* @param {?} httpClient
*/
constructor(http, httpClient) {
this.http = http;
this.httpClient = httpClient;
/** @type {?} */
var json = require('G:/Desarrollo/BD/WE8/config.json');
this.servidorPersonas = json.ServidorPersonas;
this.servidor = json.Servidor;
this.servidorGenerales = json.ServidorGenerales;
this.servidorM3 = json.ServidorM3;
this.servidorDocumentos = json.ServidorDocumentos;
this.servidorContable = json.ServidorContable;
this.servidorPrestamo = json.ServidorPrestamo;
this.WebBase = json.WebBase;
}
/**
* @return {?}
*/
getURLServer() {
return this.servidor;
}
/**
* @return {?}
*/
getURLServerDocs() {
return this.servidorDocumentos;
}
/**
* @param {?} urlGet
* @param {?} iServidor
* @return {?}
*/
httpGet(urlGet, iServidor) {
return this.http.get(iServidor + urlGet).map(res => {
return res.json();
});
}
/**
* @param {?} urlGet
* @param {?} iServidor
* @param {?} parametros
* @return {?}
*/
httpGetWithBody(urlGet, iServidor, parametros) {
/** @type {?} */
const headers = new Headers();
headers.append('Content-Type', 'application/json');
//const options = new RequestOptions({headers: headers, body: {"correo": "params"}, params:myParams});
return this.httpClient.get(iServidor + urlGet, {
params: parametros
}).map(res => {
return res;
});
}
/**
* @param {?} urlGet
* @return {?}
*/
getPrestamo(urlGet) {
return this.httpGet(urlGet, this.servidorPrestamo);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
getWithBodyPrestamo(urlGet, params) {
return this.httpGetWithBody(urlGet, this.servidorPrestamo, params);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
getWithBodyM3(urlGet, params) {
return this.httpGetWithBody(urlGet, this.servidorM3, params);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
getWithBodyPersonas(urlGet, params) {
return this.httpGetWithBody(urlGet, this.servidorPersonas, params);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
getWithBodyGenerales(urlGet, params) {
return this.httpGetWithBody(urlGet, this.servidorGenerales, params);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
getWithBodyDocumento(urlGet, params) {
/** @type {?} */
const headers = new Headers();
//headers.append('Content-Type', 'application/json');
headers.append('responseType', 'ResponseContentType.Blob');
//const options = new RequestOptions({headers: headers, body: {"correo": "params"}, params:myParams});
return this.httpClient.get(this.servidorDocumentos + urlGet, {
params: params
}).map(res => {
return res;
});
}
/**
* @param {?} urlGet
* @return {?}
*/
getPosts(urlGet) {
return this.httpGet(urlGet, this.servidor);
}
/**
* @param {?} urlGet
* @return {?}
*/
getPersonas(urlGet) {
return this.httpGet(urlGet, this.servidorPersonas);
}
/**
* @param {?} urlGet
* @return {?}
*/
getGenerales(urlGet) {
return this.httpGet(urlGet, this.servidorGenerales);
}
/**
* @param {?} urlGet
* @return {?}
*/
getM3(urlGet) {
return this.httpGet(urlGet, this.servidorM3);
}
/**
* @param {?} urlGet
* @return {?}
*/
getDocumentos(urlGet) {
return this.httpGet(urlGet, this.servidorDocumentos);
}
/**
* @param {?} urlGet
* @return {?}
*/
getContable(urlGet) {
return this.httpGet(urlGet, this.servidorContable);
}
/**
* @param {?} urlGet
* @return {?}
*/
getPostsWithOutJson(urlGet) {
return this.http.get(this.servidor + urlGet).map(res => {
return res;
});
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttp(urlGet, params) {
return this.http.post(this.servidor + urlGet, params).map(res => {
return res.statusText;
});
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceResponseHttp(urlGet, params) {
return this.http.post(this.servidor + urlGet, params).map(res => {
return res.json();
});
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} iServidor
* @return {?}
*/
postServiceResponseHttpCallService(urlGet, params, iServidor) {
return this.http.post(iServidor + urlGet, params).map(res => {
return res.json();
});
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceResponseHttpPrestamos(urlGet, params) {
return this.postServiceResponseHttpCallService(urlGet, params, this.servidorPrestamo);
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} headers
* @param {?} iServidor
* @return {?}
*/
postServiceHttpOptionsCallService(urlGet, params, headers, iServidor) {
/** @type {?} */
let options = new RequestOptions({ headers: headers });
return this.http.post(iServidor + urlGet, params, options).map(res => {
return res;
});
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} headers
* @return {?}
*/
postServiceHttpOptions(urlGet, params, headers) {
return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidor);
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} headers
* @return {?}
*/
postServiceHttpOptionsM3(urlGet, params, headers) {
return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorM3);
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} headers
* @return {?}
*/
postServiceHttpOptionsDocs(urlGet, params, headers) {
return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorDocumentos);
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} iServidor
* @return {?}
*/
postServiceHttpResFullCallService(urlGet, params, iServidor) {
return this.http.post(iServidor + urlGet, params).map(res => {
return res;
});
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttpResFull(urlGet, params) {
return this.postServiceHttpResFullCallService(urlGet, params, this.servidor);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttpResFullPersonas(urlGet, params) {
return this.postServiceWebApi(urlGet, params, this.servidorPersonas);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttpResFullM3(urlGet, params) {
return this.postServiceWebApi(urlGet, params, this.servidorM3);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttpResFullGenerales(urlGet, params) {
return this.postServiceHttpResFullCallService(urlGet, params, this.servidorGenerales);
}
/**
* @param {?} urlGet
* @param {?} params
* @return {?}
*/
postServiceHttpResFullPrestamos(urlGet, params) {
return this.postServiceHttpResFullCallService(urlGet, params, this.servidorPrestamo);
}
/**
* @param {?} urlGet
* @param {?} params
* @param {?} iServidor
* @return {?}
*/
postServiceWebApi(urlGet, params, iServidor) {
/** @type {?} */
const headers = new Headers();
headers.append('Content-Type', 'application/json');
/** @type {?} */
const options = new RequestOptions({ headers: headers });
return this.http.post(iServidor + urlGet, params, options).map(res => {
return res;
});
}
}
PostServiceM3.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
PostServiceM3.ctorParameters = () => [
{ type: Http },
{ type: HttpClient }
];
/** @nocollapse */ PostServiceM3.ngInjectableDef = i0.defineInjectable({ factory: function PostServiceM3_Factory() { return new PostServiceM3(i0.inject(i1.Http), i0.inject(i2.HttpClient)); }, token: PostServiceM3, providedIn: "root" });
function PostServiceM3_tsickle_Closure_declarations() {
/** @type {?} */
PostServiceM3.prototype.servidor;
/** @type {?} */
PostServiceM3.prototype.servidorPersonas;
/** @type {?} */
PostServiceM3.prototype.servidorGenerales;
/** @type {?} */
PostServiceM3.prototype.servidorM3;
/** @type {?} */
PostServiceM3.prototype.servidorDocumentos;
/** @type {?} */
PostServiceM3.prototype.servidorContable;
/** @type {?} */
PostServiceM3.prototype.servidorPrestamo;
/** @type {?} */
PostServiceM3.prototype.WebBase;
/** @type {?} */
PostServiceM3.prototype.http;
/** @type {?} */
PostServiceM3.prototype.httpClient;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3JlZ2xhbmVnb2Npb20zLyIsInNvdXJjZXMiOlsibGliL0NvbmV4aW9uU1FML3Bvc3RzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyx1QkFBdUIsQ0FBQTtBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzNDLE1BQU07Ozs7O0lBU0YsWUFBb0IsSUFBUyxFQUFTLFVBQXNCO1FBQXhDLFNBQUksR0FBSixJQUFJLENBQUs7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUFZOztRQU94RCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDL0I7Ozs7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0tB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SUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDOztRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUN6RCxHQUFHLENBQUMsRUFBRTtZQUVGLE9BQU8sR0FBRyxDQUFDO1NBQ2QsQ0FDSixDQUFDO0tBQ0w7OztZQWxPTCxVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFUTSxJQUFJO1lBQ0osVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHAsIFJlcXVlc3RPcHRpb25zLCBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCdcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xyXG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL21hcCdcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cC9zcmMvc3RhdGljX3Jlc3BvbnNlJyBcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG4gIH0pXHJcbmV4cG9ydCBjbGFzcyBQb3N0U2VydmljZU0ze1xyXG4gICAgc2Vydmlkb3I6c3RyaW5nO1xyXG4gICAgc2Vydmlkb3JQZXJzb25hczpzdHJpbmc7XHJcbiAgICBzZXJ2aWRvckdlbmVyYWxlczpzdHJpbmc7XHJcbiAgICBzZXJ2aWRvck0zOnN0cmluZztcclxuICAgIHNlcnZpZG9yRG9jdW1lbnRvczpzdHJpbmc7XHJcbiAgICBzZXJ2aWRvckNvbnRhYmxlOnN0cmluZztcclxuICAgIHNlcnZpZG9yUHJlc3RhbW86c3RyaW5nO1xyXG4gICAgV2ViQmFzZTpzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6SHR0cCxwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpe1xyXG4gICAgICAgIC8vdGhpcy5zZXJ2aWRvcj0gXCJodHRwOi8veWFjdW5hLnRlY2ZpbmFuemFzLmNvbTo4MDg0L1dDRldFN1Jlc3QvXCI7XHJcbiAgICAgICAgLy90aGlzLnNlcnZpZG9yPSBcImh0dHA6Ly90aWN1bmEudGVjZmluYW56YXMuY29tOjgwODQvV0NGV0U3UmVzdC9cIjtcclxuICAgICAgICAvL3RoaXMuc2Vydmlkb3I9IFwiaHR0cDovL3RpY3VuYS50ZWNmaW5hbnphcy5jb20vV0NGV0U3UmVzdC9cIjtcclxuICAgICAgICAvL211aXNjYVxyXG4gICAgICAgIC8vdGhpcy5zZXJ2aWRvcj0gXCJodHRwOi8vbXVpc2NhLnRlY2ZpbmFuemFzLmNvbS9XQ0ZXRTdSZXN0L1wiO1xyXG4gICAgICAgIC8vdmFyIGpzb24gPSByZXF1aXJlKCdHOi9EZXNhcnJvbGxvL0JEL1dFOC9jb25maWcuanNvbicpO1xyXG4gICAgICAgIHZhciBqc29uID0gcmVxdWlyZSgnRzovRGVzYXJyb2xsby9CRC9XRTgvY29uZmlnLmpzb24nKTtcclxuICAgICAgICB0aGlzLnNlcnZpZG9yUGVyc29uYXMgPSBqc29uLlNlcnZpZG9yUGVyc29uYXM7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWRvcj0ganNvbi5TZXJ2aWRvcjtcclxuICAgICAgICB0aGlzLnNlcnZpZG9yR2VuZXJhbGVzID0ganNvbi5TZXJ2aWRvckdlbmVyYWxlcztcclxuICAgICAgICB0aGlzLnNlcnZpZG9yTTMgPSBqc29uLlNlcnZpZG9yTTM7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWRvckRvY3VtZW50b3MgPSBqc29uLlNlcnZpZG9yRG9jdW1lbnRvcztcclxuICAgICAgICB0aGlzLnNlcnZpZG9yQ29udGFibGUgPSBqc29uLlNlcnZpZG9yQ29udGFibGU7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWRvclByZXN0YW1vID0ganNvbi5TZXJ2aWRvclByZXN0YW1vO1xyXG4gICAgICAgIHRoaXMuV2ViQmFzZSA9IGpzb24uV2ViQmFzZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRVUkxTZXJ2ZXIoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWRvcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXRVUkxTZXJ2ZXJEb2NzKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vydmlkb3JEb2N1bWVudG9zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vL2h0dHBHZXRcclxuICAgIGh0dHBHZXQodXJsR2V0OnN0cmluZywgaVNlcnZpZG9yOnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoaVNlcnZpZG9yICsgdXJsR2V0KS5tYXAocmVzID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5qc29uKCk7XHJcbiAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaHR0cEdldFdpdGhCb2R5KHVybEdldDpzdHJpbmcsIGlTZXJ2aWRvcjpzdHJpbmcsIHBhcmFtZXRyb3M6YW55KXtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcclxuXHJcbiAgICAgICAgaGVhZGVycy5hcHBlbmQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgIC8vY29uc3Qgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7aGVhZGVyczogaGVhZGVycywgYm9keToge1wiY29ycmVvXCI6IFwicGFyYW1zXCJ9LCBwYXJhbXM6bXlQYXJhbXN9KTtcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChpU2Vydmlkb3IgKyB1cmxHZXQsIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgfSkubWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXM7ICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgZ2V0UHJlc3RhbW8odXJsR2V0OnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cEdldCh1cmxHZXQsIHRoaXMuc2Vydmlkb3JQcmVzdGFtbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2l0aEJvZHlQcmVzdGFtbyh1cmxHZXQ6c3RyaW5nLCBwYXJhbXM6YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0V2l0aEJvZHkodXJsR2V0LCB0aGlzLnNlcnZpZG9yUHJlc3RhbW8sIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2l0aEJvZHlNMyh1cmxHZXQ6c3RyaW5nLCBwYXJhbXM6YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0V2l0aEJvZHkodXJsR2V0LCB0aGlzLnNlcnZpZG9yTTMsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2l0aEJvZHlQZXJzb25hcyh1cmxHZXQ6c3RyaW5nLCBwYXJhbXM6YW55KXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0V2l0aEJvZHkodXJsR2V0LCB0aGlzLnNlcnZpZG9yUGVyc29uYXMsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0V2l0aEJvZHlHZW5lcmFsZXModXJsR2V0OnN0cmluZywgcGFyYW1zOmFueSl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cEdldFdpdGhCb2R5KHVybEdldCwgdGhpcy5zZXJ2aWRvckdlbmVyYWxlcywgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRXaXRoQm9keURvY3VtZW50byh1cmxHZXQ6c3RyaW5nLCBwYXJhbXM6YW55KXtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcclxuXHJcbiAgICAgICAgLy9oZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICBoZWFkZXJzLmFwcGVuZCgncmVzcG9uc2VUeXBlJywgJ1Jlc3BvbnNlQ29udGVudFR5cGUuQmxvYicpO1xyXG5cclxuICAgICAgICAvL2NvbnN0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoe2hlYWRlcnM6IGhlYWRlcnMsIGJvZHk6IHtcImNvcnJlb1wiOiBcInBhcmFtc1wifSwgcGFyYW1zOm15UGFyYW1zfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodGhpcy5zZXJ2aWRvckRvY3VtZW50b3MgKyB1cmxHZXQsIFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xyXG4gICAgICAgICAgICB9KS5tYXAocmVzID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlczsgICAgICAgICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9zdHModXJsR2V0OnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cEdldCh1cmxHZXQsIHRoaXMuc2Vydmlkb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcnNvbmFzKHVybEdldDpzdHJpbmcpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBHZXQodXJsR2V0LCB0aGlzLnNlcnZpZG9yUGVyc29uYXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEdlbmVyYWxlcyh1cmxHZXQ6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0KHVybEdldCwgdGhpcy5zZXJ2aWRvckdlbmVyYWxlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TTModXJsR2V0OnN0cmluZyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cEdldCh1cmxHZXQsIHRoaXMuc2Vydmlkb3JNMyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RG9jdW1lbnRvcyh1cmxHZXQ6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0KHVybEdldCwgdGhpcy5zZXJ2aWRvckRvY3VtZW50b3MpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBnZXRDb250YWJsZSh1cmxHZXQ6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwR2V0KHVybEdldCwgdGhpcy5zZXJ2aWRvckNvbnRhYmxlKTtcclxuICAgIH1cclxuICAgIC8vL0VuZCBodHRwR2V0XHJcblxyXG4gICAgZ2V0UG9zdHNXaXRoT3V0SnNvbih1cmxHZXQ6c3RyaW5nKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLnNlcnZpZG9yICsgdXJsR2V0KS5tYXAocmVzID0+IHtcclxuICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcG9zdFNlcnZpY2VIdHRwKHVybEdldDpzdHJpbmcsIHBhcmFtcyl7XHJcbiAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5zZXJ2aWRvciArIHVybEdldCwgcGFyYW1zKS5tYXAoXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1c1RleHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgLy8vcG9zdFNlcnZpY2VSZXNwb25zZUh0dHBcclxuICAgIHBvc3RTZXJ2aWNlUmVzcG9uc2VIdHRwKHVybEdldDpzdHJpbmcsIHBhcmFtcyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuc2Vydmlkb3IgKyB1cmxHZXQsIHBhcmFtcykubWFwKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXMuanNvbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgIH1cclxuIFxyXG4gICAgcG9zdFNlcnZpY2VSZXNwb25zZUh0dHBDYWxsU2VydmljZSh1cmxHZXQ6c3RyaW5nLCBwYXJhbXMsaVNlcnZpZG9yKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaVNlcnZpZG9yICsgdXJsR2V0LCBwYXJhbXMpLm1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHBvc3RTZXJ2aWNlUmVzcG9uc2VIdHRwUHJlc3RhbW9zKHVybEdldDpzdHJpbmcsIHBhcmFtcyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFNlcnZpY2VSZXNwb25zZUh0dHBDYWxsU2VydmljZSh1cmxHZXQsIHBhcmFtcywgdGhpcy5zZXJ2aWRvclByZXN0YW1vKTtcclxuICAgIH1cclxuICAgIC8vL0VuZCBwb3N0U2VydmljZVJlc3BvbnNlSHR0cFxyXG5cclxuICAgIFxyXG4gICAgLy8vcG9zdFNlcnZpY2VIdHRwT3B0aW9uc1xyXG4gICAgcG9zdFNlcnZpY2VIdHRwT3B0aW9uc0NhbGxTZXJ2aWNlKHVybEdldDpzdHJpbmcsIHBhcmFtcywgaGVhZGVycywgaVNlcnZpZG9yKXtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IGhlYWRlcnMgfSk7ICBcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGlTZXJ2aWRvciArIHVybEdldCwgcGFyYW1zLCBvcHRpb25zKS5tYXAoXHJcbiAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICk7XHJcbiAgICAgfVxyXG5cclxuICAgIHBvc3RTZXJ2aWNlSHR0cE9wdGlvbnModXJsR2V0OnN0cmluZywgcGFyYW1zLCBoZWFkZXJzKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0U2VydmljZUh0dHBPcHRpb25zQ2FsbFNlcnZpY2UodXJsR2V0LCBwYXJhbXMsaGVhZGVycywgdGhpcy5zZXJ2aWRvcik7XHJcbiAgICAgfVxyXG5cclxuICAgICBwb3N0U2VydmljZUh0dHBPcHRpb25zTTModXJsR2V0OnN0cmluZywgcGFyYW1zLCBoZWFkZXJzKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0U2VydmljZUh0dHBPcHRpb25zQ2FsbFNlcnZpY2UodXJsR2V0LCBwYXJhbXMsaGVhZGVycywgdGhpcy5zZXJ2aWRvck0zKTtcclxuICAgICB9XHJcblxyXG4gICAgIHBvc3RTZXJ2aWNlSHR0cE9wdGlvbnNEb2NzKHVybEdldDpzdHJpbmcsIHBhcmFtcywgaGVhZGVycyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFNlcnZpY2VIdHRwT3B0aW9uc0NhbGxTZXJ2aWNlKHVybEdldCwgcGFyYW1zLGhlYWRlcnMsIHRoaXMuc2Vydmlkb3JEb2N1bWVudG9zKTtcclxuICAgICB9XHJcblxyXG4gICAgLy8vRW5kIHBvc3RTZXJ2aWNlSHR0cE9wdGlvbnNcclxuXHJcbiAgICAvLy9wb3N0U2VydmljZUh0dHBSZXNGdWxsXHJcbiAgICAgcG9zdFNlcnZpY2VIdHRwUmVzRnVsbENhbGxTZXJ2aWNlKHVybEdldDpzdHJpbmcsIHBhcmFtcywgaVNlcnZpZG9yKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoaVNlcnZpZG9yICsgdXJsR2V0LCBwYXJhbXMpLm1hcChcclxuICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgKTtcclxuICAgICB9XHJcblxyXG4gICAgcG9zdFNlcnZpY2VIdHRwUmVzRnVsbCh1cmxHZXQ6c3RyaW5nLCBwYXJhbXMpe1xyXG4gICAgICAgcmV0dXJuIHRoaXMucG9zdFNlcnZpY2VIdHRwUmVzRnVsbENhbGxTZXJ2aWNlKHVybEdldCwgcGFyYW1zLCB0aGlzLnNlcnZpZG9yKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHBvc3RTZXJ2aWNlSHR0cFJlc0Z1bGxQZXJzb25hcyh1cmxHZXQ6c3RyaW5nLCBwYXJhbXMpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RTZXJ2aWNlV2ViQXBpKHVybEdldCwgcGFyYW1zLCB0aGlzLnNlcnZpZG9yUGVyc29uYXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3RTZXJ2aWNlSHR0cFJlc0Z1bGxNMyh1cmxHZXQ6c3RyaW5nLCBwYXJhbXMpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RTZXJ2aWNlV2ViQXBpKHVybEdldCwgcGFyYW1zLCB0aGlzLnNlcnZpZG9yTTMpO1xyXG4gICAgfVxyXG5cclxuICAgIHBvc3RTZXJ2aWNlSHR0cFJlc0Z1bGxHZW5lcmFsZXModXJsR2V0OnN0cmluZywgcGFyYW1zKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0U2VydmljZUh0dHBSZXNGdWxsQ2FsbFNlcnZpY2UodXJsR2V0LCBwYXJhbXMsIHRoaXMuc2Vydmlkb3JHZW5lcmFsZXMpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwb3N0U2VydmljZUh0dHBSZXNGdWxsUHJlc3RhbW9zKHVybEdldDpzdHJpbmcsIHBhcmFtcyl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFNlcnZpY2VIdHRwUmVzRnVsbENhbGxTZXJ2aWNlKHVybEdldCwgcGFyYW1zLCB0aGlzLnNlcnZpZG9yUHJlc3RhbW8pO1xyXG4gICAgfVxyXG4gICAgLy8vRW5kIHBvc3RTZXJ2aWNlSHR0cFJlc0Z1bGxcclxuICAgIHBvc3RTZXJ2aWNlV2ViQXBpKHVybEdldDpzdHJpbmcsIHBhcmFtcywgaVNlcnZpZG9yKXtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcclxuICAgICAgICBoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zKHtoZWFkZXJzOiBoZWFkZXJzfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChpU2Vydmlkb3IgKyB1cmxHZXQsIHBhcmFtcywgb3B0aW9ucykubWFwKFxyXG4gICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICApO1xyXG4gICAgIH1cclxufVxyXG4iXX0=