sent-list.component.js
26.6 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
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ViewChild, Input } 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 { ModalStepViewComponent } from '../modal-step-view/modal-step-view.component';
import { ModalDirective } from 'ngx-bootstrap';
import { FormBuilder, FormControl, Validators } from '@angular/forms';
import { B2bService } from '../_services/b2b.service';
var SentListComponent = /** @class */ (function () {
// downloadToken:any;
function SentListComponent(appConfigService, request, common, formBuilder, b2b) {
this.appConfigService = appConfigService;
this.request = request;
this.common = common;
this.formBuilder = formBuilder;
this.b2b = b2b;
this.mode = 'CREATE';
this.sentList = [];
this.dxgridPageSize = 10;
this.allowedPageSizes1 = 10;
this.allowedPageSizes2 = 25;
this.allowedPageSizes3 = 50;
this.allowedPageSizes4 = 100;
this.customers = [];
this.lastStep = '';
this.recieveData = {};
this.submittedRecieve = false;
this.config = appConfigService.getConfig();
}
/**
* @return {?}
*/
SentListComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
// if(this.mode === "EDIT"){
// setTimeout(async ()=>{
// this.downloadToken = await this.b2b.getAttachmentToken();
// },500)
this.getSentList();
this.recieveForm = this.formBuilder.group({
book_no: ['', [Validators.required]],
recv_date: new FormControl(''),
});
// }
};
/**
* @return {?}
*/
SentListComponent.prototype.fr = /**
* @return {?}
*/
function () { return this.recieveForm.controls; };
/**
* @return {?}
*/
SentListComponent.prototype.getSentList = /**
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var sentData, filter, data;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
console.log('getSentList', this.sentList);
sentData = this.option.data;
filter = {
filter: {
ref_table: sentData.ref_table,
ref_id: sentData.ref_id
},
order_by: ["is_important", "send_book_no", "created_at"]
};
return [4 /*yield*/, this.request.post('/search/v_ct_step_sent', filter)];
case 1:
data = _a.sent();
this.sentList = data.resultData;
console.log('getSentList', this.sentList);
return [2 /*return*/];
}
});
});
};
/**
* @param {?} data
* @return {?}
*/
SentListComponent.prototype.getRowIndex = /**
* @param {?} data
* @return {?}
*/
function (data) {
if (!data.data) {
return '';
}
/** @type {?} */
var page = this.dxDataGridSentList.instance.option('paging.pageIndex') || 0;
/** @type {?} */
var pageSize = this.dxDataGridSentList.instance.option('paging.pageSize');
/** @type {?} */
var no = data.row.dataIndex + 1;
return page * pageSize + no;
};
/**
* @param {?} data
* @return {?}
*/
SentListComponent.prototype.editRecieve = /**
* @param {?} data
* @return {?}
*/
function (data) {
console.log('data', data);
this.tmpData = data;
this.recieveModal.show();
};
/**
* @return {?}
*/
SentListComponent.prototype.closeRecieveModal = /**
* @return {?}
*/
function () {
this.submittedRecieve = false;
this.recieveData = {};
this.tmpData = {};
this.recieveModal.hide();
};
/**
* @return {?}
*/
SentListComponent.prototype.onSubmitRecieve = /**
* @return {?}
*/
function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
this.submittedRecieve = true;
// ถ้า form ไม่ครบหรือผิดตามเงื่อนไขที่ตั้งไว้จะจบที่ตรงนี้
if (this.recieveForm.invalid) {
return [2 /*return*/];
}
console.log('tmpData', this.tmpData);
this.recieveData.name = this.tmpData.name;
if (this.tmpData.ct_main_id)
this.recieveData.ct_main_id = this.tmpData.ct_main_id;
if (this.tmpData.ct_send_id)
this.recieveData.ct_send_id = this.tmpData.ct_send_id;
if (this.tmpData.ct_step_data_id)
this.recieveData.ct_step_data_id = this.tmpData.ct_step_data_id;
console.log('recieveData', this.recieveData);
return [4 /*yield*/, this.request.post("/db/ct_recieve", this.recieveData)];
case 1:
_a.sent();
this.getSentList();
this.closeRecieveModal();
return [2 /*return*/];
}
});
});
};
/**
* @param {?} data
* @return {?}
*/
SentListComponent.prototype.isImportant = /**
* @param {?} data
* @return {?}
*/
function (data) {
return data.is_important ? "สำคัญ" : "";
};
/**
* @param {?} e
* @return {?}
*/
SentListComponent.prototype.onCellPrepared = /**
* @param {?} e
* @return {?}
*/
function (e) {
if (e.rowType === 'data') {
e.cellElement.accessKey = e.column.caption;
}
};
SentListComponent.decorators = [
{ type: Component, args: [{
selector: 'soc-sent-list',
template: "\n<div class=\"col-sm-12\">\n <div class=\"table-responsive table-wrapper\">\n <dx-data-grid #dxDataGridSentList\n id=\"gridContainer\" noDataText=\"\" showBorders=\"true\" class=\"card-list-table\"\n (onCellPrepared)=\"onCellPrepared($event)\" [dataSource]=\"sentList\"\n [hoverStateEnabled]=\"true\" [rowAlternationEnabled]=\"true\" [columnAutoWidth]=\"false\"\n [allowColumnResizing]=\"true\" [allowColumnReordering]=\"true\" [wordWrapEnabled]=\"false\"\n [showBorders]=\"true\">\n <dxi-column caption=\"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\" [allowSorting]=\"false\" cellTemplate=\"cellTemplate\" alignment=\"center\" [width]=\"70\"></dxi-column>\n <dxi-column *ngIf=\"mode === 'EDIT'\" caption=\"\u0E08\u0E31\u0E14\u0E01\u0E32\u0E23\" [allowSorting]=\"false\" cellTemplate=\"cellTemplateAction\" alignment=\"center\" [width]=\"70\"></dxi-column>\n <dxi-column dataField=\"send_to\" caption=\"\u0E2B\u0E19\u0E48\u0E27\u0E22\u0E07\u0E32\u0E19\"></dxi-column>\n <dxi-column dataField=\"send_book_no\" caption=\"\u0E40\u0E25\u0E02\u0E17\u0E35\u0E48\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01\"></dxi-column>\n <dxi-column dataField=\"send_date\" caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01\" dataType=\"date\" alignment=\"center\" [width]=\"100\"></dxi-column>\n <dxi-column [calculateCellValue]=\"isImportant\" caption=\"\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E33\u0E04\u0E31\u0E0D\"></dxi-column>\n <dxi-column dataField=\"book_no\" caption=\"\u0E40\u0E25\u0E02\u0E17\u0E35\u0E48\u0E23\u0E31\u0E1A\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D\"></dxi-column>\n <dxi-column dataField=\"recv_date\" caption=\"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E23\u0E31\u0E1A\" dataType=\"date\" alignment=\"center\" [width]=\"100\"></dxi-column>\n <dxo-paging [pageSize]=\"dxgridPageSize\"></dxo-paging>\n <dxo-pager [showPageSizeSelector]=\"true\" [allowedPageSizes]=\"[allowedPageSizes1, allowedPageSizes2, allowedPageSizes3, allowedPageSizes4]\"\n [showInfo]=\"false\" [visible]=\"true\" [showNavigationButtons]=\"true\">\n </dxo-pager>\n <dxo-state-storing [enabled]=\"true\" type=\"localStorage\" storageKey=\"sentListDataGrid\"></dxo-state-storing>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n {{getRowIndex(data)}}\n </div>\n <div *dxTemplate=\"let data of 'cellTemplateAction'\">\n <a *ngIf=\"mode === 'EDIT'\" id=\"btnEditRecieve\" (click)=\"editRecieve(data.data)\" class=\"btn btn-default btn-sm icon\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"\u0E41\u0E01\u0E49\u0E44\u0E02\"><i class=\"fal fa-pencil-alt\"></i></a>\n </div>\n </dx-data-grid>\n </div>\n</div><!--End col-sm-12-->\n<div class=\"modal fade\" bsModal #recieveModal=\"bs-modal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"dialog-static-name2\" [config]=\"{backdrop: 'static'}\">\n <div class=\"modal-dialog modal-md\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 id=\"dialog-static-recieve\" class=\"modal-title pull-left\"><label>\u0E23\u0E31\u0E1A\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D \u0E15\u0E2D\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E40\u0E2B\u0E47\u0E19</label></h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"closeRecieveModal()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <form class=\"m-form m-form--state m-form--fit m-form--label-align-right\" [formGroup]=\"recieveForm\" (ngSubmit)=\"onSubmitRecieve()\">\n <div class=\"ibox-body\">\n <div class=\"row\">\n <div class=\"form-group\">\n <label class=\"control-label\">\u0E40\u0E25\u0E02\u0E17\u0E35\u0E48\u0E23\u0E31\u0E1A\u0E2B\u0E19\u0E31\u0E07\u0E2A\u0E37\u0E2D</label>\n <div class=\"form-group m-form__group\" [ngClass]=\"{ 'has-error': submittedRecieve && fr().book_no.errors }\">\n <input type=\"text\" class=\"form-control m-input\" id=\"txtRecieveBookNo\" formControlName=\"book_no\" [(ngModel)]=\"recieveData.book_no\">\n <div *ngIf=\"submittedRecieve && fr().book_no.errors\" class=\"invalid-feedback\">\n <div *ngIf=\"fr().book_no.errors.required\">First Name is required</div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label class=\"control-label\">\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E23\u0E31\u0E1A</label>\n <!--<div class=\"form-group m-form__group\" [ngClass]=\"{ 'has-error': submittedRecieve && fr().recv_date.errors }\">-->\n <soc-date-box [id]=\"'txtRecieveDate'\" [(value)]=\"recieveData.recv_date\"></soc-date-box>\n <!--<div *ngIf=\"submittedRecieve && fr().recv_date.errors\" >-->\n <!--<div *ngIf=\"fr().recv_date.errors.required\" class=\"lable-error\">Date is required</div>-->\n <!--<div *ngIf=\"fr().recv_date.errors.date\" class=\"lable-error\">Date is invalid</div>-->\n <!--</div>-->\n <!--</div>-->\n </div>\n </div>\n </div>\n <div class=\"m-portlet__foot m-portlet__foot--fit text-right\">\n <div class=\"m-form__actions\">\n <button type=\"submit\" class=\"btn btn-success btn-md btn-md-save\">\n \u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\n </button>\n <button type=\"reset\" class=\"btn btn-default btn-md btn-md-search\" (click)=\"closeRecieveModal()\">\n \u0E22\u0E01\u0E40\u0E25\u0E34\u0E01\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n"
}] }
];
/** @nocollapse */
SentListComponent.ctorParameters = function () { return [
{ type: AppConfigService },
{ type: Request },
{ type: Common },
{ type: FormBuilder },
{ type: B2bService }
]; };
SentListComponent.propDecorators = {
mode: [{ type: Input }],
option: [{ type: Input }],
dxDataGridSentList: [{ type: ViewChild, args: ['dxDataGridSentList',] }],
modalStepView: [{ type: ViewChild, args: ['modalStepView',] }],
recieveModal: [{ type: ViewChild, args: ['recieveModal',] }]
};
return SentListComponent;
}());
export { SentListComponent };
if (false) {
/** @type {?} */
SentListComponent.prototype.mode;
/** @type {?} */
SentListComponent.prototype.option;
/** @type {?} */
SentListComponent.prototype.dxDataGridSentList;
/** @type {?} */
SentListComponent.prototype.modalStepView;
/** @type {?} */
SentListComponent.prototype.recieveModal;
/** @type {?} */
SentListComponent.prototype.sentList;
/** @type {?} */
SentListComponent.prototype.th;
/** @type {?} */
SentListComponent.prototype.dxgridPageSize;
/** @type {?} */
SentListComponent.prototype.allowedPageSizes1;
/** @type {?} */
SentListComponent.prototype.allowedPageSizes2;
/** @type {?} */
SentListComponent.prototype.allowedPageSizes3;
/** @type {?} */
SentListComponent.prototype.allowedPageSizes4;
/** @type {?} */
SentListComponent.prototype.customers;
/** @type {?} */
SentListComponent.prototype.url;
/** @type {?} */
SentListComponent.prototype.lastStep;
/** @type {?} */
SentListComponent.prototype.config;
/** @type {?} */
SentListComponent.prototype.recieveData;
/** @type {?} */
SentListComponent.prototype.tmpData;
/** @type {?} */
SentListComponent.prototype.submittedRecieve;
/** @type {?} */
SentListComponent.prototype.recieveForm;
/** @type {?} */
SentListComponent.prototype.appConfigService;
/** @type {?} */
SentListComponent.prototype.request;
/** @type {?} */
SentListComponent.prototype.common;
/** @type {?} */
SentListComponent.prototype.formBuilder;
/** @type {?} */
SentListComponent.prototype.b2b;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VudC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvYy1hcHAtbGlicmFyeS8iLCJzb3VyY2VzIjpbImxpYi9zZW50LWxpc3Qvc2VudC1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQXlCLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBa0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7O0lBZ0NoRCxxQkFBcUI7SUFDckIsMkJBQ1ksa0JBQ0EsU0FDRCxRQUNDLGFBQ0E7UUFKQSxxQkFBZ0IsR0FBaEIsZ0JBQWdCO1FBQ2hCLFlBQU8sR0FBUCxPQUFPO1FBQ1IsV0FBTSxHQUFOLE1BQU07UUFDTCxnQkFBVyxHQUFYLFdBQVc7UUFDWCxRQUFHLEdBQUgsR0FBRztvQkE5QnlCLFFBQVE7d0JBU2hDLEVBQUU7OEJBRUQsRUFBRTtpQ0FDQyxFQUFFO2lDQUNGLEVBQUU7aUNBQ0YsRUFBRTtpQ0FDRixHQUFHO3lCQUNYLEVBQUU7d0JBRUgsRUFBRTsyQkFFSyxFQUFFO2dDQUVELEtBQUs7UUFTcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFB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QUVmLE9BQU87Z0JBQ1IsTUFBTTtnQkFHTixXQUFXO2dCQUVYLFVBQVU7Ozt1QkFRYixLQUFLO3lCQUNMLEtBQUs7cUNBQ0wsU0FBUyxTQUFDLG9CQUFvQjtnQ0FJOUIsU0FBUyxTQUFDLGVBQWU7K0JBRXpCLFNBQVMsU0FBQyxjQUFjOzs0QkExQjdCOztTQWdCYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TW9kYWxTdGVwQ29tcG9uZW50fSBmcm9tICcuLi9tb2RhbC1zdGVwL21vZGFsLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7QXBwQ29uZmlnU2VydmljZX0gZnJvbSAnLi4vYXBwLWNvbmZpZy9hcHAtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50fSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJy4uL19zZXJ2aWNlcy9yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb259IGZyb20gJy4uL19zZXJ2aWNlcy9jb21tb24uc2VydmljZSc7XG5pbXBvcnQge01vZGFsU3RlcFZpZXdDb21wb25lbnR9IGZyb20gJy4uL21vZGFsLXN0ZXAtdmlldy9tb2RhbC1zdGVwLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7TW9kYWxEaXJlY3RpdmV9IGZyb20gJ25neC1ib290c3RyYXAnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0N1c3RvbVZhbGlkYXRvcnN9IGZyb20gJ25nMi12YWxpZGF0aW9uJztcbmltcG9ydCB7QjJiU2VydmljZX0gZnJvbSAnLi4vX3NlcnZpY2VzL2IyYi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc29jLXNlbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZW50LWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNlbnRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIG1vZGU6ICdDUkVBVEUnfCdFRElUJ3wnVklFVycgPSAnQ1JFQVRFJztcbiAgICBASW5wdXQoKSBvcHRpb246IGFueTtcbiAgICBAVmlld0NoaWxkKCdkeERhdGFHcmlkU2VudExpc3QnKVxuICAgIGR4RGF0YUdyaWRTZW50TGlzdDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgICAvLyBAVmlld0NoaWxkKCdtb2RhbFN0ZXAnKVxuICAgIC8vIG1vZGFsU3RlcDogTW9kYWxTdGVwQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ21vZGFsU3RlcFZpZXcnKVxuICAgIG1vZGFsU3RlcFZpZXc6IE1vZGFsU3RlcFZpZXdDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgncmVjaWV2ZU1vZGFsJykgcmVjaWV2ZU1vZGFsOiBNb2RhbERpcmVjdGl2ZTtcbiAgICBzZW50TGlzdDogYW55ID0gW107XG4gICAgdGg7XG4gICAgZHhncmlkUGFnZVNpemUgPSAxMDtcbiAgICBhbGxvd2VkUGFnZVNpemVzMSA9IDEwO1xuICAgIGFsbG93ZWRQYWdlU2l6ZXMyID0gMjU7XG4gICAgYWxsb3dlZFBhZ2VTaXplczMgPSA1MDtcbiAgICBhbGxvd2VkUGFnZVNpemVzNCA9IDEwMDtcbiAgICBjdXN0b21lcnMgPSBbXTtcbiAgICB1cmw7XG4gICAgbGFzdFN0ZXAgPSAnJztcbiAgICBjb25maWc6IGFueTtcbiAgICByZWNpZXZlRGF0YTphbnkgPSB7fTtcbiAgICB0bXBEYXRhOmFueTtcbiAgICBzdWJtaXR0ZWRSZWNpZXZlID0gZmFsc2U7XG4gICAgcmVjaWV2ZUZvcm06IEZvcm1Hcm91cDtcbiAgICAvLyBkb3dubG9hZFRva2VuOmFueTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBDb25maWdTZXJ2aWNlOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlcXVlc3Q6IFJlcXVlc3QsXG4gICAgICAgIHB1YmxpYyBjb21tb246IENvbW1vbixcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgYjJiOkIyYlNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBhcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBpZih0aGlzLm1vZGUgPT09IFwiRURJVFwiKXtcbiAgICAgICAgLy8gc2V0VGltZW91dChhc3luYyAoKT0+e1xuICAgICAgICAvLyAgICAgdGhpcy5kb3dubG9hZFRva2VuID0gYXdhaXQgdGhpcy5iMmIuZ2V0QXR0YWNobWVudFRva2VuKCk7XG4gICAgICAgIC8vIH0sNTAwKVxuICAgICAgICB0aGlzLmdldFNlbnRMaXN0KCk7XG4gICAgICAgIHRoaXMucmVjaWV2ZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGJvb2tfbm86IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIHJlY3ZfZGF0ZTogIG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgZnIoKSB7IHJldHVybiB0aGlzLnJlY2lldmVGb3JtLmNvbnRyb2xzOyB9XG5cbiAgICBhc3luYyBnZXRTZW50TGlzdCgpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2dldFNlbnRMaXN0Jyx0aGlzLnNlbnRMaXN0KTtcbiAgICAgICAgbGV0IHNlbnREYXRhID0gdGhpcy5vcHRpb24uZGF0YTtcbiAgICAgICAgbGV0IGZpbHRlciA9IHtcbiAgICAgICAgICAgIGZpbHRlciA6IHtcbiAgICAgICAgICAgICAgICByZWZfdGFibGUgOiBzZW50RGF0YS5yZWZfdGFibGUsXG4gICAgICAgICAgICAgICAgcmVmX2lkIDogc2VudERhdGEucmVmX2lkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JkZXJfYnk6W1wiaXNfaW1wb3J0YW50XCIsXCJzZW5kX2Jvb2tfbm9cIixcImNyZWF0ZWRfYXRcIl1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5yZXF1ZXN0LnBvc3QoJy9zZWFyY2gvdl9jdF9zdGVwX3NlbnQnLGZpbHRlcik7XG4gICAgICAgIHRoaXMuc2VudExpc3QgPSBkYXRhLnJlc3VsdERhdGE7XG4gICAgICAgIGNvbnNvbGUubG9nKCdnZXRTZW50TGlzdCcsdGhpcy5zZW50TGlzdCk7XG4gICAgfVxuXG4gICAgZ2V0Um93SW5kZXgoZGF0YSkge1xuICAgICAgICBpZiAoIWRhdGEuZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmR4RGF0YUdyaWRTZW50TGlzdC5pbnN0YW5jZS5vcHRpb24oJ3BhZ2luZy5wYWdlSW5kZXgnKSB8fCAwO1xuICAgICAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuZHhEYXRhR3JpZFNlbnRMaXN0Lmluc3RhbmNlLm9wdGlvbigncGFnaW5nLnBhZ2VTaXplJyk7XG4gICAgICAgIGNvbnN0IG5vID0gZGF0YS5yb3cuZGF0YUluZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuIHBhZ2UgKiBwYWdlU2l6ZSArIG5vO1xuICAgIH1cblxuICAgIGVkaXRSZWNpZXZlKGRhdGEpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2RhdGEnLGRhdGEpO1xuICAgICAgICB0aGlzLnRtcERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLnJlY2lldmVNb2RhbC5zaG93KCk7XG4gICAgfVxuXG4gICAgY2xvc2VSZWNpZXZlTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc3VibWl0dGVkUmVjaWV2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlY2lldmVEYXRhID0ge307XG4gICAgICAgIHRoaXMudG1wRGF0YSA9IHt9O1xuICAgICAgICB0aGlzLnJlY2lldmVNb2RhbC5oaWRlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25TdWJtaXRSZWNpZXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZFJlY2lldmUgPSB0cnVlO1xuXG4gICAgICAgIC8vIOC4luC5ieC4siBmb3JtIOC5hOC4oeC5iOC4hOC4o+C4muC4q+C4o+C4t+C4reC4nOC4tOC4lOC4leC4suC4oeC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4l+C4teC5iOC4leC4seC5ieC4h+C5hOC4p+C5ieC4iOC4sOC4iOC4muC4l+C4teC5iOC4leC4o+C4h+C4meC4teC5iVxuICAgICAgICBpZiAodGhpcy5yZWNpZXZlRm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coJ3RtcERhdGEnLHRoaXMudG1wRGF0YSk7XG4gICAgICAgIHRoaXMucmVjaWV2ZURhdGEubmFtZSA9IHRoaXMudG1wRGF0YS5uYW1lO1xuICAgICAgICBpZih0aGlzLnRtcERhdGEuY3RfbWFpbl9pZCkgdGhpcy5yZWNpZXZlRGF0YS5jdF9tYWluX2lkID0gdGhpcy50bXBEYXRhLmN0X21haW5faWQ7XG4gICAgICAgIGlmKHRoaXMudG1wRGF0YS5jdF9zZW5kX2lkKSB0aGlzLnJlY2lldmVEYXRhLmN0X3NlbmRfaWQgPSB0aGlzLnRtcERhdGEuY3Rfc2VuZF9pZDtcbiAgICAgICAgaWYodGhpcy50bXBEYXRhLmN0X3N0ZXBfZGF0YV9pZCkgdGhpcy5yZWNpZXZlRGF0YS5jdF9zdGVwX2RhdGFfaWQgPSB0aGlzLnRtcERhdGEuY3Rfc3RlcF9kYXRhX2lkO1xuICAgICAgICBjb25zb2xlLmxvZygncmVjaWV2ZURhdGEnLHRoaXMucmVjaWV2ZURhdGEpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlcXVlc3QucG9zdChcIi9kYi9jdF9yZWNpZXZlXCIsdGhpcy5yZWNpZXZlRGF0YSk7XG4gICAgICAgIHRoaXMuZ2V0U2VudExpc3QoKTtcbiAgICAgICAgdGhpcy5jbG9zZVJlY2lldmVNb2RhbCgpO1xuICAgIH1cbiAgICBpc0ltcG9ydGFudChkYXRhKXtcbiAgICAgICAgcmV0dXJuIGRhdGEuaXNfaW1wb3J0YW50P1wi4Liq4Liz4LiE4Lix4LiNXCI6XCJcIjtcbiAgICB9XG5cbiAgICBvbkNlbGxQcmVwYXJlZChlKSB7XG4gICAgICAgIGlmIChlLnJvd1R5cGUgPT09ICdkYXRhJykge1xuICAgICAgICAgICAgZS5jZWxsRWxlbWVudC5hY2Nlc3NLZXkgPSBlLmNvbHVtbi5jYXB0aW9uO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19