attachment-list.component.js
47.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ViewChild, Input, Output, EventEmitter } from '@angular/core';
import { AppConfigService } from '../app-config/app-config.service';
import { DxDataGridComponent } from 'devextreme-angular';
import { Request } from '../_services/request.service';
import { Common } from '../_services/common.service';
import { ModalAttachmentComponent } from '../modal-attachment/modal-attachment.component';
import * as _ from 'lodash';
import { CreateAlertComponent } from '../alert/alert.component';
import { B2bService } from '../_services/b2b.service';
import { ModalAttachmentViewComponent } from '../modal-attachment-view/modal-attachment-view.component';
export class AttachmentListComponent {
/**
* @param {?} appConfigService
* @param {?} request
* @param {?} common
* @param {?} b2b
*/
constructor(appConfigService, request, common, b2b) {
this.appConfigService = appConfigService;
this.request = request;
this.common = common;
this.b2b = b2b;
this.mode = 'CREATE';
this.type = 2;
this.showImage = false;
this.onLoaded = new EventEmitter();
this.onClickScan = new EventEmitter();
this.onClickDelete = new EventEmitter();
this.columns = ['ลำดับที่', 'ผู้แก้ไข', 'วันที่', 'สถานะการติดตาม', 'หมายเหตุ'];
this.attachmentList = [];
this.dxgridPageSize = 10;
this.allowedPageSizes1 = 10;
this.allowedPageSizes2 = 25;
this.allowedPageSizes3 = 50;
this.allowedPageSizes4 = 100;
this.customers = [];
this.lastStep = '';
this.deleteIdList = [];
this.dsAttachment = [];
this.selectedAttachment = [];
this.tmpId = -1;
this.classifieds = 0;
this.username_caption = 'ผู้บันทึก/ผู้นำเข้า';
this.config = appConfigService.getConfig();
}
/**
* @return {?}
*/
ngOnInit() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
setTimeout(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
this.downloadToken = yield this.b2b.getAttachmentToken();
}), 500);
if (this.mode !== "CREATE") {
this.getAttachmentList();
}
});
}
/**
* @return {?}
*/
getAttachmentList() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
console.log('getAttachmentList', this.attachmentList, this.option.username_caption);
/** @type {?} */
let filter = {
filter: {
ref_table: this.option.data.ref_table,
ref_id: this.option.data.ref_id,
system_id: this.option.data.system_id
},
order_by: ["order_no"]
};
if (this.option.data.result_table_id)
filter.filter.result_table_id = this.option.data.result_table_id;
/** @type {?} */
const data = yield this.request.post('/search/rc_attachment_prop', filter);
this.attachmentList = data.resultData;
this.classifieds = 0;
for (let i of this.attachmentList) {
if (i.is_classifieds) {
this.classifieds++;
}
}
console.log('getAttachmentList', this.attachmentList);
this.onLoaded.emit();
});
}
/**
* @param {?} data
* @return {?}
*/
addAttachmentList(data) {
data.id = this.tmpId;
this.tmpId--;
if (this.b2b.getVerifyToken().phoneBookData && this.b2b.getVerifyToken().phoneBookData.length > 0) {
data.username = this.b2b.getVerifyToken().username;
data.recorder_name = this.b2b.getVerifyToken().phoneBookData[0].name;
}
data.action = "add";
if (data.is_classifieds) {
this.classifieds++;
}
this.attachmentList.push(data);
console.log('getAttachmentList', this.attachmentList);
}
/**
* @param {?} data
* @return {?}
*/
editAttachmentList(data) {
for (let i = 0; i < this.attachmentList.length; i++) {
if (this.attachmentList[i].id === data.id) {
if (data.is_classifieds && !this.attachmentList[i].is_classifieds) {
this.classifieds++;
}
else if (!data.is_classifieds && this.attachmentList[i].is_classifieds) {
this.classifieds--;
}
this.attachmentList[i] = data;
}
}
console.log('getAttachmentList', this.attachmentList);
}
/**
* @param {?} data
* @return {?}
*/
getRowIndex(data) {
if (!data.data) {
return '';
}
data.data.order_no = data.component.pageIndex() * data.component.pageSize() + data.rowIndex + 1;
return data.data.order_no;
}
/**
* @return {?}
*/
clickAdd() {
this.option.mode = 'CREATE';
if (this.attachmentModal) {
this.attachmentModal.open(this.option);
}
else {
this.modalAttachment.open(this.option);
}
}
/**
* @param {?} data
* @return {?}
*/
clickEdit(data) {
console.log('clickEdit', data);
/** @type {?} */
let fileName = data.filename;
/** @type {?} */
let fileType = fileName.substring(fileName.length - 3, fileName.length);
console.log('fileType', fileType);
if (this.type == 1 && (fileType == 'pdf' || fileType == 'PDF')) {
/** @type {?} */
const editData = _.cloneDeep(this.option);
editData.data = data;
editData.mode = 'EDIT';
editData.downloadToken = this.downloadToken;
this.onClickScan.emit(editData);
}
else {
/** @type {?} */
const editData = _.cloneDeep(this.option);
editData.data = data;
editData.mode = 'EDIT';
editData.downloadToken = this.downloadToken;
if (this.attachmentModal) {
this.attachmentModal.open(editData);
}
else {
this.modalAttachment.open(editData);
}
}
}
/**
* @param {?} data
* @return {?}
*/
clickView(data) {
/** @type {?} */
let fileName = data.filename;
/** @type {?} */
let fileType = fileName.substring(fileName.length - 3, fileName.length);
console.log('fileType', fileType);
if (this.type == 1 && (fileType == 'pdf' || fileType == 'PDF')) {
/** @type {?} */
const viewData = _.cloneDeep(this.option);
viewData.data = data;
viewData.mode = 'VIEW';
this.onClickScan.emit(viewData);
}
else {
/** @type {?} */
const viewData = _.cloneDeep(this.option);
viewData.data = data;
viewData.mode = 'VIEW';
viewData.downloadToken = this.downloadToken;
if (this.attachmentViewModal) {
this.attachmentViewModal.open(viewData);
}
else {
this.modalAttachmentView.open(viewData);
}
}
}
/**
* @param {?} data
* @return {?}
*/
clickMoveUp(data) {
/** @type {?} */
let tmp = this.attachmentList[data.rowIndex];
this.attachmentList[data.rowIndex] = this.attachmentList[data.rowIndex - 1];
this.attachmentList[data.rowIndex - 1] = tmp;
}
/**
* @param {?} data
* @return {?}
*/
clickMoveDown(data) {
/** @type {?} */
let tmp = this.attachmentList[data.rowIndex];
this.attachmentList[data.rowIndex] = this.attachmentList[data.rowIndex + 1];
this.attachmentList[data.rowIndex + 1] = tmp;
}
/**
* @param {?} data
* @return {?}
*/
clickDownload(data) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
window.open(data.url + "?downloadToken=" + this.downloadToken);
});
}
/**
* @return {?}
*/
getLastStep() {
return this.lastStep;
}
/**
* START DELETE
* @param {?} idList
* @return {?}
*/
fnClickDelete(idList) {
this.onClickDelete.emit();
this.deleteIdList = idList;
if (this.deleteIdList.length > 0) {
this.confirmDelete();
}
}
/**
* @return {?}
*/
confirmDelete() {
this.goAlert('', '', 'myModalDeleteAttachment');
}
/**
* @param {?} userTitle
* @param {?} userMessage
* @param {?} modalId
* @return {?}
*/
goAlert(userTitle, userMessage, modalId) {
/** @type {?} */
const dataAlert = {
'modalId': modalId,
'userTitle': userTitle,
'userMessage': userMessage
};
if (this.alertModal) {
this.alertModal.openModal(dataAlert);
}
else {
this.myModal.openModal(dataAlert);
}
}
/**
* @param {?} e
* @return {?}
*/
onCellPrepared(e) {
if (e.rowType === 'data') {
e.cellElement.accessKey = e.column.caption;
}
}
/**
* @return {?}
*/
fnDeleteMultiple() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
console.log("this.deleteIdList", this.deleteIdList);
console.log("this.attachmentList before", this.attachmentList);
for (let id of this.deleteIdList) {
for (let i = this.attachmentList.length - 1; i >= 0; i--) {
if (this.attachmentList[i].id === id) {
if (this.attachmentList[i].is_classifieds) {
this.classifieds--;
}
this.attachmentList.splice(i, 1);
}
}
}
console.log("this.attachmentList after", this.attachmentList);
});
}
/**
* @return {?}
*/
onClickBack() {
console.log("clickback");
}
/**
* @param {?} data
* @return {?}
*/
getImageLink(data) {
return data.url + "?downloadToken=" + this.downloadToken;
}
/**
* @return {?}
*/
scan() {
this.option.mode = 'CREATE';
this.onClickScan.emit(this.option);
}
}
AttachmentListComponent.decorators = [
{ type: Component, args: [{
selector: 'soc-attachment-list',
template: "<div class=\"col-sm-12\">\n <div class=\"ibox-heading-total\" style=\"padding: 0px 20px 0;\">\n <h5 class=\"ibox-title-text\"></h5>\n <!--<button id=\"btn\" name=\"btn\" type=\"button\" class=\"btn btn-success \" data-toggle=\"tooltip\"-->\n <!--title=\"\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E23\u0E32\u0E22\u0E25\u0E30\u0E40\u0E2D\u0E35\u0E22\u0E14\u0E1B\u0E23\u0E30\u0E40\u0E14\u0E47\u0E19\" data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\">\u0E17\u0E33\u0E2A\u0E33\u0E40\u0E19\u0E32</button>-->\n <button *ngIf=\"mode !== 'VIEW' && type === 1\" id=\"btnScan\" name=\"btnScan\" type=\"button\"\n class=\"btn btn-success\" data-toggle=\"tooltip\" data-placement=\"top\"\n style=\"min-width: 80px;padding: 8px 10px;\" (click)=\"scan()\">\u0E2A\u0E41\u0E01\u0E19</button>\n <button *ngIf=\"mode !== 'VIEW'\" [disabled]=\"selectedAttachment.length === 0\" id=\"btnDelete\"\n name=\"btnDelete\" type=\"button\" class=\"btn btn-success\" data-toggle=\"tooltip\"\n data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\"\n (click)=\"fnClickDelete(selectedAttachment)\">\u0E25\u0E1A</button>\n <button *ngIf=\"mode !== 'VIEW'\" id=\"btnAdd\" name=\"btnAdd\" type=\"button\" class=\"btn btn-success\"\n data-toggle=\"tooltip\" data-placement=\"top\" style=\"min-width: 80px;padding: 8px 10px;\"\n (click)=\"clickAdd()\">\u0E40\u0E1E\u0E34\u0E48\u0E21</button>\n </div>\n <div class=\"ibox-body\">\n <div class=\"table-responsive table-wrapper\">\n <!--(onCellPrepared)=\"onCellPrepared1($event)\"-->\n <dx-data-grid #dxDataGridPrisoner id=\"dxDataGridPrisoner\" [dataSource]=\"attachmentList\"\n keyExpr=\"id\" [hoverStateEnabled]=\"true\" noDataText=\"\" showBorders=\"true\"\n [rowAlternationEnabled]=\"true\" [columnAutoWidth]=\"false\" class=\"card-list-table\"\n [allowColumnResizing]=\"true\" [allowColumnReordering]=\"true\"\n (onCellPrepared)=\"onCellPrepared($event)\" [wordWrapEnabled]=\"false\"\n [(selectedRowKeys)]=\"selectedAttachment\" class=\"card-list-table\">\n <dxo-paging [pageSize]=\"dxgridPageSize\"></dxo-paging>\n <dxo-pager [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[allowedPageSizes1, allowedPageSizes2, allowedPageSizes3, allowedPageSizes4]\"\n [showInfo]=\"false\" [visible]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-remote-operations [sorting]=\"true\" [paging]=\"true\"></dxo-remote-operations>\n <dxo-selection *ngIf=\"mode !== 'VIEW'\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"\n mode=\"multiple\" style=\"min-width: 50px !important;\"></dxo-selection>\n <dxo-state-storing [enabled]=\"true\" type=\"localStorage\"\n storageKey=\"attachmentListDataGrid\"></dxo-state-storing>\n <dxi-column caption=\"\u0E25\u0E33\u0E14\u0E31\u0E1A\u0E17\u0E35\u0E48\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateNo\"\n alignment=\"center\" [width]=\"70\"></dxi-column>\n <dxi-column caption=\"\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateAction\"\n alignment=\"center\" [width]=\"mode !== 'VIEW' ? 255 : 105\"></dxi-column>\n <dxi-column dataField=\"recorder_name\" [caption]=\"option.username_caption ?option.username_caption :username_caption\"></dxi-column>\n <dxi-column *ngIf=\"type === 3\" dataField=\"book_no\" caption=\"\u0E40\u0E25\u0E02\u0E17\u0E35\u0E48\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\"></dxi-column>\n <dxi-column *ngIf=\"type === 2 || type === 1\" dataField=\"name\" caption=\"\u0E0A\u0E37\u0E48\u0E2D\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\">\n </dxi-column>\n <dxi-column dataField=\"doc_type\" caption=\"\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E40\u0E2D\u0E01\u0E2A\u0E32\u0E23\"></dxi-column>\n <dxi-column *ngIf=\"type === 1\" dataField=\"is_classifieds\" caption=\"\u0E08\u0E31\u0E14\u0E40\u0E02\u0E49\u0E32\u0E27\u0E32\u0E23\u0E30\">\n </dxi-column>\n <!--<dxi-column dataField=\"order\" caption=\"\u0E25\u0E33\u0E14\u0E31\u0E1A\"></dxi-column>-->\n <dxi-column dataField=\"created_at\" caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E23\u0E49\u0E32\u0E07/\u0E19\u0E33\u0E40\u0E02\u0E49\u0E32\" dataType=\"date\"\n alignment=\"center\" [width]=\"100\"></dxi-column>\n <dxi-column *ngIf=\"type === 3\" dataField=\"record_date\" dataType=\"date\"\n caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E08\u0E31\u0E14\u0E40\u0E01\u0E47\u0E1A\" alignment=\"center\" [width]=\"100\"></dxi-column>\n <dxi-column *ngIf=\"type === 2 || type === 1\" dataField=\"remark\" caption=\"\u0E2B\u0E21\u0E32\u0E22\u0E40\u0E2B\u0E15\u0E38\">\n </dxi-column>\n <!--<dxi-column *ngIf=\"type === 3\" dataField=\"amount\" caption=\"\u0E08\u0E33\u0E19\u0E27\u0E19\"></dxi-column>-->\n <!--<dxi-column *ngIf=\"type === 4\" dataField=\"version\" caption=\"\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E48\u0E19\"></dxi-column>-->\n <dxi-column *ngIf=\"showImage\" caption=\"\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E2B\u0E21\u0E32\u0E22\" cellTemplate=\"cellTemplateImage\">\n </dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplateImage'\" class=\" text-center\">\n <img *ngIf=\"showImage\" [src]=\"getImageLink(data.data)\"\n style=\"width: auto !important;\">\n </div>\n <div *dxTemplate=\"let data of 'cellTemplateNo'\" class=\" text-center\">\n <span>{{getRowIndex(data)}}</span>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplateAction'\">\n <a *ngIf=\"mode !== 'VIEW'\" id=\"btnEdit\" (click)=\"clickEdit(data.data)\"\n class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n data-placement=\"top\" title=\"\u0E41\u0E01\u0E49\u0E44\u0E02\"><i class=\"fal fa-pencil-alt\"></i></a>\n <a id=\"btnView\" (click)=\"clickView(data.data)\"\n class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n data-placement=\"top\" title=\"\u0E14\u0E39\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\"><i class=\"fal fa-eye\"></i></a>\n <a *ngIf=\"data.rowIndex !== 0 && mode !== 'VIEW'\" id=\"btnMoveUp\"\n (click)=\"clickMoveUp(data)\" class=\"btn btn-default btn-sm icon\"\n data-toggle=\"tooltip\" data-placement=\"top\" title=\"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E02\u0E36\u0E49\u0E19\"><i\n class=\"fal fa-arrow-up\"></i></a>\n <a *ngIf=\"data.rowIndex < data.component.pageSize() -1 && data.rowIndex < attachmentList.length - 1 && mode !== 'VIEW'\"\n id=\"btnMoveDown\" (click)=\"clickMoveDown(data)\"\n class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n data-placement=\"top\" title=\"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E25\u0E07\"><i\n class=\"fal fa-arrow-down\"></i></a>\n <a id=\"btnDownload\" (click)=\"clickDownload(data.data)\"\n class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\"\n data-placement=\"top\" title=\"\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\"><i\n class=\"fal fa-download\"></i></a>\n </div>\n </dx-data-grid>\n </div>\n </div>\n</div>\n<!--End col-sm-12-->\n<!--<modal-step #modalStep (onUpdateModal)='getAttachmentList()' (onCreateModal)=\"addAttachmentList($event)\" [mode]=\"mode\"></modal-step>-->\n<modal-attachment #modalAttachment (onModalCreateSubmit)=\"addAttachmentList($event)\"\n (onModalEditSubmit)=\"editAttachmentList($event)\" [isImage]=\"showImage\"></modal-attachment>\n<modal-attachment-view #modalAttachmentView [isImage]=\"showImage\"></modal-attachment-view>\n<app-alert #myModal (onOkDeleteAttachment)=\"fnDeleteMultiple()\" (onClickBack)=\"onClickBack()\"></app-alert>\n"
}] }
];
/** @nocollapse */
AttachmentListComponent.ctorParameters = () => [
{ type: AppConfigService },
{ type: Request },
{ type: Common },
{ type: B2bService }
];
AttachmentListComponent.propDecorators = {
mode: [{ type: Input }],
type: [{ type: Input }],
option: [{ type: Input }],
showImage: [{ type: Input }],
alertModal: [{ type: Input }],
attachmentModal: [{ type: Input }],
attachmentViewModal: [{ type: Input }],
onLoaded: [{ type: Output }],
onClickScan: [{ type: Output }],
onClickDelete: [{ type: Output }],
dxDataGridAttachmentList: [{ type: ViewChild, args: ['dxDataGridAttachmentList',] }],
modalAttachment: [{ type: ViewChild, args: ['modalAttachment',] }],
modalAttachmentView: [{ type: ViewChild, args: ['modalAttachmentView',] }],
myModal: [{ type: ViewChild, args: ['myModal',] }]
};
if (false) {
/** @type {?} */
AttachmentListComponent.prototype.mode;
/** @type {?} */
AttachmentListComponent.prototype.type;
/** @type {?} */
AttachmentListComponent.prototype.option;
/** @type {?} */
AttachmentListComponent.prototype.showImage;
/** @type {?} */
AttachmentListComponent.prototype.alertModal;
/** @type {?} */
AttachmentListComponent.prototype.attachmentModal;
/** @type {?} */
AttachmentListComponent.prototype.attachmentViewModal;
/** @type {?} */
AttachmentListComponent.prototype.onLoaded;
/** @type {?} */
AttachmentListComponent.prototype.onClickScan;
/** @type {?} */
AttachmentListComponent.prototype.onClickDelete;
/** @type {?} */
AttachmentListComponent.prototype.dxDataGridAttachmentList;
/** @type {?} */
AttachmentListComponent.prototype.modalAttachment;
/** @type {?} */
AttachmentListComponent.prototype.modalAttachmentView;
/** @type {?} */
AttachmentListComponent.prototype.myModal;
/** @type {?} */
AttachmentListComponent.prototype.columns;
/** @type {?} */
AttachmentListComponent.prototype.attachmentList;
/** @type {?} */
AttachmentListComponent.prototype.th;
/** @type {?} */
AttachmentListComponent.prototype.dxgridPageSize;
/** @type {?} */
AttachmentListComponent.prototype.allowedPageSizes1;
/** @type {?} */
AttachmentListComponent.prototype.allowedPageSizes2;
/** @type {?} */
AttachmentListComponent.prototype.allowedPageSizes3;
/** @type {?} */
AttachmentListComponent.prototype.allowedPageSizes4;
/** @type {?} */
AttachmentListComponent.prototype.customers;
/** @type {?} */
AttachmentListComponent.prototype.url;
/** @type {?} */
AttachmentListComponent.prototype.lastStep;
/** @type {?} */
AttachmentListComponent.prototype.config;
/** @type {?} */
AttachmentListComponent.prototype.deleteIdList;
/** @type {?} */
AttachmentListComponent.prototype.dsAttachment;
/** @type {?} */
AttachmentListComponent.prototype.selectedAttachment;
/** @type {?} */
AttachmentListComponent.prototype.tmpId;
/** @type {?} */
AttachmentListComponent.prototype.classifieds;
/** @type {?} */
AttachmentListComponent.prototype.downloadToken;
/** @type {?} */
AttachmentListComponent.prototype.username_caption;
/** @type {?} */
AttachmentListComponent.prototype.appConfigService;
/** @type {?} */
AttachmentListComponent.prototype.request;
/** @type {?} */
AttachmentListComponent.prototype.common;
/** @type {?} */
AttachmentListComponent.prototype.b2b;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9hdHRhY2htZW50LWxpc3QvYXR0YWNobWVudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzFGLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQU14RyxNQUFNOzs7Ozs7O0lBeUNGLFlBQ1ksa0JBQ0EsU0FDQSxRQUNBO1FBSEEscUJBQWdCLEdBQWhCLGdCQUFnQjtRQUNoQixZQUFPLEdBQVAsT0FBTztRQUNQLFdBQU0sR0FBTixNQUFNO1FBQ04sUUFBRyxHQUFILEdBQUc7b0JBM0M2QixRQUFRO29CQUM1QixDQUFDO3lCQUVLLEtBQUs7d0JBSWQsSUFBSSxZQUFZLEVBQUU7MkJBQ2YsSUFBSSxZQUFZLEVBQUU7NkJBQ2hCLElBQUksWUFBWSxFQUFFO3VCQVdsQyxDQUFDLFVBQVUsRUFB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RDs7OztZQWRRLGdCQUFnQjtZQUVoQixPQUFPO1lBQ1AsTUFBTTtZQUtOLFVBQVU7OzttQkFTZCxLQUFLO21CQUNMLEtBQUs7cUJBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7OEJBQ0wsS0FBSztrQ0FDTCxLQUFLO3VCQUNMLE1BQU07MEJBQ04sTUFBTTs0QkFDTixNQUFNO3VDQUNOLFNBQVMsU0FBQywwQkFBMEI7OEJBSXBDLFNBQVMsU0FBQyxpQkFBaUI7a0NBRTNCLFNBQVMsU0FBQyxxQkFBcUI7c0JBRS9CLFNBQVMsU0FBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNb2RhbFN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1zdGVwL21vZGFsLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9hcHAtY29uZmlnL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBEeERhdGFHcmlkQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcbmltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICcuLi9fc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL19zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFN0ZXBWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtc3RlcC12aWV3L21vZGFsLXN0ZXAtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxBdHRhY2htZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtYXR0YWNobWVudC9tb2RhbC1hdHRhY2htZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDcmVhdGVBbGVydENvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCMmJTZXJ2aWNlIH0gZnJvbSAnLi4vX3NlcnZpY2VzL2IyYi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsQXR0YWNobWVudFZpZXdDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1hdHRhY2htZW50LXZpZXcvbW9kYWwtYXR0YWNobWVudC12aWV3LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc29jLWF0dGFjaG1lbnQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgbW9kZTogJ0NSRUFURScgfCAnRURJVCcgfCAnVklFVycgPSAnQ1JFQVRFJztcbiAgICBASW5wdXQoKSB0eXBlOiBudW1iZXIgPSAyO1xuICAgIEBJbnB1dCgpIG9wdGlvbjogYW55O1xuICAgIEBJbnB1dCgpIHNob3dJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGFsZXJ0TW9kYWw6IENyZWF0ZUFsZXJ0Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGF0dGFjaG1lbnRNb2RhbDogTW9kYWxBdHRhY2htZW50Q29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGF0dGFjaG1lbnRWaWV3TW9kYWw6IE1vZGFsQXR0YWNobWVudFZpZXdDb21wb25lbnQ7XG4gICAgQE91dHB1dCgpIG9uTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbkNsaWNrU2NhbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25DbGlja0RlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAVmlld0NoaWxkKCdkeERhdGFHcmlkQXR0YWNobWVudExpc3QnKVxuICAgIGR4RGF0YUdyaWRBdHRhY2htZW50TGlzdDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgICAvLyBAVmlld0NoaWxkKCdtb2RhbFN0ZXAnKVxuICAgIC8vIG1vZGFsU3RlcDogTW9kYWxTdGVwQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ21vZGFsQXR0YWNobWVudCcpXG4gICAgbW9kYWxBdHRhY2htZW50OiBNb2RhbEF0dGFjaG1lbnRDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnbW9kYWxBdHRhY2htZW50VmlldycpXG4gICAgbW9kYWxBdHRhY2htZW50VmlldzogTW9kYWxBdHRhY2htZW50Vmlld0NvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdteU1vZGFsJykgbXlNb2RhbDtcblxuICAgIGNvbHVtbnMgPSBbJ+C4peC4s+C4lOC4seC4muC4l+C4teC5iCcsICfguJzguLnguYnguYHguIHguYnguYTguIInLCAn4Lin4Lix4LiZ4LiX4Li14LmIJywgJ+C4quC4luC4suC4meC4sOC4geC4suC4o+C4leC4tOC4lOC4leC4suC4oScsICfguKvguKHguLLguKLguYDguKvguJXguLgnXTtcbiAgICBhdHRhY2htZW50TGlzdDogYW55ID0gW107XG4gICAgdGg7XG4gICAgZHhncmlkUGFnZVNpemUgPSAxMDtcbiAgICBhbGxvd2VkUGFnZVNpemVzMSA9IDEwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXMyID0gMjU7XG4gICAgYWxsb3dlZFBhZ2VTaXplczMgPSA1MDtcbiAgICBhbGxvd2VkUGFnZVNpemVzNCA9IDEwMDtcbiAgICBjdXN0b21lcnMgPSBbXTtcbiAgICB1cmw7XG4gICAgbGFzdFN0ZXAgPSAnJztcbiAgICBjb25maWc6IGFueTtcbiAgICBkZWxldGVJZExpc3QgPSBbXTtcbiAgICBkc0F0dGFjaG1lbnQgPSBbXTtcbiAgICBzZWxlY3RlZEF0dGFjaG1lbnQgPSBbXTtcbiAgICB0bXBJZCA9IC0xO1xuICAgIGNsYXNzaWZpZWRzID0gMDtcbiAgICBkb3dubG9hZFRva2VuO1xuICAgIHVzZXJuYW1lX2NhcHRpb24gPSAn4Lic4Li54LmJ4Lia4Lix4LiZ4LiX4Li24LiBL+C4nOC4ueC5ieC4meC4s+C5gOC4guC5ieC4sidcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlcXVlc3Q6IFJlcXVlc3QsXG4gICAgICAgIHByaXZhdGUgY29tbW9uOiBDb21tb24sXG4gICAgICAgIHByaXZhdGUgYjJiOiBCMmJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVG9rZW4gPSBhd2FpdCB0aGlzLmIyYi5nZXRBdHRhY2htZW50VG9rZW4oKTtcbiAgICAgICAgfSwgNTAwKVxuICAgICAgICBpZiAodGhpcy5tb2RlICE9PSBcIkNSRUFURVwiKSB7XG4gICAgICAgICAgICB0aGlzLmdldEF0dGFjaG1lbnRMaXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZ2V0QXR0YWNobWVudExpc3QoKSB7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ2dldEF0dGFjaG1lbnRMaXN0JywgdGhpcy5hdHRhY2htZW50TGlzdCwgdGhpcy5vcHRpb24udXNlcm5hbWVfY2FwdGlvbik7XG4gICAgICAgIGxldCBmaWx0ZXI6IGFueSA9IHtcbiAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHJlZl90YWJsZTogdGhpcy5vcHRpb24uZGF0YS5yZWZfdGFibGUsXG4gICAgICAgICAgICAgICAgcmVmX2lkOiB0aGlzLm9wdGlvbi5kYXRhLnJlZl9pZCxcbiAgICAgICAgICAgICAgICBzeXN0ZW1faWQ6IHRoaXMub3B0aW9uLmRhdGEuc3lzdGVtX2lkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JkZXJfYnk6IFtcIm9yZGVyX25vXCJdXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9uLmRhdGEucmVzdWx0X3RhYmxlX2lkKSBmaWx0ZXIuZmlsdGVyLnJlc3VsdF90YWJsZV9pZCA9IHRoaXMub3B0aW9uLmRhdGEucmVzdWx0X3RhYmxlX2lkO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXF1ZXN0LnBvc3QoJy9zZWFyY2gvcmNfYXR0YWNobWVudF9wcm9wJywgZmlsdGVyKTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdCA9IGRhdGEucmVzdWx0RGF0YTtcbiAgICAgICAgdGhpcy5jbGFzc2lmaWVkcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgb2YgdGhpcy5hdHRhY2htZW50TGlzdCkge1xuICAgICAgICAgICAgaWYgKGkuaXNfY2xhc3NpZmllZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ2dldEF0dGFjaG1lbnRMaXN0JywgdGhpcy5hdHRhY2htZW50TGlzdCk7XG4gICAgICAgIHRoaXMub25Mb2FkZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIGFkZEF0dGFjaG1lbnRMaXN0KGRhdGEpIHtcbiAgICAgICAgZGF0YS5pZCA9IHRoaXMudG1wSWQ7XG4gICAgICAgIHRoaXMudG1wSWQtLTtcbiAgICAgICAgaWYgKHRoaXMuYjJiLmdldFZlcmlmeVRva2VuKCkucGhvbmVCb29rRGF0YSAmJiB0aGlzLmIyYi5nZXRWZXJpZnlUb2tlbigpLnBob25lQm9va0RhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGF0YS51c2VybmFtZSA9IHRoaXMuYjJiLmdldFZlcmlmeVRva2VuKCkudXNlcm5hbWU7XG4gICAgICAgICAgICBkYXRhLnJlY29yZGVyX25hbWUgPSB0aGlzLmIyYi5nZXRWZXJpZnlUb2tlbigpLnBob25lQm9va0RhdGFbMF0ubmFtZTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmFjdGlvbiA9IFwiYWRkXCI7XG4gICAgICAgIGlmIChkYXRhLmlzX2NsYXNzaWZpZWRzKSB7XG4gICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdC5wdXNoKGRhdGEpO1xuICAgICAgICBjb25zb2xlLmxvZygnZ2V0QXR0YWNobWVudExpc3QnLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICB9XG5cbiAgICBlZGl0QXR0YWNobWVudExpc3QoZGF0YSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYXR0YWNobWVudExpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRMaXN0W2ldLmlkID09PSBkYXRhLmlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNfY2xhc3NpZmllZHMgJiYgIXRoaXMuYXR0YWNobWVudExpc3RbaV0uaXNfY2xhc3NpZmllZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc2lmaWVkcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWRhdGEuaXNfY2xhc3NpZmllZHMgJiYgdGhpcy5hdHRhY2htZW50TGlzdFtpXS5pc19jbGFzc2lmaWVkcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbaV0gPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdnZXRBdHRhY2htZW50TGlzdCcsIHRoaXMuYXR0YWNobWVudExpc3QpO1xuICAgIH1cblxuICAgIGdldFJvd0luZGV4KGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhLmRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmRhdGEub3JkZXJfbm8gPSBkYXRhLmNvbXBvbmVudC5wYWdlSW5kZXgoKSAqIGRhdGEuY29tcG9uZW50LnBhZ2VTaXplKCkgKyBkYXRhLnJvd0luZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuIGRhdGEuZGF0YS5vcmRlcl9ubztcbiAgICB9XG4gICAgY2xpY2tBZGQoKSB7XG4gICAgICAgIHRoaXMub3B0aW9uLm1vZGUgPSAnQ1JFQVRFJztcbiAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudE1vZGFsKSB7XG4gICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRNb2RhbC5vcGVuKHRoaXMub3B0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Lm9wZW4odGhpcy5vcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsaWNrRWRpdChkYXRhKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjbGlja0VkaXQnLCBkYXRhKVxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBkYXRhLmZpbGVuYW1lXG4gICAgICAgIGxldCBmaWxlVHlwZSA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sZW5ndGggLSAzLCBmaWxlTmFtZS5sZW5ndGgpXG4gICAgICAgIGNvbnNvbGUubG9nKCdmaWxlVHlwZScsIGZpbGVUeXBlKVxuICAgICAgICBpZiAodGhpcy50eXBlID09IDEgJiYgKGZpbGVUeXBlID09ICdwZGYnIHx8IGZpbGVUeXBlID09ICdQREYnKSkge1xuICAgICAgICAgICAgY29uc3QgZWRpdERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLm9wdGlvbik7XG4gICAgICAgICAgICBlZGl0RGF0YS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIGVkaXREYXRhLm1vZGUgPSAnRURJVCc7XG4gICAgICAgICAgICBlZGl0RGF0YS5kb3dubG9hZFRva2VuID0gdGhpcy5kb3dubG9hZFRva2VuO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2Nhbi5lbWl0KGVkaXREYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgY29uc3QgZWRpdERhdGEgPSBfLmNsb25lRGVlcCh0aGlzLm9wdGlvbik7XG4gICAgICAgICAgICBlZGl0RGF0YS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIGVkaXREYXRhLm1vZGUgPSAnRURJVCc7XG4gICAgICAgICAgICBlZGl0RGF0YS5kb3dubG9hZFRva2VuID0gdGhpcy5kb3dubG9hZFRva2VuO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudE1vZGFsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50TW9kYWwub3BlbihlZGl0RGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Lm9wZW4oZWRpdERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgY2xpY2tWaWV3KGRhdGEpIHtcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YS5maWxlbmFtZVxuICAgICAgICBsZXQgZmlsZVR5cGUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoZmlsZU5hbWUubGVuZ3RoIC0gMywgZmlsZU5hbWUubGVuZ3RoKVxuICAgICAgICBjb25zb2xlLmxvZygnZmlsZVR5cGUnLCBmaWxlVHlwZSlcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAxICYmIChmaWxlVHlwZSA9PSAncGRmJyB8fCBmaWxlVHlwZSA9PSAnUERGJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdEYXRhID0gXy5jbG9uZURlZXAodGhpcy5vcHRpb24pO1xuICAgICAgICAgICAgdmlld0RhdGEuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB2aWV3RGF0YS5tb2RlID0gJ1ZJRVcnO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrU2Nhbi5lbWl0KHZpZXdEYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdEYXRhID0gXy5jbG9uZURlZXAodGhpcy5vcHRpb24pO1xuICAgICAgICAgICAgdmlld0RhdGEuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB2aWV3RGF0YS5tb2RlID0gJ1ZJRVcnO1xuICAgICAgICAgICAgdmlld0RhdGEuZG93bmxvYWRUb2tlbiA9IHRoaXMuZG93bmxvYWRUb2tlbjtcbiAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRWaWV3TW9kYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaG1lbnRWaWV3TW9kYWwub3Blbih2aWV3RGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxBdHRhY2htZW50Vmlldy5vcGVuKHZpZXdEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGlja01vdmVVcChkYXRhKSB7XG4gICAgICAgIGxldCB0bXAgPSB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXhdO1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXhdID0gdGhpcy5hdHRhY2htZW50TGlzdFtkYXRhLnJvd0luZGV4IC0gMV07XG4gICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleCAtIDFdID0gdG1wO1xuICAgIH1cbiAgICBjbGlja01vdmVEb3duKGRhdGEpIHtcbiAgICAgICAgbGV0IHRtcCA9IHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleF07XG4gICAgICAgIHRoaXMuYXR0YWNobWVudExpc3RbZGF0YS5yb3dJbmRleF0gPSB0aGlzLmF0dGFjaG1lbnRMaXN0W2RhdGEucm93SW5kZXggKyAxXTtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdFtkYXRhLnJvd0luZGV4ICsgMV0gPSB0bXA7XG4gICAgfVxuICAgIGFzeW5jIGNsaWNrRG93bmxvYWQoZGF0YSkge1xuICAgICAgICB3aW5kb3cub3BlbihkYXRhLnVybCArIFwiP2Rvd25sb2FkVG9rZW49XCIgKyB0aGlzLmRvd25sb2FkVG9rZW4pO1xuICAgIH1cbiAgICBnZXRMYXN0U3RlcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFzdFN0ZXA7XG4gICAgfVxuICAgIC8qKiBTVEFSVCBERUxFVEUgKi9cbiAgICBmbkNsaWNrRGVsZXRlKGlkTGlzdDogYW55W10pIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrRGVsZXRlLmVtaXQoKTtcbiAgICAgICAgdGhpcy5kZWxldGVJZExpc3QgPSBpZExpc3Q7XG4gICAgICAgIGlmICh0aGlzLmRlbGV0ZUlkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25maXJtRGVsZXRlKCkge1xuICAgICAgICB0aGlzLmdvQWxlcnQoJycsICcnLCAnbXlNb2RhbERlbGV0ZUF0dGFjaG1lbnQnKTtcbiAgICB9XG5cbiAgICBnb0FsZXJ0KHVzZXJUaXRsZSwgdXNlck1lc3NhZ2UsIG1vZGFsSWQpIHtcbiAgICAgICAgY29uc3QgZGF0YUFsZXJ0ID0ge1xuICAgICAgICAgICAgJ21vZGFsSWQnOiBtb2RhbElkLFxuICAgICAgICAgICAgJ3VzZXJUaXRsZSc6IHVzZXJUaXRsZSxcbiAgICAgICAgICAgICd1c2VyTWVzc2FnZSc6IHVzZXJNZXNzYWdlXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmFsZXJ0TW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRNb2RhbC5vcGVuTW9kYWwoZGF0YUFsZXJ0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubXlNb2RhbC5vcGVuTW9kYWwoZGF0YUFsZXJ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2VsbFByZXBhcmVkKGUpIHtcbiAgICAgICAgaWYgKGUucm93VHlwZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICBlLmNlbGxFbGVtZW50LmFjY2Vzc0tleSA9IGUuY29sdW1uLmNhcHRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmbkRlbGV0ZU11bHRpcGxlKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcInRoaXMuZGVsZXRlSWRMaXN0XCIsIHRoaXMuZGVsZXRlSWRMaXN0KTtcbiAgICAgICAgY29uc29sZS5sb2coXCJ0aGlzLmF0dGFjaG1lbnRMaXN0IGJlZm9yZVwiLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICAgICAgZm9yIChsZXQgaWQgb2YgdGhpcy5kZWxldGVJZExpc3QpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmF0dGFjaG1lbnRMaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXR0YWNobWVudExpc3RbaV0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0dGFjaG1lbnRMaXN0W2ldLmlzX2NsYXNzaWZpZWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsYXNzaWZpZWRzLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdHRhY2htZW50TGlzdC5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwidGhpcy5hdHRhY2htZW50TGlzdCBhZnRlclwiLCB0aGlzLmF0dGFjaG1lbnRMaXN0KTtcbiAgICB9XG4gICAgb25DbGlja0JhY2soKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2xpY2tiYWNrXCIpO1xuICAgIH1cblxuICAgIGdldEltYWdlTGluayhkYXRhKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnVybCArIFwiP2Rvd25sb2FkVG9rZW49XCIgKyB0aGlzLmRvd25sb2FkVG9rZW47XG4gICAgfVxuXG4gICAgc2NhbigpIHtcbiAgICAgICAgdGhpcy5vcHRpb24ubW9kZSA9ICdDUkVBVEUnO1xuICAgICAgICB0aGlzLm9uQ2xpY2tTY2FuLmVtaXQodGhpcy5vcHRpb24pO1xuICAgIH1cblxufVxuIl19