@dragshalom/appdemo
Version:
195 lines • 22.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component } from '@angular/core';
import { NzModalRef, NzMessageService } from 'ng-zorro-antd';
import { _HttpClient } from '@delon/theme';
import { FormBuilder, Validators } from "@angular/forms";
import { Observable } from 'rxjs';
import { CacheService } from "@delon/cache";
var AppAppsEditComponent = /** @class */ (function () {
function AppAppsEditComponent(modal, msgSrv, http, fb, cacheService) {
var _this = this;
this.modal = modal;
this.msgSrv = msgSrv;
this.http = http;
this.fb = fb;
this.cacheService = cacheService;
this.record = {};
this.stateList = this.cacheService.get("api/dict/type/enableState");
this.typeAppList = this.cacheService.get("api/dict/type/typeApp");
this.authTypeList = this.cacheService.get("api/dict/type/authType");
this.appNameAsyncValidator = (/**
* @param {?} control
* @return {?}
*/
function (control) {
return Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
if (!control.value) {
observer.next(null);
observer.complete();
return;
}
_this.http.get("api/v1/sysrRegisterApp/checkAppName", { appName: control.value, appId: _this.record.appId }).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
if (res.valid === true) {
observer.next(null);
}
else {
observer.next({ error: true, duplicated: true });
}
observer.complete();
}));
}));
});
}
/**
* @return {?}
*/
AppAppsEditComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.form = this.fb.group({
appId: [null, []],
appName: [null, [Validators.required], [this.appNameAsyncValidator]],
typeApp: [null, [Validators.required]],
typeAuth: [null, [Validators.required]],
remark: [null, []],
createDate: [null, []],
flagIp: [0, []],
flagLLog: [0, []],
flagLogOpt: [0, []],
status: [1, [Validators.required]],
});
if (!this.record.appId) {
return;
}
this.http.get("api/v1/sysrRegisterApp/" + this.record.appId).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.form.patchValue(res);
_this.i = res;
}));
};
/**
* @param {?} c1
* @param {?} c2
* @return {?}
*/
AppAppsEditComponent.prototype.compareNumStr = /**
* @param {?} c1
* @param {?} c2
* @return {?}
*/
function (c1, c2) {
return c1 == c2;
};
/**
* @return {?}
*/
AppAppsEditComponent.prototype.submit = /**
* @return {?}
*/
function () {
var _this = this;
for (var i in this.form.controls) {
this.form.controls[i].markAsDirty();
this.form.controls[i].updateValueAndValidity();
}
if (this.form.invalid)
return;
if (!this.record.appId) {
//新增
this.http.post("api/v1/sysrRegisterApp", this.form.value).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.msgSrv.success('保存成功');
_this.modal.close(true);
}));
return;
}
//修改
this.http.put("api/v1/sysrRegisterApp/" + this.record.appId, this.form.value).subscribe((/**
* @param {?} res
* @return {?}
*/
function (res) {
_this.msgSrv.success('保存成功');
_this.modal.close(true);
}));
};
/**
* @return {?}
*/
AppAppsEditComponent.prototype.close = /**
* @return {?}
*/
function () {
this.modal.destroy();
};
AppAppsEditComponent.decorators = [
{ type: Component, args: [{
selector: 'app-app-apps-edit',
template: "<div class=\"modal-header\">\r\n <div *ngIf=\"!record.appId\" class=\"modal-title\">\u65B0\u589E\u5E94\u7528\u4FE1\u606F</div>\r\n <div *ngIf=\"record.appId\" class=\"modal-title\">\u7F16\u8F91\u5E94\u7528\u4FE1\u606F</div>\r\n</div>\r\n<!--<nz-spin *ngIf=\"!i && !record.id\" class=\"modal-spin\"></nz-spin>-->\r\n<form *ngIf=\"!record.appId || record.appId && i\" nz-form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\r\n <div nz-row>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"appName\">\u5E94\u7528\u540D</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"appName\">\r\n <nz-form-explain *ngIf=\"form.get('appName').dirty && form.get('appName').errors\">\r\n \u7CFB\u7EDF\u540D\u4E0D\u5408\u6CD5\uFF08\u4E0D\u53EF\u4E3A\u7A7A\u6216\u91CD\u540D\uFF09\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <!--<div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"rsvn\">\u7248\u672C\u53F7</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"rsvn\">\r\n <nz-form-explain *ngIf=\"form.get('rsvn').dirty && form.get('rsvn').errors\">\r\n \u8BF7\u8F93\u5165\u7CFB\u7EDF\u7248\u672C\u53F7\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>-->\r\n </div>\r\n <div nz-row>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"typeApp\">\u5E94\u7528\u7CFB\u7EDF\u7C7B\u578B</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-select [compareWith]=\"compareNumStr\" nzAllowClear formControlName=\"typeApp\">\r\n <!--<nz-option nzValue=\"1\" nzLabel=\"web\u5E94\u7528\"></nz-option>-->\r\n <!--<nz-option nzValue=\"2\" nzLabel=\"Restful API\u63A5\u53E3\"></nz-option>-->\r\n <!--<nz-option nzValue=\"3\" nzLabel=\"\u62A5\u8868\u7CFB\u7EDF\"></nz-option>-->\r\n <!--<nz-option nzValue=\"4\" nzLabel=\"\u5916\u90E8\u94FE\u63A5\u5E94\u7528\"></nz-option>-->\r\n <!--<nz-option nzValue=\"0\" nzLabel=\"\u5176\u4ED6\u901A\u7528\"></nz-option>-->\r\n <nz-option *ngFor=\"let typeApp of typeAppList | async\" [nzValue]=\"typeApp.value\" [nzLabel]=\"typeApp.label\"></nz-option>\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"flagIp\">\u5B89\u5168\u6027IP\u542F\u7528\u6807\u8BB0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-radio-group formControlName=\"flagIp\">\r\n <!--<label nz-radio [nzValue]=\"1\">\u542F\u7528</label>-->\r\n <!--<label nz-radio [nzValue]=\"0\">\u672A\u542F\u7528</label>-->\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"typeAuth\">\u8BA4\u8BC1\u65B9\u5F0F</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-select [compareWith]=\"compareNumStr\" nzAllowClear formControlName=\"typeAuth\">\r\n <!--<nz-option nzValue=\"1\" nzLabel=\"Cookie-Session\"></nz-option>-->\r\n <!--<nz-option nzValue=\"2\" nzLabel=\"JWT Token\"></nz-option>-->\r\n <!--<nz-option nzValue=\"3\" nzLabel=\"OAuth \u8BA4\u8BC1\"></nz-option>-->\r\n <nz-option *ngFor=\"let authType of authTypeList | async\" [nzValue]=\"authType.value\" [nzLabel]=\"authType.label\"></nz-option>\r\n </nz-select>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"flagLLog\">\u767B\u5F55\u65E5\u5FD7\u542F\u7528\u6807\u8BB0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-radio-group formControlName=\"flagLLog\">\r\n <!--<label nz-radio [nzValue]=\"1\">\u542F\u7528</label>-->\r\n <!--<label nz-radio [nzValue]=\"0\">\u672A\u542F\u7528</label>-->\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"remark\">\u5907\u6CE8\u8BF4\u660E</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <input nz-input formControlName=\"remark\">\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzFor=\"flagLogOpt\">\u64CD\u4F5C\u65E5\u5FD7\u542F\u7528\u6807\u8BB0</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\" nzHasFeedback>\r\n <nz-radio-group formControlName=\"flagLogOpt\">\r\n <!--<label nz-radio [nzValue]=\"1\">\u542F\u7528</label>-->\r\n <!--<label nz-radio [nzValue]=\"0\">\u672A\u542F\u7528</label>-->\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div nz-row>\r\n <div nz-col nzSpan=\"12\">\r\n <nz-form-item>\r\n <nz-form-label nzXs=\"24\" nzSm=\"7\" nzRequired nzFor=\"status\">\u542F\u7528\u72B6\u6001</nz-form-label>\r\n <nz-form-control nzXs=\"24\" nzSm=\"12\" nzMd=\"10\">\r\n <nz-radio-group formControlName=\"status\">\r\n <!--<label nz-radio [nzValue]=\"1\">\u542F\u7528</label>-->\r\n <!--<label nz-radio [nzValue]=\"0\">\u672A\u542F\u7528</label>-->\r\n <label nz-radio *ngFor=\"let state of stateList | async\" [nzValue]=\"state.value\">{{state.label}}</label>\r\n </nz-radio-group>\r\n <nz-form-explain *ngIf=\"form.get('status').dirty && form.get('status').errors\">\r\n \u8BF7\u9009\u62E9\u542F\u7528\u72B6\u6001\r\n </nz-form-explain>\r\n </nz-form-control>\r\n </nz-form-item>\r\n </div>\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <button nz-button type=\"button\" (click)=\"close()\">\u5173\u95ED</button>\r\n <button nz-button type=\"submit\" [disabled]=\"!form.valid\" nzType=\"primary\" [nzLoading]=\"http.loading\">\u4FDD\u5B58</button>\r\n </div>\r\n</form>\r\n\r\n"
}] }
];
AppAppsEditComponent.ctorParameters = function () { return [
{ type: NzModalRef },
{ type: NzMessageService },
{ type: _HttpClient },
{ type: FormBuilder },
{ type: CacheService }
]; };
return AppAppsEditComponent;
}());
export { AppAppsEditComponent };
if (false) {
/** @type {?} */
AppAppsEditComponent.prototype.record;
/** @type {?} */
AppAppsEditComponent.prototype.i;
/** @type {?} */
AppAppsEditComponent.prototype.form;
/** @type {?} */
AppAppsEditComponent.prototype.stateList;
/** @type {?} */
AppAppsEditComponent.prototype.typeAppList;
/** @type {?} */
AppAppsEditComponent.prototype.authTypeList;
/** @type {?} */
AppAppsEditComponent.prototype.appNameAsyncValidator;
/**
* @type {?}
* @private
*/
AppAppsEditComponent.prototype.modal;
/** @type {?} */
AppAppsEditComponent.prototype.msgSrv;
/** @type {?} */
AppAppsEditComponent.prototype.http;
/**
* @type {?}
* @private
*/
AppAppsEditComponent.prototype.fb;
/**
* @type {?}
* @private
*/
AppAppsEditComponent.prototype.cacheService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZHJhZ3NoYWxvbS9hcHBkZW1vLyIsInNvdXJjZXMiOlsic3JjL2FwcHMvZWRpdC9lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUUxQztJQVlFLDhCQUNVLEtBQWlCLEVBQ2xCLE1BQXdCLEVBQ3hCLElBQWlCLEVBQ2hCLEVBQWUsRUFDZixZQUEwQjtRQUxwQyxpQkFNSTtRQUxNLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWM7UUFacEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUdqQixjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBc0MvRCwwQkFBcUI7Ozs7UUFBRyxVQUFDLE9BQW9CO1lBQzNDLE9BQUEsVUFB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Q0FBTzs7SUFDUCxvQ0FBZ0I7O0lBQ2hCLHlDQUErRDs7SUFDL0QsMkNBQTZEOztJQUM3RCw0Q0FBK0Q7O0lBc0MvRCxxREFnQks7Ozs7O0lBbkRILHFDQUF5Qjs7SUFDekIsc0NBQStCOztJQUMvQixvQ0FBd0I7Ozs7O0lBQ3hCLGtDQUF1Qjs7Ozs7SUFDdkIsNENBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOek1vZGFsUmVmLCBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XHJcbmltcG9ydCB7IF9IdHRwQ2xpZW50IH0gZnJvbSAnQGRlbG9uL3RoZW1lJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7T2JzZXJ2ZXIsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0NhY2hlU2VydmljZX0gZnJvbSBcIkBkZWxvbi9jYWNoZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYXBwLWFwcHMtZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXBwQXBwc0VkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlY29yZDogYW55ID0ge307XHJcbiAgaTogYW55O1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBzdGF0ZUxpc3QgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoYGFwaS9kaWN0L3R5cGUvZW5hYmxlU3RhdGVgKTtcclxuICB0eXBlQXBwTGlzdCA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldChgYXBpL2RpY3QvdHlwZS90eXBlQXBwYCk7XHJcbiAgYXV0aFR5cGVMaXN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KGBhcGkvZGljdC90eXBlL2F1dGhUeXBlYCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtb2RhbDogTnpNb2RhbFJlZixcclxuICAgIHB1YmxpYyBtc2dTcnY6IE56TWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaHR0cDogX0h0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGFwcElkOiBbbnVsbCwgW11dLFxyXG4gICAgICBhcHBOYW1lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLCBbdGhpcy5hcHBOYW1lQXN5bmNWYWxpZGF0b3JdXSxcclxuICAgICAgdHlwZUFwcDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHR5cGVBdXRoOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcmVtYXJrOiBbbnVsbCwgW11dLFxyXG4gICAgICBjcmVhdGVEYXRlOltudWxsLCBbXV0sXHJcbiAgICAgIGZsYWdJcDogWzAsIFtdXSxcclxuICAgICAgZmxhZ0xMb2c6IFswLCBbXV0sXHJcbiAgICAgIGZsYWdMb2dPcHQ6IFswLCBbXV0sXHJcbiAgICAgIHN0YXR1czogWzEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIC8vIHJzdm46IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMucmVjb3JkLmFwcElkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmh0dHAuZ2V0KGBhcGkvdjEvc3lzclJlZ2lzdGVyQXBwLyR7dGhpcy5yZWNvcmQuYXBwSWR9YCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHJlcyk7XHJcbiAgICAgIHRoaXMuaSA9IHJlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZU51bVN0cihjMTogYW55LCBjMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gYzEgPT0gYzI7XHJcbiAgfVxyXG5cclxuICBhcHBOYW1lQXN5bmNWYWxpZGF0b3IgPSAoY29udHJvbDogRm9ybUNvbnRyb2wpID0+XHJcbiAgICBPYnNlcnZhYmxlLmNyZWF0ZSgob2JzZXJ2ZXI6IE9ic2VydmVyPFZhbGlkYXRpb25FcnJvcnM+KSA9PiB7XHJcbiAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5odHRwLmdldChgYXBpL3YxL3N5c3JSZWdpc3RlckFwcC9jaGVja0FwcE5hbWVgLFxyXG4gICAgICAgIHthcHBOYW1lOiBjb250cm9sLnZhbHVlLCBhcHBJZDogdGhpcy5yZWNvcmQuYXBwSWR9KS5zdWJzY3JpYmUoKHJlczphbnkpPT4ge1xyXG4gICAgICAgIGlmIChyZXMudmFsaWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQoeyBlcnJvcjogdHJ1ZSwgZHVwbGljYXRlZDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgc3VibWl0KCkge1xyXG4gICAgZm9yIChjb25zdCBpIGluIHRoaXMuZm9ybS5jb250cm9scykge1xyXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHNbaV0ubWFya0FzRGlydHkoKTtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2ldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkgcmV0dXJuO1xyXG4gICAgaWYgKCF0aGlzLnJlY29yZC5hcHBJZCkge1xyXG4gICAgICAvL+aWsOWinlxyXG4gICAgICB0aGlzLmh0dHAucG9zdChgYXBpL3YxL3N5c3JSZWdpc3RlckFwcGAsIHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5tc2dTcnYuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XHJcbiAgICAgICAgdGhpcy5tb2RhbC5jbG9zZSh0cnVlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8v5L+u5pS5XHJcbiAgICB0aGlzLmh0dHAucHV0KGBhcGkvdjEvc3lzclJlZ2lzdGVyQXBwLyR7dGhpcy5yZWNvcmQuYXBwSWR9YCwgdGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5tc2dTcnYuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UodHJ1ZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5tb2RhbC5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==