UNPKG

@dragshalom/appdemo

Version:
181 lines 22 kB
/** * @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"; export class AppAppsEditComponent { /** * @param {?} modal * @param {?} msgSrv * @param {?} http * @param {?} fb * @param {?} cacheService */ constructor(modal, msgSrv, http, fb, cacheService) { 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 {?} */ (control) => Observable.create((/** * @param {?} observer * @return {?} */ (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 {?} */ (res) => { if (res.valid === true) { observer.next(null); } else { observer.next({ error: true, duplicated: true }); } observer.complete(); })); }))); } /** * @return {?} */ ngOnInit() { 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 {?} */ res => { this.form.patchValue(res); this.i = res; })); } /** * @param {?} c1 * @param {?} c2 * @return {?} */ compareNumStr(c1, c2) { return c1 == c2; } /** * @return {?} */ submit() { for (const 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 {?} */ 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 {?} */ res => { this.msgSrv.success('保存成功'); this.modal.close(true); })); } /** * @return {?} */ close() { 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 = () => [ { type: NzModalRef }, { type: NzMessageService }, { type: _HttpClient }, { type: FormBuilder }, { type: CacheService } ]; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZHJhZ3NoYWxvbS9hcHBkZW1vLyIsInNvdXJjZXMiOlsic3JjL2FwcHMvZWRpdC9lZGl0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQWEsVUFBVSxFQUFnQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBVyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQztBQU0xQyxNQUFNOzs7Ozs7OztJQVFKLFlBQ1UsS0FBaUIsRUFDbEIsTUFBd0IsRUFDeEIsSUFBaUIsRUFDaEIsRUFBZSxFQUNmLFlBQTBCO1FBSjFCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsaUJBQVksR0FBWixZQUFZLENBQWM7UUFacEMsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUdqQixjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBc0MvRCwwQkFBcUI7Ozs7UUFBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRSxDQUMv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Ozs7OztJQW5ESCxxQ0FBeUI7O0lBQ3pCLHNDQUErQjs7SUFDL0Isb0NBQXdCOzs7OztJQUN4QixrQ0FBdUI7Ozs7O0lBQ3ZCLDRDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnpNb2RhbFJlZiwgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQnO1xyXG5pbXBvcnQgeyBfSHR0cENsaWVudCB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge09ic2VydmVyLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDYWNoZVNlcnZpY2V9IGZyb20gXCJAZGVsb24vY2FjaGVcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFwcC1hcHBzLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9lZGl0LmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcEFwcHNFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICByZWNvcmQ6IGFueSA9IHt9O1xyXG4gIGk6IGFueTtcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgc3RhdGVMaXN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KGBhcGkvZGljdC90eXBlL2VuYWJsZVN0YXRlYCk7XHJcbiAgdHlwZUFwcExpc3QgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoYGFwaS9kaWN0L3R5cGUvdHlwZUFwcGApO1xyXG4gIGF1dGhUeXBlTGlzdCA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldChgYXBpL2RpY3QvdHlwZS9hdXRoVHlwZWApO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxSZWYsXHJcbiAgICBwdWJsaWMgbXNnU3J2OiBOek1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGh0dHA6IF9IdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBhcHBJZDogW251bGwsIFtdXSxcclxuICAgICAgYXBwTmFtZTogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSwgW3RoaXMuYXBwTmFtZUFzeW5jVmFsaWRhdG9yXV0sXHJcbiAgICAgIHR5cGVBcHA6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICB0eXBlQXV0aDogW251bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHJlbWFyazogW251bGwsIFtdXSxcclxuICAgICAgY3JlYXRlRGF0ZTpbbnVsbCwgW11dLFxyXG4gICAgICBmbGFnSXA6IFswLCBbXV0sXHJcbiAgICAgIGZsYWdMTG9nOiBbMCwgW11dLFxyXG4gICAgICBmbGFnTG9nT3B0OiBbMCwgW11dLFxyXG4gICAgICBzdGF0dXM6IFsxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAvLyByc3ZuOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIH0pO1xyXG4gICAgaWYgKCF0aGlzLnJlY29yZC5hcHBJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5odHRwLmdldChgYXBpL3YxL3N5c3JSZWdpc3RlckFwcC8ke3RoaXMucmVjb3JkLmFwcElkfWApLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShyZXMpO1xyXG4gICAgICB0aGlzLmkgPSByZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVOdW1TdHIoYzE6IGFueSwgYzI6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGMxID09IGMyO1xyXG4gIH1cclxuXHJcbiAgYXBwTmFtZUFzeW5jVmFsaWRhdG9yID0gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PlxyXG4gICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyOiBPYnNlcnZlcjxWYWxpZGF0aW9uRXJyb3JzPikgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYGFwaS92MS9zeXNyUmVnaXN0ZXJBcHAvY2hlY2tBcHBOYW1lYCxcclxuICAgICAgICB7YXBwTmFtZTogY29udHJvbC52YWx1ZSwgYXBwSWQ6IHRoaXMucmVjb3JkLmFwcElkfSkuc3Vic2NyaWJlKChyZXM6YW55KT0+IHtcclxuICAgICAgICBpZiAocmVzLnZhbGlkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHsgZXJyb3I6IHRydWUsIGR1cGxpY2F0ZWQ6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmZvcm0uY29udHJvbHMpIHtcclxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW2ldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tpXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHJldHVybjtcclxuICAgIGlmICghdGhpcy5yZWNvcmQuYXBwSWQpIHtcclxuICAgICAgLy/mlrDlop5cclxuICAgICAgdGhpcy5odHRwLnBvc3QoYGFwaS92MS9zeXNyUmVnaXN0ZXJBcHBgLCB0aGlzLmZvcm0udmFsdWUpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICAgIHRoaXMubW9kYWwuY2xvc2UodHJ1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvL+S/ruaUuVxyXG4gICAgdGhpcy5odHRwLnB1dChgYXBpL3YxL3N5c3JSZWdpc3RlckFwcC8ke3RoaXMucmVjb3JkLmFwcElkfWAsIHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIHRoaXMubXNnU3J2LnN1Y2Nlc3MoJ+S/neWtmOaIkOWKnycpO1xyXG4gICAgICB0aGlzLm1vZGFsLmNsb3NlKHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIHRoaXMubW9kYWwuZGVzdHJveSgpO1xyXG4gIH1cclxufVxyXG4iXX0=