@barcoding/widget-piecework-in 4.67.0 → 4.67.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -147,7 +147,6 @@ export class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
147
147
|
if (mode && isMode(mode)) {
|
|
148
148
|
const isAdminMode = currentUser.groups.find(value => value.module_group_id === mode.admin_group_id);
|
|
149
149
|
const isModeratorMode = currentUser.groups.find(value => value.module_group_id === mode.moderator_group_id);
|
|
150
|
-
console.log(isAdminMode, isModeratorMode);
|
|
151
150
|
if (isModeratorMode || isAdminMode) {
|
|
152
151
|
this.isAdmin = true;
|
|
153
152
|
}
|
|
@@ -156,7 +155,6 @@ export class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
156
155
|
if (currentUserConfig) {
|
|
157
156
|
this.isAdmin = false;
|
|
158
157
|
}
|
|
159
|
-
console.log(`isAdmin: ${this.isAdmin}`);
|
|
160
158
|
if (!this.isAdmin) {
|
|
161
159
|
const currentUser = this.store.selectSnapshot(AuthState.user);
|
|
162
160
|
this.users.push(currentUser);
|
|
@@ -250,7 +248,6 @@ export class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
250
248
|
return row.out - row.in;
|
|
251
249
|
}
|
|
252
250
|
registerIn(row, qty_in, finish) {
|
|
253
|
-
console.log(row, qty_in);
|
|
254
251
|
this.pieceWorkLineApi
|
|
255
252
|
.find({
|
|
256
253
|
filter: JSON.stringify({
|
|
@@ -282,10 +279,8 @@ export class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
282
279
|
.split('\n')
|
|
283
280
|
.filter(value => value != null && value.length > 0)
|
|
284
281
|
.map(value => value.trim());
|
|
285
|
-
console.log(this.barcodes);
|
|
286
282
|
}
|
|
287
283
|
valueChange(field, event) {
|
|
288
|
-
console.log(`valueChange: ${field}, ${event}`);
|
|
289
284
|
if (!this.filters.filters) {
|
|
290
285
|
this.filters.filters = [];
|
|
291
286
|
}
|
|
@@ -404,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
404
399
|
type: Pipe,
|
|
405
400
|
args: [{ name: 'formatTime' }]
|
|
406
401
|
}] });
|
|
407
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBpZWNld29yay1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dpZGdldC1waWVjZXdvcmstaW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2xpYi93aWRnZXQtcGllY2V3b3JrLWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULElBQUksR0FFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx3QkFBd0IsR0FHekIsTUFBTSwwQkFBMEIsQ0FBQztBQWtCbEMsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDcEYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sU0FBUyxFQUNULGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCbkUsTUFBTSxPQUFPLDBCQUNYLFNBQVEsd0JBQXdCO0lBMEVoQyxZQUNTLE9BQThCLEVBQzdCLE9BQThCLEVBQy9CLEtBQVksRUFDWCxHQUFzQixFQUN2QixNQUFpQixFQUNoQixXQUEyRCxFQUMzRCxnQkFBZ0Q7UUFFeEQsS0FBSyxD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LElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM1QixDQUFDLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQzNELENBQUM7K0dBZFUsVUFBVTs2R0FBVixVQUFVOzs0RkFBVixVQUFVO2tCQUR0QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQge1xuICBDb25maWdJbnRlcmZhY2VEYXNoYm9hcmQsXG4gIFdpZGdldEludGVyZmFjZSxcbiAgV2lkZ2V0UGFyYW1zLFxufSBmcm9tICdAYmFyY29kaW5nL2dyaWRzdGVyLWNvcmUnO1xuaW1wb3J0IHtcbiAgTW9kZUFjY2Vzc1ZpZXdXaXRoUmVsYXRpb25zLFxuICBNb2RlQ29udHJvbGxlclNlcnZpY2UsXG4gIE1vZGVXaXRoUmVsYXRpb25zLFxuICBNb2R1bGVXaXRoUmVsYXRpb25zLFxuICBQaWVjZVdvcmtMaW5lQ29udHJvbGxlclNlcnZpY2UsXG4gIFBpZWNlV29ya0xpbmVTdGF0dXNDb250cm9sbGVyQ29udHJvbGxlclNlcnZpY2UsXG4gIFBpZWNlV29ya0xpbmVTdGF0dXNXaXRoUmVsYXRpb25zLFxuICBQaWVjZVdvcmtMaW5lV2l0aFJlbGF0aW9ucyxcbiAgUGllY2V3b3JrVHJhbnNhY3Rpb25TdGF0dXNDb250cm9sbGVyU2VydmljZSxcbiAgUGllY2V3b3JrVHJhbnNhY3Rpb25TdGF0dXNXaXRoUmVsYXRpb25zLFxuICBQaWVjZVdvcmtXaXRoUmVsYXRpb25zLFxuICBVc2VyQ29udHJvbGxlclNlcnZpY2UsXG4gIFVzZXJXaXRoUmVsYXRpb25zLFxuICBXaWRnZXRDb25maWdXaXRoUmVsYXRpb25zLFxufSBmcm9tICdAYmFyY29kaW5nL3Nkayc7XG5pbXBvcnQgeyBQaWVjZVdvcmtGcm9udFN0YXRlIH0gZnJvbSAnQGJhcmNvZGluZy9tb2R1bGUtcGllY2V3b3JrJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUmVzZXRTdG9yZVBpZWNlV29yayxcbiAgRmluZFBpZWNlV29ya0VtcGxveWVlLFxufSBmcm9tICdAYmFyY29kaW5nL21vZHVsZS1waWVjZXdvcmsnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEF1dGhTdGF0ZSB9IGZyb20gJ0BiYXJjb2RpbmcvYXV0aC1jb3JlJztcbmltcG9ydCB7IFBpZWNlV29ya0luRm9ybSB9IGZyb20gJy4vcGllY2Utd29yay1pbi1mb3JtL3BpZWNlLXdvcmstaW4tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlU3RhdGVQaWVjZVdvcmssXG4gIGlzTW9kZSxcbiAgTW9kZVN0YXRlLFxuICBQaWVjZVdvcmtTdGF0ZSxcbiAgUGllY2VXb3JrQ29sbGVjdCxcbn0gZnJvbSAnQGJhcmNvZGluZy9mcm9udGVuZC1jb3JlJztcbmltcG9ydCB7IE1vZHVsZVN0YXRlIH0gZnJvbSAnQGJhcmNvZGluZy9jb3JlJztcbmltcG9ydCB7IFBpZWNld29ya0luQ29uZmlnTW9kYWwgfSBmcm9tICcuL2NvbmZpZy9jb25maWcuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3IsXG4gIEZpbHRlckRlc2NyaXB0b3IsXG59IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1kYXRhLXF1ZXJ5JztcbmltcG9ydCB7IERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItZ3JpZCc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBpZWNlV29ya0luRmlsdGVycyB7XG4gIHB3X2lkPzogbnVtYmVyO1xuICBkb2N1bWVudD86IHN0cmluZztcbiAgdXNlcj86IFVzZXJXaXRoUmVsYXRpb25zO1xuICBtb2RlPzogTW9kZVdpdGhSZWxhdGlvbnM7XG4gIHN0YXR1cz86IFBpZWNlV29ya0xpbmVTdGF0dXNXaXRoUmVsYXRpb25zO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3aWRnZXQtcGllY2Utd29yay1pbicsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1waWVjZXdvcmstaW4uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1waWVjZXdvcmstaW4uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRQaWVjZXdvcmtJbkNvbXBvbmVudFxuICBleHRlbmRzIENvbmZpZ0ludGVyZmFjZURhc2hib2FyZFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBXaWRnZXRJbnRlcmZhY2VcbntcbiAgcHVibGljIGNvbmZpZ0NoYW5nZWQkOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHB1YmxpYyBteUNvbmZpZ1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgaXNBZG1pbiA9IGZhbHNlO1xuICBwdWJsaWMgaXRlbTogV2lkZ2V0Q29uZmlnV2l0aFJlbGF0aW9ucztcbiAgcHVibGljIHBhcmFtczogV2lkZ2V0UGFyYW1zO1xuICBwdWJsaWMgZmlsdGVyczogYW55ID0ge1xuICAgIGxvZ2ljOiAnYW5kJyxcbiAgICBmaWx0ZXJzOiBbXG4gICAgICB7XG4gICAgICAgIGZpZWxkOiAncGllY2V3b3JrX2xpbmVfc3RhdHVzX2lkJyxcbiAgICAgICAgdmFsdWU6IDEsXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIGRpc3BsYXllZENvbHVtbnNPcmcgPSBbXG4gICAgJ3B3X2xpbmUnLFxuICAgICdlbXBsb3llZScsXG4gICAgJ2RvY3VtZW50JyxcbiAgICAnYXNzZW1ibHknLFxuICAgICdtb2RlJyxcbiAgICAndW5pdF9wcmljZScsXG4gICAgJ3BlcmNlbnRhZ2UnLFxuICAgICdxdHknLFxuICAgICdpbicsXG4gICAgJ2ZpbmlzaCcsXG4gICAgJ3RvdGFsJyxcbiAgICAnc3RhdHVzJyxcbiAgXTtcbiAgZGlzcGxheWVkQ29sdW1ucyA9IFtcbiAgICAncHdfbGluZScsXG4gICAgJ2VtcGxveWVlJyxcbiAgICAnZG9jdW1lbnQnLFxuICAgICdhc3NlbWJseScsXG4gICAgJ21vZGUnLFxuICAgICd1bml0X3ByaWNlJyxcbiAgICAncGVyY2VudGFnZScsXG4gICAgJ3F0eScsXG4gICAgJ2luJyxcbiAgICAnZmluaXNoJyxcbiAgICAndG90YWwnLFxuICAgICdzdGF0dXMnLFxuICBdOyAvLyBjb2x1bW4gZGlzcGxheSB2YWx1ZVxuICBkaXNwbGF5ZWRDb2x1bW5zU2ltcGxlID0gW1xuICAgICdlbXBsb3llZScsXG4gICAgJ2RvY3VtZW50JyxcbiAgICAnYXNzZW1ibHknLFxuICAgICdmaW5pc2gnLFxuICAgICd0b3RhbCcsXG4gIF07IC8vIGNvbHVtbiBkaXNwbGF5IHZhbHVlXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+O1xuICBAU2VsZWN0KFBpZWNlV29ya1N0YXRlLnBpZWNld29ya3MpIHBpZWNld29ya3MkOiBPYnNlcnZhYmxlPFxuICAgIFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zW11cbiAgPjtcbiAgQFNlbGVjdChQaWVjZVdvcmtTdGF0ZS50b3RhbCkgdG90YWwkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgcHVibGljIHBpZWNld29ya1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZW1wbG95ZWUgPSBudWxsO1xuICBwdWJsaWMgc3RhdHVzID0gMTtcbiAgcHVibGljIG9iamVjdDtcbiAgcHVibGljIGJhcmNvZGVzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHB1YmxpYyB1c2VyczogVXNlcldpdGhSZWxhdGlvbnNbXSA9IFtdO1xuICBwdWJsaWMgb2JqZWN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBzdGF0dXNlczogUGllY2VXb3JrTGluZVN0YXR1c1dpdGhSZWxhdGlvbnNbXSA9IFtdO1xuICBwdWJsaWMgY3VycmVudFVzZXJDb25maWc7XG4gIHB1YmxpYyBzdGF0ZTogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgc3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgQFNlbGVjdChQaWVjZVdvcmtTdGF0ZS5zdGF0ZSkgc3RhdGUkOiBPYnNlcnZhYmxlPERhdGFTdGF0ZUNoYW5nZUV2ZW50PjtcbiAgcHVibGljIG1vZGVzOiBNb2RlV2l0aFJlbGF0aW9uc1tdID0gW107XG4gIHB1YmxpYyBkZWZhdWx0SXRlbU1vZGU6IGFueSA9IHsgaWQ6IG51bGwsIGNvbnRyb2xsZXI6ICdTaG93IGFsbC4uLicgfTtcbiAgcHVibGljIGRlZmF1bHRJdGVtU3RhdHVzOiBhbnkgPSB7IGlkOiBudWxsLCBuYW1lOiAnU2hvdyBhbGwuLi4nIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1vZGVBcGk6IE1vZGVDb250cm9sbGVyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJBcGk6IFVzZXJDb250cm9sbGVyU2VydmljZSxcbiAgICBwdWJsaWMgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBzdGF0dXNlc0FwaTogUGllY2VXb3JrTGluZVN0YXR1c0NvbnRyb2xsZXJDb250cm9sbGVyU2VydmljZSxcbiAgICBwcml2YXRlIHBpZWNlV29ya0xpbmVBcGk6IFBpZWNlV29ya0xpbmVDb250cm9sbGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcihkaWFsb2csIFBpZWNld29ya0luQ29uZmlnTW9kYWwsIHN0b3JlLCAnNjAlJyk7XG4gIH1cblxuICBnZXRWYWx1ZShmaWVsZDogc3RyaW5nLCBpc011bHRpTGluZSA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLmZpbHRlcnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5maWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBkYXRhOiBhbnkgPSB0aGlzLmZpbHRlcnMuZmlsdGVycy5maW5kKFxuICAgICAgKHZhbHVlOiBGaWx0ZXJEZXNjcmlwdG9yKSA9PiB2YWx1ZS5maWVsZCA9PT0gZmllbGRcbiAgICApO1xuXG4gICAgaWYgKGlzTXVsdGlMaW5lKSB7XG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLnZhbHVlICYmIGRhdGEudmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBkYXRhLnZhbHVlLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhID8gZGF0YS52YWx1ZSA6ICcnO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubW9kZUFwaVxuICAgICAgLmZpbmQoeyBmaWx0ZXI6IEpTT04uc3RyaW5naWZ5KHsgd2hlcmU6IHsgaXNfcGllY2V3b3JrOiB0cnVlIH0gfSkgfSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMubW9kZXMgPSBfO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnN0YXR1c2VzQXBpLmZpbmQoKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICB0aGlzLnN0YXR1c2VzID0gXztcbiAgICB9KTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8VXNlcldpdGhSZWxhdGlvbnM+KFxuICAgICAgQXV0aFN0YXRlLnVzZXJcbiAgICApO1xuICAgIC8vIGV4YW1wbGUgb2YgZGVmYXVsdCBmaWx0ZXIgb24gc3RhcnRcbiAgICAvLyB0aGlzLmZpbHRlcnMuZmlsdGVycy5wdXNoKHtcbiAgICAvLyAgIG9wZXJhdG9yOiAnZXEnLFxuICAgIC8vICAgZmllbGQ6ICdwaWVjZXdvcmtfaWQnLFxuICAgIC8vICAgdmFsdWU6IDIwMCxcbiAgICAvLyB9KTtcbiAgICAvLyB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgIC8vICAgbmV3IENoYW5nZVN0YXRlUGllY2VXb3JrKHtcbiAgICAvLyAgICAgc2tpcDogMCxcbiAgICAvLyAgICAgc29ydDogW3sgZmllbGQ6ICdpZCcsIGRpcjogJ2Rlc2MnIH1dLFxuICAgIC8vICAgICB0YWtlOiAxMCxcbiAgICAvLyAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcnMsXG4gICAgLy8gICB9KVxuICAgIC8vICk7XG4gICAgdGhpcy5zdGF0ZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3RhdGUkLnN1YnNjcmliZShfID0+IHtcbiAgICAgIGlmIChfLmZpbHRlcikge1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSBfLmZpbHRlcjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1vZGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90PE1vZGVBY2Nlc3NWaWV3V2l0aFJlbGF0aW9ucyB8IHt9PihcbiAgICAgIE1vZGVTdGF0ZS5tb2RlXG4gICAgKTtcblxuICAgIGNvbnN0IGN1cnJlbnRNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90PE1vZHVsZVdpdGhSZWxhdGlvbnM+KFxuICAgICAgTW9kdWxlU3RhdGUubW9kdWxlXG4gICAgKTtcblxuICAgIGlmIChjdXJyZW50TW9kdWxlKSB7XG4gICAgICBjb25zdCBpc0FkbWluID0gY3VycmVudFVzZXIuZ3JvdXBzLmZpbmQoXG4gICAgICAgIHZhbHVlID0+IHZhbHVlLm1vZHVsZV9ncm91cF9pZCA9PT0gY3VycmVudE1vZHVsZS5hZG1pbl9ncm91cF9pZFxuICAgICAgKTtcbiAgICAgIGlmIChpc0FkbWluKSB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZGUgJiYgaXNNb2RlKG1vZGUpKSB7XG4gICAgICBjb25zdCBpc0FkbWluTW9kZSA9IGN1cnJlbnRVc2VyLmdyb3Vwcy5maW5kKFxuICAgICAgICB2YWx1ZSA9PiB2YWx1ZS5tb2R1bGVfZ3JvdXBfaWQgPT09IG1vZGUuYWRtaW5fZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCBpc01vZGVyYXRvck1vZGUgPSBjdXJyZW50VXNlci5ncm91cHMuZmluZChcbiAgICAgICAgdmFsdWUgPT4gdmFsdWUubW9kdWxlX2dyb3VwX2lkID09PSBtb2RlLm1vZGVyYXRvcl9ncm91cF9pZFxuICAgICAgKTtcbiAgICAgIGNvbnNvbGUubG9nKGlzQWRtaW5Nb2RlLCBpc01vZGVyYXRvck1vZGUpO1xuICAgICAgaWYgKGlzTW9kZXJhdG9yTW9kZSB8fCBpc0FkbWluTW9kZSkge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRVc2VyQ29uZmlnID1cbiAgICAgIHRoaXMuaXRlbS5jb25maWcgJiYgdGhpcy5pdGVtLmNvbmZpZy5jdXJyZW50X3VzZXIgPyB0cnVlIDogZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRVc2VyQ29uZmlnKSB7XG4gICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgaXNBZG1pbjogJHt0aGlzLmlzQWRtaW59YCk7XG5cbiAgICBpZiAoIXRoaXMuaXNBZG1pbikge1xuICAgICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90PFVzZXJXaXRoUmVsYXRpb25zPihcbiAgICAgICAgQXV0aFN0YXRlLnVzZXJcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXNlcnMucHVzaChjdXJyZW50VXNlcik7XG4gICAgICBsZXQgZmlsdGVyczogYW55ID0ge307XG5cbiAgICAgIGlmICh0aGlzLml0ZW0uY29uZmlnLnNpbXBsZV92ZXJzaW9uKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1uc1NpbXBsZS5zbGljZSgpO1xuICAgICAgICBmaWx0ZXJzID0ge1xuICAgICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiAndXNlcl9pZCcsXG4gICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50VXNlci5pZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiAncGllY2V3b3JrX2xpbmVfc3RhdHVzX2lkJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJzID0ge1xuICAgICAgICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiAncGllY2V3b3JrX2xpbmVfc3RhdHVzX2lkJyxcbiAgICAgICAgICAgICAgdmFsdWU6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBmaWVsZDogJ3VzZXJfaWQnLFxuICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFVzZXIuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgc29ydDogW3sgZmllbGQ6ICdpZCcsIGRpcjogJ2Rlc2MnIH1dLFxuICAgICAgICAgIHRha2U6IDIwLFxuICAgICAgICAgIGZpbHRlcjogZmlsdGVycyxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNBZG1pbikge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gW1xuICAgICAgICAncHdfbGluZScsXG4gICAgICAgICdlbXBsb3llZScsXG4gICAgICAgICdkb2N1bWVudCcsXG4gICAgICAgICdtb2RlJyxcbiAgICAgICAgJ3BlcmNlbnRhZ2UnLFxuICAgICAgICAncXR5JyxcbiAgICAgICAgJ2ZpbmlzaCcsXG4gICAgICAgICd0b3RhbCcsXG4gICAgICAgICdzdGF0dXMnLFxuICAgICAgICAnYWN0aW9ucycsXG4gICAgICBdOyAvLyBjb2x1bW4gZGlzcGxheSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4YW1wbGUgc2V0IGZpbHRlciBvdXRzaWRlXG4gICAgICovXG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICBjb25zdCBmaWx0ZXJzOiBDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yID0ge1xuICAgIC8vICAgICBsb2dpYzogJ2FuZCcsXG4gICAgLy8gICAgIGZpbHRlcnM6IFtcbiAgICAvLyAgICAgICB7XG4gICAgLy8gICAgICAgICBvcGVyYXRvcjogJ2VxJyxcbiAgICAvLyAgICAgICAgIGZpZWxkOiAncGllY2V3b3JrX2lkJyxcbiAgICAvLyAgICAgICAgIHZhbHVlOiAyMDIsXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgXSxcbiAgICAvLyAgIH07XG4gICAgLy8gICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgIC8vICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgIC8vICAgICAgIHNraXA6IDAsXG4gICAgLy8gICAgICAgc29ydDogW3sgZmllbGQ6ICdpZCcsIGRpcjogJ2Rlc2MnIH1dLFxuICAgIC8vICAgICAgIHRha2U6IDEwLFxuICAgIC8vICAgICAgIGZpbHRlcjogZmlsdGVycyxcbiAgICAvLyAgICAgfSlcbiAgICAvLyAgICk7XG4gICAgLy8gfSwgODAwMCk7XG5cbiAgICB0aGlzLnBpZWNld29ya1N1YnNjcmlwdGlvbiA9IHRoaXMucGllY2V3b3JrcyQuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IF8ubWFwKHZhbHVlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBmb3JtSW46IHZhbHVlLm91dCAtIHZhbHVlLmluLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4KHJvdzogUGllY2VXb3JrTGluZVdpdGhSZWxhdGlvbnMpIHtcbiAgICByZXR1cm4gcm93Lm91dCAtIHJvdy5pbjtcbiAgfVxuXG4gIHJlZ2lzdGVySW4ocm93OiBQaWVjZVdvcmtMaW5lV2l0aFJlbGF0aW9ucywgcXR5X2luOiBudW1iZXIsIGZpbmlzaCkge1xuICAgIGNvbnNvbGUubG9nKHJvdywgcXR5X2luKTtcbiAgICB0aGlzLnBpZWNlV29ya0xpbmVBcGlcbiAgICAgIC5maW5kKHtcbiAgICAgICAgZmlsdGVyOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgd2hlcmU6IHsgcGllY2V3b3JrX2lkOiByb3cucGllY2V3b3JrX2lkIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUobGluZXMgPT4ge1xuICAgICAgICBsZXQgaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCB0b3RhbExpbmVzID0gbGluZXMubGVuZ3RoO1xuICAgICAgICBsZXQgdG90YWxGaW5pc2hlZExpbmVzID0gMDtcblxuICAgICAgICBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgICAgIGlmIChsaW5lLnBpZWNld29ya19saW5lX3N0YXR1c19pZCA9PT0gMikge1xuICAgICAgICAgICAgdG90YWxGaW5pc2hlZExpbmVzKys7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHF0eV9pbiA9PT0gcm93Lm91dCkge1xuICAgICAgICAgIHRvdGFsRmluaXNoZWRMaW5lcysrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b3RhbEZpbmlzaGVkTGluZXMgPT09IHRvdGFsTGluZXMpIHtcbiAgICAgICAgICBpc0ZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVzZXJfaWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90PFVzZXJXaXRoUmVsYXRpb25zPihcbiAgICAgICAgICBBdXRoU3RhdGUudXNlclxuICAgICAgICApLmlkO1xuICAgICAgICBjb25zdCBmaW5pc2hPYmplY3QgPSBmaW5pc2ggPyBxdHlfaW4gOiAwO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBQaWVjZVdvcmtDb2xsZWN0KFxuICAgICAgICAgICAgcm93LnBpZWNld29ya19pZCxcbiAgICAgICAgICAgIHF0eV9pbixcbiAgICAgICAgICAgIHJvdy5pZCxcbiAgICAgICAgICAgIHVzZXJfaWQsXG4gICAgICAgICAgICBmaW5pc2hPYmplY3QsXG4gICAgICAgICAgICBpc0ZpbmlzaGVkXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH1cblxuICBidWlsZEJhcmNvZGVMaXN0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhcmNvZGVzID0gdmFsdWVcbiAgICAgIC5zcGxpdCgnXFxuJylcbiAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5sZW5ndGggPiAwKVxuICAgICAgLm1hcCh2YWx1ZSA9PiB2YWx1ZS50cmltKCkpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYmFyY29kZXMpO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2UoZmllbGQsIGV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coYHZhbHVlQ2hhbmdlOiAke2ZpZWxkfSwgJHtldmVudH1gKTtcblxuICAgIGlmICghdGhpcy5maWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5maWx0ZXJzID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyRXhpc3RzID0gdGhpcy5maWx0ZXJzLmZpbHRlcnMuZmluZEluZGV4KFxuICAgICAgKHZhbHVlOiBGaWx0ZXJEZXNjcmlwdG9yKSA9PiB2YWx1ZS5maWVsZCA9PT0gZmllbGRcbiAgICApO1xuXG4gICAgaWYgKGZpbHRlckV4aXN0cyA+PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcnMuZmlsdGVyc1tmaWx0ZXJFeGlzdHNdLnZhbHVlID0gZXZlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVycy5maWx0ZXJzLnB1c2goe1xuICAgICAgICBvcGVyYXRvcjogJ2VxJyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHZhbHVlOiBldmVudCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgICAgICBza2lwOiAwLFxuICAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICAgIHRha2U6IDEwLFxuICAgICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVycyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGZpbHRlckNoYW5nZShldmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy51c2VyQXBpXG4gICAgICAgIC5maW5kKHtcbiAgICAgICAgICBmaWx0ZXI6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGxpbWl0OiA1LFxuICAgICAgICAgICAgd2hlcmU6IHsgZnVsbF9uYW1lOiB7IGxpa2U6IGAlJHtldmVudH0lYCB9IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgdGhpcy51c2VycyA9IF87XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnBpZWNld29ya1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWVjZXdvcmtTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubXlDb25maWdTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubXlDb25maWdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub2JqZWN0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9iamVjdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlc2V0U3RvcmVQaWVjZVdvcmsoKSk7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgb3BlbkluRm9ybShyb3c6IFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihQaWVjZVdvcmtJbkZvcm0sIHtcbiAgICAgIHdpZHRoOiAnNDAlJyxcbiAgICAgIGRhdGE6IHsgbGluZTogcm93IH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY29uc3QgdXNlcl9pZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8VXNlcldpdGhSZWxhdGlvbnM+KFxuICAgICAgICAgIEF1dGhTdGF0ZS51c2VyXG4gICAgICAgICkuaWQ7XG4gICAgICAgIGNvbnN0IGZpbmlzaCA9IGRhdGEuZmluaXNoID8gZGF0YS5xdHlfaW4gOiAwO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBQaWVjZVdvcmtDb2xsZWN0KFxuICAgICAgICAgICAgcm93LnBpZWNld29ya19pZCxcbiAgICAgICAgICAgIGRhdGEucXR5X2luLFxuICAgICAgICAgICAgcm93LmlkLFxuICAgICAgICAgICAgdXNlcl9pZCxcbiAgICAgICAgICAgIGZpbmlzaCxcbiAgICAgICAgICAgIGRhdGEuaXNGaW5pc2hlZFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ6IFBhZ2VFdmVudCkge1xuICAgIGNvbnN0IHRha2UgPSBldmVudC5wYWdlU2l6ZTtcbiAgICBjb25zdCBza2lwID0gZXZlbnQucGFnZUluZGV4ID4gMCA/IGV2ZW50LnBhZ2VJbmRleCAqIGV2ZW50LnBhZ2VTaXplIDogMDtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgICAgICBza2lwLFxuICAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICAgIHRha2UsXG4gICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXJzLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0Q3VycmVuY3kodmFsdWUsIGN1cnJlbmN5KSB7XG4gICAgY29uc3QgcmVnaW9uID0gY3VycmVuY3kucmVnaW9uO1xuICAgIGNvbnN0IHN5bWJvbCA9IGN1cnJlbmN5LnN5bWJvbDtcblxuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyB2YWx1ZS50b0xvY2FsZVN0cmluZyhyZWdpb24sIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiBzeW1ib2wgfSlcbiAgICAgIDogMDtcbiAgfVxufVxuQFBpcGUoeyBuYW1lOiAnZm9ybWF0VGltZScgfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRUaW1lIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnZlcnRUaW1lKGlucHV0LCBzZXBhcmF0b3IpIHtcbiAgICBjb25zdCBwYWQgPSBpbnB1dCA9PiB7XG4gICAgICByZXR1cm4gaW5wdXQgPCAxMCA/ICcwJyArIGlucHV0IDogaW5wdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gW1xuICAgICAgcGFkKE1hdGguZmxvb3IoaW5wdXQgLyAzNjAwKSksXG4gICAgICBwYWQoTWF0aC5mbG9vcigoaW5wdXQgJSAzNjAwKSAvIDYwKSksXG4gICAgICBwYWQoTWF0aC5mbG9vcihpbnB1dCAlIDYwKSksXG4gICAgXS5qb2luKHR5cGVvZiBzZXBhcmF0b3IgIT09ICd1bmRlZmluZWQnID8gc2VwYXJhdG9yIDogJzonKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmNvbnZlcnRUaW1lKHZhbHVlLCAnOicpIDogJzAwOjAwOjAwJztcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMjBweFwiPlxuICA8bGFiZWwgKm5nSWY9XCIhaXRlbS5jb25maWc/LnNpbXBsZV92ZXJzaW9uXCIgZnhGbGV4IGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJrLWZvcm1cIiBpZD1cInBpZWNld29ya19pbl9mb3JtXCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI4cHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgIDxsYWJlbCBmeEZsZXggY2xhc3M9XCJrLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICA8c3Bhbj5CYXJjb2RlPC9zcGFuPlxuICAgICAgICAgIDxrZW5kby10ZXh0YXJlYVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTY2FuIGJhcmNvZGVzIGhlcmVcIlxuICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCIndmVydGljYWwnXCJcbiAgICAgICAgICAgIFtyb3dzXT1cIjNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlKCdiYXJjb2RlcycsIHRydWUpXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJidWlsZEJhcmNvZGVMaXN0KCRldmVudClcIlxuICAgICAgICAgICAgZmxvdz1cInZlcnRpY2FsXCI+XG4gICAgICAgICAgPC9rZW5kby10ZXh0YXJlYT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGZ4RmxleD1cIjUwcHhcIlxuICAgICAgICAgIChjbGljayk9XCJ2YWx1ZUNoYW5nZSgnYmFyY29kZXMnLCBiYXJjb2RlcylcIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJGaWx0ZXJcIlxuICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiRXhhbXBsZSBpY29uIGJ1dHRvbiB3aXRoIGEgaGVhcnQgaWNvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjhweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgPGxhYmVsIGZ4RmxleD1cIjI1JVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+UFcgSUQ8L3NwYW4+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgIGtlbmRvVGV4dEJveFxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlKCdwaWVjZXdvcmtfaWQnKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwidmFsdWVDaGFuZ2UoJ3BpZWNld29ya19pZCcsICRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgIG5hbWU9XCJwaWVjZXdvcmtfaWRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gPGxhYmVsIGZ4RmxleD1cIjIwJVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+QmFyY29kZTwvc3Bhbj5cbiAgICAgICAgICA8a2VuZG8tdGV4dGFyZWFcbiAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5Cb3R0b20ucHhdPVwiMTBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFdmVudCBuYW1lXCJcbiAgICAgICAgICAgIHJlc2l6YWJsZT1cImF1dG9cIlxuICAgICAgICAgICAgZmxvdz1cImhvcml6b250YWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2tlbmRvLXRleHRhcmVhPlxuXG4gICAgICAgICAgPCEtLSA8aW5wdXRcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgICAga2VuZG9UZXh0Qm94XG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWUoJ2JhcmNvZGUnKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwidmFsdWVDaGFuZ2UoJ2JhcmNvZGUnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBuYW1lPVwiYmFyY29kZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgLz4gLS0+XG5cbiAgICAgICAgPGxhYmVsIGZ4RmxleD1cIjI1JVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+RW1wbG95ZWU8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWNvbWJvYm94XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgIG5hbWU9XCJ1c2VyX2lkXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZSgndXNlcl9pZCcpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJmaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJ3VzZXJfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInVzZXJzXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ2Z1bGxfbmFtZSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FkbWluXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWNvbWJvYm94PlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbCBmeEZsZXg9XCIyNSVcIiBjbGFzcz1cImstZm9ybS1maWVsZFwiPlxuICAgICAgICAgIDxzcGFuPk1vZGU8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtTW9kZVwiXG4gICAgICAgICAgICBbZGF0YV09XCJtb2Rlc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWUoJ21vZGVfaWQnKVwiXG4gICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJ21vZGVfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ2NvbnRyb2xsZXInXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgbmFtZT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8bGFiZWwgZnhGbGV4PVwiMjUlXCIgY2xhc3M9XCJrLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICA8c3Bhbj5TdGF0dXM8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtU3RhdHVzXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInN0YXR1c2VzXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZSgncGllY2V3b3JrX2xpbmVfc3RhdHVzX2lkJylcIlxuICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCdwaWVjZXdvcmtfbGluZV9zdGF0dXNfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ25hbWUnXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgbmFtZT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9sYWJlbD5cblxuICA8bWF0LXRhYmxlICN0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJwd19saW5lXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlBXPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5waWVjZXdvcms/LmlkIH19L3t7IHJvdy5waWVjZXdvcmtfb3JkZXJfbGluZSB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJlbXBsb3llZVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5FbXBsb3llZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8c3Bhbj57eyByb3c/LnBpZWNld29yaz8ucHJlcGFyZWRfZm9yPy5mdWxsX25hbWUgfX08L3NwYW4+XG4gICAgICA8L21hdC1jZWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+RG9jdW1lbnQ8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPHNwYW4+e3sgcm93LmRvY3VtZW50Py5iYXJjb2RlIH19PC9zcGFuPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImFzc2VtYmx5XCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPkFzc2VtYmx5PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5wYXJ0Py5wYXJ0X251bWJlciB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInF0eV9tYXhcIj5cbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5RdHk8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldE1heFF0eUxlZnRGb3JSb3cocm93KX19PC9zcGFuPlxuICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwibW9kZVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5Nb2RlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5tb2RlPy5jb250cm9sbGVyIH19PC9zcGFuPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInVuaXRfcHJpY2VcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+VW5pdCBQcmljZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShyb3cudW5pdF9wcmljZSwgcm93LmN1cnJlbmN5KSB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInBlcmNlbnRhZ2VcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+Sm9iICU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAge3sgcm93LndvcmtfcGVyY2VudGFnZSB8IHBlcmNlbnQgfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInF0eVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5PdXQgLyBJbjwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyByb3cub3V0IH19IC8ge3sgIXJvdy5pbiA/IDAgOiByb3cuaW4gfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImluXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlF0eSBJbjwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyAhcm93LmluID8gMCA6IHJvdy5pbiB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZmluaXNoXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlF0eSBGaW5pc2g8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAge3sgcm93LmZpbmlzaCB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwic3RhdHVzXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlN0YXR1czwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyByb3cubGluZV9zdGF0dXM/Lm5hbWUgfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInRvdGFsXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlRvdGFsPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdEN1cnJlbmN5KHJvdy52YWx1ZSwgcm93LmN1cnJlbmN5KSB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgW25nQ2xhc3NdPVwiJ3BpZWNld29ya0FjdGlvbkNvbHVtbidcIiAqY2RrSGVhZGVyQ2VsbERlZlxuICAgICAgICA+QWN0aW9uczwvbWF0LWhlYWRlci1jZWxsXG4gICAgICA+XG4gICAgICA8bWF0LWNlbGwgW25nQ2xhc3NdPVwiJ3BpZWNld29ya0FjdGlvbkNvbHVtbidcIiAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5waWVjZXdvcmtfbGluZV9zdGF0dXNfaWQgPT0gMVwiPlxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjhweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgICAgIDxrZW5kby1udW1lcmljdGV4dGJveFxuICAgICAgICAgICAgICBbZm9ybWF0XT1cIiduMCdcIlxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3cuZm9ybUluXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiJ2luXycgKyByb3cuaWRcIlxuICAgICAgICAgICAgICBbbWF4XT1cImdldE1heChyb3cpXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiPjwva2VuZG8tbnVtZXJpY3RleHRib3g+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJGaW5pc2hcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIlxuICAgICAgICAgICAgICBmeEZsZXhBbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaW5pc2hfJyArIHJvdy5pZFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93LmZvcm1GaW5pc2hcIj5cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93LmluID09IHJvdy5vdXQgfHwgcm93LmZvcm1JbiA+IHJvdy5vdXQgLSByb3cuaW5cIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU2F2ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZWdpc3RlckluKHJvdywgcm93LmZvcm1Jbiwgcm93LmZvcm1GaW5pc2gpXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWJvdmUnXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeGFtcGxlIGljb24gYnV0dG9uIHdpdGggYSBoZWFydCBpY29uXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5waWVjZXdvcmtfbGluZV9zdGF0dXNfaWQgPT0gMlwiPlxuICAgICAgICAgIDxzcGFuPkxpbmUgZmluaXNoZWQ8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtaGVhZGVyLXJvdyAqY2RrSGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgPG1hdC1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gIDwvbWF0LXRhYmxlPlxuICA8bWF0LXBhZ2luYXRvclxuICAgICNwYWdpbmF0b3JcbiAgICBbbGVuZ3RoXT1cInRvdGFsJCB8IGFzeW5jXCJcbiAgICBbcGFnZUluZGV4XT1cIjBcIlxuICAgIChwYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgW3BhZ2VTaXplXT1cIjEwXCJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDEwMF1cIj5cbiAgPC9tYXQtcGFnaW5hdG9yPlxuPC9kaXY+XG4iXX0=
|
|
402
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBpZWNld29yay1pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dpZGdldC1waWVjZXdvcmstaW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL2xpYi93aWRnZXQtcGllY2V3b3JrLWluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULElBQUksR0FFTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFDTCx3QkFBd0IsR0FHekIsTUFBTSwwQkFBMEIsQ0FBQztBQWtCbEMsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDcEYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sU0FBUyxFQUNULGNBQWMsRUFDZCxnQkFBZ0IsR0FDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCbkUsTUFBTSxPQUFPLDBCQUNYLFNBQVEsd0JBQXdCO0lBMEVoQyxZQUNTLE9BQThCLEVBQzdCLE9BQThCLEVBQy9CLEtBQVksRUFDWCxHQUFzQixFQUN2QixNQUFpQixFQUNoQixXQUEyRCxFQUMzRCxnQkFBZ0Q7UUFFeEQsS0FBSyxD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QUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDM0QsQ0FBQzsrR0FkVSxVQUFVOzZHQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgU2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ0ludGVyZmFjZURhc2hib2FyZCxcbiAgV2lkZ2V0SW50ZXJmYWNlLFxuICBXaWRnZXRQYXJhbXMsXG59IGZyb20gJ0BiYXJjb2RpbmcvZ3JpZHN0ZXItY29yZSc7XG5pbXBvcnQge1xuICBNb2RlQWNjZXNzVmlld1dpdGhSZWxhdGlvbnMsXG4gIE1vZGVDb250cm9sbGVyU2VydmljZSxcbiAgTW9kZVdpdGhSZWxhdGlvbnMsXG4gIE1vZHVsZVdpdGhSZWxhdGlvbnMsXG4gIFBpZWNlV29ya0xpbmVDb250cm9sbGVyU2VydmljZSxcbiAgUGllY2VXb3JrTGluZVN0YXR1c0NvbnRyb2xsZXJDb250cm9sbGVyU2VydmljZSxcbiAgUGllY2VXb3JrTGluZVN0YXR1c1dpdGhSZWxhdGlvbnMsXG4gIFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zLFxuICBQaWVjZXdvcmtUcmFuc2FjdGlvblN0YXR1c0NvbnRyb2xsZXJTZXJ2aWNlLFxuICBQaWVjZXdvcmtUcmFuc2FjdGlvblN0YXR1c1dpdGhSZWxhdGlvbnMsXG4gIFBpZWNlV29ya1dpdGhSZWxhdGlvbnMsXG4gIFVzZXJDb250cm9sbGVyU2VydmljZSxcbiAgVXNlcldpdGhSZWxhdGlvbnMsXG4gIFdpZGdldENvbmZpZ1dpdGhSZWxhdGlvbnMsXG59IGZyb20gJ0BiYXJjb2Rpbmcvc2RrJztcbmltcG9ydCB7IFBpZWNlV29ya0Zyb250U3RhdGUgfSBmcm9tICdAYmFyY29kaW5nL21vZHVsZS1waWVjZXdvcmsnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBSZXNldFN0b3JlUGllY2VXb3JrLFxuICBGaW5kUGllY2VXb3JrRW1wbG95ZWUsXG59IGZyb20gJ0BiYXJjb2RpbmcvbW9kdWxlLXBpZWNld29yayc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnQGJhcmNvZGluZy9hdXRoLWNvcmUnO1xuaW1wb3J0IHsgUGllY2VXb3JrSW5Gb3JtIH0gZnJvbSAnLi9waWVjZS13b3JrLWluLWZvcm0vcGllY2Utd29yay1pbi1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDaGFuZ2VTdGF0ZVBpZWNlV29yayxcbiAgaXNNb2RlLFxuICBNb2RlU3RhdGUsXG4gIFBpZWNlV29ya1N0YXRlLFxuICBQaWVjZVdvcmtDb2xsZWN0LFxufSBmcm9tICdAYmFyY29kaW5nL2Zyb250ZW5kLWNvcmUnO1xuaW1wb3J0IHsgTW9kdWxlU3RhdGUgfSBmcm9tICdAYmFyY29kaW5nL2NvcmUnO1xuaW1wb3J0IHsgUGllY2V3b3JrSW5Db25maWdNb2RhbCB9IGZyb20gJy4vY29uZmlnL2NvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcixcbiAgRmlsdGVyRGVzY3JpcHRvcixcbn0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWRhdGEtcXVlcnknO1xuaW1wb3J0IHsgRGF0YVN0YXRlQ2hhbmdlRXZlbnQgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1ncmlkJztcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGllY2VXb3JrSW5GaWx0ZXJzIHtcbiAgcHdfaWQ/OiBudW1iZXI7XG4gIGRvY3VtZW50Pzogc3RyaW5nO1xuICB1c2VyPzogVXNlcldpdGhSZWxhdGlvbnM7XG4gIG1vZGU/OiBNb2RlV2l0aFJlbGF0aW9ucztcbiAgc3RhdHVzPzogUGllY2VXb3JrTGluZVN0YXR1c1dpdGhSZWxhdGlvbnM7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dpZGdldC1waWVjZS13b3JrLWluJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LXBpZWNld29yay1pbi5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXBpZWNld29yay1pbi5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldFBpZWNld29ya0luQ29tcG9uZW50XG4gIGV4dGVuZHMgQ29uZmlnSW50ZXJmYWNlRGFzaGJvYXJkXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFdpZGdldEludGVyZmFjZVxue1xuICBwdWJsaWMgY29uZmlnQ2hhbmdlZCQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcHVibGljIG15Q29uZmlnU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBpc0FkbWluID0gZmFsc2U7XG4gIHB1YmxpYyBpdGVtOiBXaWRnZXRDb25maWdXaXRoUmVsYXRpb25zO1xuICBwdWJsaWMgcGFyYW1zOiBXaWRnZXRQYXJhbXM7XG4gIHB1YmxpYyBmaWx0ZXJzOiBhbnkgPSB7XG4gICAgbG9naWM6ICdhbmQnLFxuICAgIGZpbHRlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGQ6ICdwaWVjZXdvcmtfbGluZV9zdGF0dXNfaWQnLFxuICAgICAgICB2YWx1ZTogMSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgZGlzcGxheWVkQ29sdW1uc09yZyA9IFtcbiAgICAncHdfbGluZScsXG4gICAgJ2VtcGxveWVlJyxcbiAgICAnZG9jdW1lbnQnLFxuICAgICdhc3NlbWJseScsXG4gICAgJ21vZGUnLFxuICAgICd1bml0X3ByaWNlJyxcbiAgICAncGVyY2VudGFnZScsXG4gICAgJ3F0eScsXG4gICAgJ2luJyxcbiAgICAnZmluaXNoJyxcbiAgICAndG90YWwnLFxuICAgICdzdGF0dXMnLFxuICBdO1xuICBkaXNwbGF5ZWRDb2x1bW5zID0gW1xuICAgICdwd19saW5lJyxcbiAgICAnZW1wbG95ZWUnLFxuICAgICdkb2N1bWVudCcsXG4gICAgJ2Fzc2VtYmx5JyxcbiAgICAnbW9kZScsXG4gICAgJ3VuaXRfcHJpY2UnLFxuICAgICdwZXJjZW50YWdlJyxcbiAgICAncXR5JyxcbiAgICAnaW4nLFxuICAgICdmaW5pc2gnLFxuICAgICd0b3RhbCcsXG4gICAgJ3N0YXR1cycsXG4gIF07IC8vIGNvbHVtbiBkaXNwbGF5IHZhbHVlXG4gIGRpc3BsYXllZENvbHVtbnNTaW1wbGUgPSBbXG4gICAgJ2VtcGxveWVlJyxcbiAgICAnZG9jdW1lbnQnLFxuICAgICdhc3NlbWJseScsXG4gICAgJ2ZpbmlzaCcsXG4gICAgJ3RvdGFsJyxcbiAgXTsgLy8gY29sdW1uIGRpc3BsYXkgdmFsdWVcbiAgZGF0YVNvdXJjZTogTWF0VGFibGVEYXRhU291cmNlPGFueT47XG4gIEBTZWxlY3QoUGllY2VXb3JrU3RhdGUucGllY2V3b3JrcykgcGllY2V3b3JrcyQ6IE9ic2VydmFibGU8XG4gICAgUGllY2VXb3JrTGluZVdpdGhSZWxhdGlvbnNbXVxuICA+O1xuICBAU2VsZWN0KFBpZWNlV29ya1N0YXRlLnRvdGFsKSB0b3RhbCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBwdWJsaWMgcGllY2V3b3JrU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlbXBsb3llZSA9IG51bGw7XG4gIHB1YmxpYyBzdGF0dXMgPSAxO1xuICBwdWJsaWMgb2JqZWN0O1xuICBwdWJsaWMgYmFyY29kZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHVibGljIHVzZXJzOiBVc2VyV2l0aFJlbGF0aW9uc1tdID0gW107XG4gIHB1YmxpYyBvYmplY3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHN0YXR1c2VzOiBQaWVjZVdvcmtMaW5lU3RhdHVzV2l0aFJlbGF0aW9uc1tdID0gW107XG4gIHB1YmxpYyBjdXJyZW50VXNlckNvbmZpZztcbiAgcHVibGljIHN0YXRlOiBPYnNlcnZhYmxlPGFueT47XG4gIHB1YmxpYyBzdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBAU2VsZWN0KFBpZWNlV29ya1N0YXRlLnN0YXRlKSBzdGF0ZSQ6IE9ic2VydmFibGU8RGF0YVN0YXRlQ2hhbmdlRXZlbnQ+O1xuICBwdWJsaWMgbW9kZXM6IE1vZGVXaXRoUmVsYXRpb25zW10gPSBbXTtcbiAgcHVibGljIGRlZmF1bHRJdGVtTW9kZTogYW55ID0geyBpZDogbnVsbCwgY29udHJvbGxlcjogJ1Nob3cgYWxsLi4uJyB9O1xuICBwdWJsaWMgZGVmYXVsdEl0ZW1TdGF0dXM6IGFueSA9IHsgaWQ6IG51bGwsIG5hbWU6ICdTaG93IGFsbC4uLicgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbW9kZUFwaTogTW9kZUNvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlckFwaTogVXNlckNvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHN0YXR1c2VzQXBpOiBQaWVjZVdvcmtMaW5lU3RhdHVzQ29udHJvbGxlckNvbnRyb2xsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGllY2VXb3JrTGluZUFwaTogUGllY2VXb3JrTGluZUNvbnRyb2xsZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGRpYWxvZywgUGllY2V3b3JrSW5Db25maWdNb2RhbCwgc3RvcmUsICc2MCUnKTtcbiAgfVxuXG4gIGdldFZhbHVlKGZpZWxkOiBzdHJpbmcsIGlzTXVsdGlMaW5lID0gZmFsc2UpIHtcbiAgICBpZiAoIXRoaXMuZmlsdGVycykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpbHRlcnMuZmlsdGVycykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHRoaXMuZmlsdGVycy5maWx0ZXJzLmZpbmQoXG4gICAgICAodmFsdWU6IEZpbHRlckRlc2NyaXB0b3IpID0+IHZhbHVlLmZpZWxkID09PSBmaWVsZFxuICAgICk7XG5cbiAgICBpZiAoaXNNdWx0aUxpbmUpIHtcbiAgICAgIGlmIChkYXRhICYmIGRhdGEudmFsdWUgJiYgZGF0YS52YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGRhdGEudmFsdWUuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGEgPyBkYXRhLnZhbHVlIDogJyc7XG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5tb2RlQXBpXG4gICAgICAuZmluZCh7IGZpbHRlcjogSlNPTi5zdHJpbmdpZnkoeyB3aGVyZTogeyBpc19waWVjZXdvcms6IHRydWUgfSB9KSB9KVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy5tb2RlcyA9IF87XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3RhdHVzZXNBcGkuZmluZCgpLnN1YnNjcmliZShfID0+IHtcbiAgICAgIHRoaXMuc3RhdHVzZXMgPSBfO1xuICAgIH0pO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdDxVc2VyV2l0aFJlbGF0aW9ucz4oXG4gICAgICBBdXRoU3RhdGUudXNlclxuICAgICk7XG4gICAgLy8gZXhhbXBsZSBvZiBkZWZhdWx0IGZpbHRlciBvbiBzdGFydFxuICAgIC8vIHRoaXMuZmlsdGVycy5maWx0ZXJzLnB1c2goe1xuICAgIC8vICAgb3BlcmF0b3I6ICdlcScsXG4gICAgLy8gICBmaWVsZDogJ3BpZWNld29ya19pZCcsXG4gICAgLy8gICB2YWx1ZTogMjAwLFxuICAgIC8vIH0pO1xuICAgIC8vIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgLy8gICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgIC8vICAgICBza2lwOiAwLFxuICAgIC8vICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgLy8gICAgIHRha2U6IDEwLFxuICAgIC8vICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVycyxcbiAgICAvLyAgIH0pXG4gICAgLy8gKTtcbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZSQuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgaWYgKF8uZmlsdGVyKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IF8uZmlsdGVyO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbW9kZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8TW9kZUFjY2Vzc1ZpZXdXaXRoUmVsYXRpb25zIHwge30+KFxuICAgICAgTW9kZVN0YXRlLm1vZGVcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudE1vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8TW9kdWxlV2l0aFJlbGF0aW9ucz4oXG4gICAgICBNb2R1bGVTdGF0ZS5tb2R1bGVcbiAgICApO1xuXG4gICAgaWYgKGN1cnJlbnRNb2R1bGUpIHtcbiAgICAgIGNvbnN0IGlzQWRtaW4gPSBjdXJyZW50VXNlci5ncm91cHMuZmluZChcbiAgICAgICAgdmFsdWUgPT4gdmFsdWUubW9kdWxlX2dyb3VwX2lkID09PSBjdXJyZW50TW9kdWxlLmFkbWluX2dyb3VwX2lkXG4gICAgICApO1xuICAgICAgaWYgKGlzQWRtaW4pIHtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZSAmJiBpc01vZGUobW9kZSkpIHtcbiAgICAgIGNvbnN0IGlzQWRtaW5Nb2RlID0gY3VycmVudFVzZXIuZ3JvdXBzLmZpbmQoXG4gICAgICAgIHZhbHVlID0+IHZhbHVlLm1vZHVsZV9ncm91cF9pZCA9PT0gbW9kZS5hZG1pbl9ncm91cF9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGlzTW9kZXJhdG9yTW9kZSA9IGN1cnJlbnRVc2VyLmdyb3Vwcy5maW5kKFxuICAgICAgICB2YWx1ZSA9PiB2YWx1ZS5tb2R1bGVfZ3JvdXBfaWQgPT09IG1vZGUubW9kZXJhdG9yX2dyb3VwX2lkXG4gICAgICApO1xuXG4gICAgICBpZiAoaXNNb2RlcmF0b3JNb2RlIHx8IGlzQWRtaW5Nb2RlKSB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFVzZXJDb25maWcgPVxuICAgICAgdGhpcy5pdGVtLmNvbmZpZyAmJiB0aGlzLml0ZW0uY29uZmlnLmN1cnJlbnRfdXNlciA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoY3VycmVudFVzZXJDb25maWcpIHtcbiAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0FkbWluKSB7XG4gICAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8VXNlcldpdGhSZWxhdGlvbnM+KFxuICAgICAgICBBdXRoU3RhdGUudXNlclxuICAgICAgKTtcblxuICAgICAgdGhpcy51c2Vycy5wdXNoKGN1cnJlbnRVc2VyKTtcbiAgICAgIGxldCBmaWx0ZXJzOiBhbnkgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuaXRlbS5jb25maWcuc2ltcGxlX3ZlcnNpb24pIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zU2ltcGxlLnNsaWNlKCk7XG4gICAgICAgIGZpbHRlcnMgPSB7XG4gICAgICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGQ6ICd1c2VyX2lkJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdwaWVjZXdvcmtfbGluZV9zdGF0dXNfaWQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlcnMgPSB7XG4gICAgICAgICAgbG9naWM6ICdhbmQnLFxuICAgICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZmllbGQ6ICdwaWVjZXdvcmtfbGluZV9zdGF0dXNfaWQnLFxuICAgICAgICAgICAgICB2YWx1ZTogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGZpZWxkOiAndXNlcl9pZCcsXG4gICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50VXNlci5pZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIG5ldyBDaGFuZ2VTdGF0ZVBpZWNlV29yayh7XG4gICAgICAgICAgc2tpcDogMCxcbiAgICAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICAgICAgdGFrZTogMjAsXG4gICAgICAgICAgZmlsdGVyOiBmaWx0ZXJzLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0FkbWluKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBbXG4gICAgICAgICdwd19saW5lJyxcbiAgICAgICAgJ2VtcGxveWVlJyxcbiAgICAgICAgJ2RvY3VtZW50JyxcbiAgICAgICAgJ21vZGUnLFxuICAgICAgICAncGVyY2VudGFnZScsXG4gICAgICAgICdxdHknLFxuICAgICAgICAnZmluaXNoJyxcbiAgICAgICAgJ3RvdGFsJyxcbiAgICAgICAgJ3N0YXR1cycsXG4gICAgICAgICdhY3Rpb25zJyxcbiAgICAgIF07IC8vIGNvbHVtbiBkaXNwbGF5IHZhbHVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXhhbXBsZSBzZXQgZmlsdGVyIG91dHNpZGVcbiAgICAgKi9cbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGZpbHRlcnM6IENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3IgPSB7XG4gICAgLy8gICAgIGxvZ2ljOiAnYW5kJyxcbiAgICAvLyAgICAgZmlsdGVyczogW1xuICAgIC8vICAgICAgIHtcbiAgICAvLyAgICAgICAgIG9wZXJhdG9yOiAnZXEnLFxuICAgIC8vICAgICAgICAgZmllbGQ6ICdwaWVjZXdvcmtfaWQnLFxuICAgIC8vICAgICAgICAgdmFsdWU6IDIwMixcbiAgICAvLyAgICAgICB9LFxuICAgIC8vICAgICBdLFxuICAgIC8vICAgfTtcbiAgICAvLyAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgLy8gICAgIG5ldyBDaGFuZ2VTdGF0ZVBpZWNlV29yayh7XG4gICAgLy8gICAgICAgc2tpcDogMCxcbiAgICAvLyAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgLy8gICAgICAgdGFrZTogMTAsXG4gICAgLy8gICAgICAgZmlsdGVyOiBmaWx0ZXJzLFxuICAgIC8vICAgICB9KVxuICAgIC8vICAgKTtcbiAgICAvLyB9LCA4MDAwKTtcblxuICAgIHRoaXMucGllY2V3b3JrU3Vic2NyaXB0aW9uID0gdGhpcy5waWVjZXdvcmtzJC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gXy5tYXAodmFsdWUgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnZhbHVlLFxuICAgICAgICAgIGZvcm1JbjogdmFsdWUub3V0IC0gdmFsdWUuaW4sXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRNYXgocm93OiBQaWVjZVdvcmtMaW5lV2l0aFJlbGF0aW9ucykge1xuICAgIHJldHVybiByb3cub3V0IC0gcm93LmluO1xuICB9XG5cbiAgcmVnaXN0ZXJJbihyb3c6IFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zLCBxdHlfaW46IG51bWJlciwgZmluaXNoKSB7XG4gICAgdGhpcy5waWVjZVdvcmtMaW5lQXBpXG4gICAgICAuZmluZCh7XG4gICAgICAgIGZpbHRlcjogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHdoZXJlOiB7IHBpZWNld29ya19pZDogcm93LnBpZWNld29ya19pZCB9LFxuICAgICAgICB9KSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKGxpbmVzID0+IHtcbiAgICAgICAgbGV0IGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdG90YWxMaW5lcyA9IGxpbmVzLmxlbmd0aDtcbiAgICAgICAgbGV0IHRvdGFsRmluaXNoZWRMaW5lcyA9IDA7XG5cbiAgICAgICAgbGluZXMuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgICAgICBpZiAobGluZS5waWVjZXdvcmtfbGluZV9zdGF0dXNfaWQgPT09IDIpIHtcbiAgICAgICAgICAgIHRvdGFsRmluaXNoZWRMaW5lcysrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChxdHlfaW4gPT09IHJvdy5vdXQpIHtcbiAgICAgICAgICB0b3RhbEZpbmlzaGVkTGluZXMrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAodG90YWxGaW5pc2hlZExpbmVzID09PSB0b3RhbExpbmVzKSB7XG4gICAgICAgICAgaXNGaW5pc2hlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1c2VyX2lkID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdDxVc2VyV2l0aFJlbGF0aW9ucz4oXG4gICAgICAgICAgQXV0aFN0YXRlLnVzZXJcbiAgICAgICAgKS5pZDtcbiAgICAgICAgY29uc3QgZmluaXNoT2JqZWN0ID0gZmluaXNoID8gcXR5X2luIDogMDtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBuZXcgUGllY2VXb3JrQ29sbGVjdChcbiAgICAgICAgICAgIHJvdy5waWVjZXdvcmtfaWQsXG4gICAgICAgICAgICBxdHlfaW4sXG4gICAgICAgICAgICByb3cuaWQsXG4gICAgICAgICAgICB1c2VyX2lkLFxuICAgICAgICAgICAgZmluaXNoT2JqZWN0LFxuICAgICAgICAgICAgaXNGaW5pc2hlZFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYnVpbGRCYXJjb2RlTGlzdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5iYXJjb2RlcyA9IHZhbHVlXG4gICAgICAuc3BsaXQoJ1xcbicpXG4gICAgICAuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID4gMClcbiAgICAgIC5tYXAodmFsdWUgPT4gdmFsdWUudHJpbSgpKTtcbiAgfVxuXG4gIHZhbHVlQ2hhbmdlKGZpZWxkLCBldmVudCkge1xuICAgIGlmICghdGhpcy5maWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIHRoaXMuZmlsdGVycy5maWx0ZXJzID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyRXhpc3RzID0gdGhpcy5maWx0ZXJzLmZpbHRlcnMuZmluZEluZGV4KFxuICAgICAgKHZhbHVlOiBGaWx0ZXJEZXNjcmlwdG9yKSA9PiB2YWx1ZS5maWVsZCA9PT0gZmllbGRcbiAgICApO1xuXG4gICAgaWYgKGZpbHRlckV4aXN0cyA+PSAwKSB7XG4gICAgICB0aGlzLmZpbHRlcnMuZmlsdGVyc1tmaWx0ZXJFeGlzdHNdLnZhbHVlID0gZXZlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVycy5maWx0ZXJzLnB1c2goe1xuICAgICAgICBvcGVyYXRvcjogJ2VxJyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIHZhbHVlOiBldmVudCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgICAgICBza2lwOiAwLFxuICAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICAgIHRha2U6IDEwLFxuICAgICAgICBmaWx0ZXI6IHRoaXMuZmlsdGVycyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGZpbHRlckNoYW5nZShldmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy51c2VyQXBpXG4gICAgICAgIC5maW5kKHtcbiAgICAgICAgICBmaWx0ZXI6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGxpbWl0OiA1LFxuICAgICAgICAgICAgd2hlcmU6IHsgZnVsbF9uYW1lOiB7IGxpa2U6IGAlJHtldmVudH0lYCB9IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgdGhpcy51c2VycyA9IF87XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnBpZWNld29ya1N1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5waWVjZXdvcmtTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubXlDb25maWdTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubXlDb25maWdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub2JqZWN0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm9iamVjdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFJlc2V0U3RvcmVQaWVjZVdvcmsoKSk7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgb3BlbkluRm9ybShyb3c6IFBpZWNlV29ya0xpbmVXaXRoUmVsYXRpb25zKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihQaWVjZVdvcmtJbkZvcm0sIHtcbiAgICAgIHdpZHRoOiAnNDAlJyxcbiAgICAgIGRhdGE6IHsgbGluZTogcm93IH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY29uc3QgdXNlcl9pZCA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3Q8VXNlcldpdGhSZWxhdGlvbnM+KFxuICAgICAgICAgIEF1dGhTdGF0ZS51c2VyXG4gICAgICAgICkuaWQ7XG4gICAgICAgIGNvbnN0IGZpbmlzaCA9IGRhdGEuZmluaXNoID8gZGF0YS5xdHlfaW4gOiAwO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIG5ldyBQaWVjZVdvcmtDb2xsZWN0KFxuICAgICAgICAgICAgcm93LnBpZWNld29ya19pZCxcbiAgICAgICAgICAgIGRhdGEucXR5X2luLFxuICAgICAgICAgICAgcm93LmlkLFxuICAgICAgICAgICAgdXNlcl9pZCxcbiAgICAgICAgICAgIGZpbmlzaCxcbiAgICAgICAgICAgIGRhdGEuaXNGaW5pc2hlZFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZVBhZ2UoZXZlbnQ6IFBhZ2VFdmVudCkge1xuICAgIGNvbnN0IHRha2UgPSBldmVudC5wYWdlU2l6ZTtcbiAgICBjb25zdCBza2lwID0gZXZlbnQucGFnZUluZGV4ID4gMCA/IGV2ZW50LnBhZ2VJbmRleCAqIGV2ZW50LnBhZ2VTaXplIDogMDtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBuZXcgQ2hhbmdlU3RhdGVQaWVjZVdvcmsoe1xuICAgICAgICBza2lwLFxuICAgICAgICBzb3J0OiBbeyBmaWVsZDogJ2lkJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICAgIHRha2UsXG4gICAgICAgIGZpbHRlcjogdGhpcy5maWx0ZXJzLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0Q3VycmVuY3kodmFsdWUsIGN1cnJlbmN5KSB7XG4gICAgY29uc3QgcmVnaW9uID0gY3VycmVuY3kucmVnaW9uO1xuICAgIGNvbnN0IHN5bWJvbCA9IGN1cnJlbmN5LnN5bWJvbDtcblxuICAgIHJldHVybiB2YWx1ZVxuICAgICAgPyB2YWx1ZS50b0xvY2FsZVN0cmluZyhyZWdpb24sIHsgc3R5bGU6ICdjdXJyZW5jeScsIGN1cnJlbmN5OiBzeW1ib2wgfSlcbiAgICAgIDogMDtcbiAgfVxufVxuQFBpcGUoeyBuYW1lOiAnZm9ybWF0VGltZScgfSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRUaW1lIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnZlcnRUaW1lKGlucHV0LCBzZXBhcmF0b3IpIHtcbiAgICBjb25zdCBwYWQgPSBpbnB1dCA9PiB7XG4gICAgICByZXR1cm4gaW5wdXQgPCAxMCA/ICcwJyArIGlucHV0IDogaW5wdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gW1xuICAgICAgcGFkKE1hdGguZmxvb3IoaW5wdXQgLyAzNjAwKSksXG4gICAgICBwYWQoTWF0aC5mbG9vcigoaW5wdXQgJSAzNjAwKSAvIDYwKSksXG4gICAgICBwYWQoTWF0aC5mbG9vcihpbnB1dCAlIDYwKSksXG4gICAgXS5qb2luKHR5cGVvZiBzZXBhcmF0b3IgIT09ICd1bmRlZmluZWQnID8gc2VwYXJhdG9yIDogJzonKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55KTogYW55IHtcbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmNvbnZlcnRUaW1lKHZhbHVlLCAnOicpIDogJzAwOjAwOjAwJztcbiAgfVxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMjBweFwiPlxuICA8bGFiZWwgKm5nSWY9XCIhaXRlbS5jb25maWc/LnNpbXBsZV92ZXJzaW9uXCIgZnhGbGV4IGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJrLWZvcm1cIiBpZD1cInBpZWNld29ya19pbl9mb3JtXCI+XG4gICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCI4cHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgIDxsYWJlbCBmeEZsZXggY2xhc3M9XCJrLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICA8c3Bhbj5CYXJjb2RlPC9zcGFuPlxuICAgICAgICAgIDxrZW5kby10ZXh0YXJlYVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTY2FuIGJhcmNvZGVzIGhlcmVcIlxuICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCIndmVydGljYWwnXCJcbiAgICAgICAgICAgIFtyb3dzXT1cIjNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlKCdiYXJjb2RlcycsIHRydWUpXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJidWlsZEJhcmNvZGVMaXN0KCRldmVudClcIlxuICAgICAgICAgICAgZmxvdz1cInZlcnRpY2FsXCI+XG4gICAgICAgICAgPC9rZW5kby10ZXh0YXJlYT5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGZ4RmxleD1cIjUwcHhcIlxuICAgICAgICAgIChjbGljayk9XCJ2YWx1ZUNoYW5nZSgnYmFyY29kZXMnLCBiYXJjb2RlcylcIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJGaWx0ZXJcIlxuICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiRXhhbXBsZSBpY29uIGJ1dHRvbiB3aXRoIGEgaGVhcnQgaWNvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjhweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgPGxhYmVsIGZ4RmxleD1cIjI1JVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+UFcgSUQ8L3NwYW4+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgIGtlbmRvVGV4dEJveFxuICAgICAgICAgICAgW3ZhbHVlXT1cImdldFZhbHVlKCdwaWVjZXdvcmtfaWQnKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwidmFsdWVDaGFuZ2UoJ3BpZWNld29ya19pZCcsICRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgIG5hbWU9XCJwaWVjZXdvcmtfaWRcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIiAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gPGxhYmVsIGZ4RmxleD1cIjIwJVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+QmFyY29kZTwvc3Bhbj5cbiAgICAgICAgICA8a2VuZG8tdGV4dGFyZWFcbiAgICAgICAgICAgIFtzdHlsZS5tYXJnaW5Cb3R0b20ucHhdPVwiMTBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFdmVudCBuYW1lXCJcbiAgICAgICAgICAgIHJlc2l6YWJsZT1cImF1dG9cIlxuICAgICAgICAgICAgZmxvdz1cImhvcml6b250YWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2tlbmRvLXRleHRhcmVhPlxuXG4gICAgICAgICAgPCEtLSA8aW5wdXRcbiAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgICAgICAga2VuZG9UZXh0Qm94XG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWUoJ2JhcmNvZGUnKVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwidmFsdWVDaGFuZ2UoJ2JhcmNvZGUnLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICBuYW1lPVwiYmFyY29kZVwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgLz4gLS0+XG5cbiAgICAgICAgPGxhYmVsIGZ4RmxleD1cIjI1JVwiIGNsYXNzPVwiay1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgPHNwYW4+RW1wbG95ZWU8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWNvbWJvYm94XG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgIG5hbWU9XCJ1c2VyX2lkXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZSgndXNlcl9pZCcpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJmaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJ3VzZXJfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInVzZXJzXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ2Z1bGxfbmFtZSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FkbWluXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWNvbWJvYm94PlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbCBmeEZsZXg9XCIyNSVcIiBjbGFzcz1cImstZm9ybS1maWVsZFwiPlxuICAgICAgICAgIDxzcGFuPk1vZGU8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtTW9kZVwiXG4gICAgICAgICAgICBbZGF0YV09XCJtb2Rlc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZ2V0VmFsdWUoJ21vZGVfaWQnKVwiXG4gICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UoJ21vZGVfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ2NvbnRyb2xsZXInXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgbmFtZT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8bGFiZWwgZnhGbGV4PVwiMjUlXCIgY2xhc3M9XCJrLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICA8c3Bhbj5TdGF0dXM8L3NwYW4+XG4gICAgICAgICAgPGtlbmRvLWRyb3Bkb3dubGlzdFxuICAgICAgICAgICAgW2RlZmF1bHRJdGVtXT1cImRlZmF1bHRJdGVtU3RhdHVzXCJcbiAgICAgICAgICAgIFtkYXRhXT1cInN0YXR1c2VzXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRWYWx1ZSgncGllY2V3b3JrX2xpbmVfc3RhdHVzX2lkJylcIlxuICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCdwaWVjZXdvcmtfbGluZV9zdGF0dXNfaWQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ25hbWUnXCJcbiAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIidpZCdcIlxuICAgICAgICAgICAgbmFtZT1cInRydWVcIj5cbiAgICAgICAgICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9sYWJlbD5cblxuICA8bWF0LXRhYmxlICN0YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJwd19saW5lXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlBXPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5waWVjZXdvcms/LmlkIH19L3t7IHJvdy5waWVjZXdvcmtfb3JkZXJfbGluZSB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjZGtDb2x1bW5EZWY9XCJlbXBsb3llZVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5FbXBsb3llZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8c3Bhbj57eyByb3c/LnBpZWNld29yaz8ucHJlcGFyZWRfZm9yPy5mdWxsX25hbWUgfX08L3NwYW4+XG4gICAgICA8L21hdC1jZWxsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZG9jdW1lbnRcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+RG9jdW1lbnQ8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPHNwYW4+e3sgcm93LmRvY3VtZW50Py5iYXJjb2RlIH19PC9zcGFuPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImFzc2VtYmx5XCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPkFzc2VtYmx5PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5wYXJ0Py5wYXJ0X251bWJlciB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInF0eV9tYXhcIj5cbiAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5RdHk8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxzcGFuPnt7IGdldE1heFF0eUxlZnRGb3JSb3cocm93KX19PC9zcGFuPlxuICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwibW9kZVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5Nb2RlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IHJvdy5tb2RlPy5jb250cm9sbGVyIH19PC9zcGFuPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInVuaXRfcHJpY2VcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+VW5pdCBQcmljZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyBmb3JtYXRDdXJyZW5jeShyb3cudW5pdF9wcmljZSwgcm93LmN1cnJlbmN5KSB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInBlcmNlbnRhZ2VcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKmNka0hlYWRlckNlbGxEZWY+Sm9iICU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAge3sgcm93LndvcmtfcGVyY2VudGFnZSB8IHBlcmNlbnQgfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInF0eVwiPlxuICAgICAgPG1hdC1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZj5PdXQgLyBJbjwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyByb3cub3V0IH19IC8ge3sgIXJvdy5pbiA/IDAgOiByb3cuaW4gfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImluXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlF0eSBJbjwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyAhcm93LmluID8gMCA6IHJvdy5pbiB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwiZmluaXNoXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlF0eSBGaW5pc2g8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgIDxtYXQtY2VsbCAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAge3sgcm93LmZpbmlzaCB9fVxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgY2RrQ29sdW1uRGVmPVwic3RhdHVzXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlN0YXR1czwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgPG1hdC1jZWxsICpjZGtDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICB7eyByb3cubGluZV9zdGF0dXM/Lm5hbWUgfX1cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cInRvdGFsXCI+XG4gICAgICA8bWF0LWhlYWRlci1jZWxsICpjZGtIZWFkZXJDZWxsRGVmPlRvdGFsPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICA8bWF0LWNlbGwgKmNka0NlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgIDxzcGFuPnt7IGZvcm1hdEN1cnJlbmN5KHJvdy52YWx1ZSwgcm93LmN1cnJlbmN5KSB9fTwvc3Bhbj5cbiAgICAgIDwvbWF0LWNlbGw+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj1cImFjdGlvbnNcIj5cbiAgICAgIDxtYXQtaGVhZGVyLWNlbGwgW25nQ2xhc3NdPVwiJ3BpZWNld29ya0FjdGlvbkNvbHVtbidcIiAqY2RrSGVhZGVyQ2VsbERlZlxuICAgICAgICA+QWN0aW9uczwvbWF0LWhlYWRlci1jZWxsXG4gICAgICA+XG4gICAgICA8bWF0LWNlbGwgW25nQ2xhc3NdPVwiJ3BpZWNld29ya0FjdGlvbkNvbHVtbidcIiAqY2RrQ2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5waWVjZXdvcmtfbGluZV9zdGF0dXNfaWQgPT0gMVwiPlxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjhweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgICAgIDxrZW5kby1udW1lcmljdGV4dGJveFxuICAgICAgICAgICAgICBbZm9ybWF0XT1cIiduMCdcIlxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcbiAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3cuZm9ybUluXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiJ2luXycgKyByb3cuaWRcIlxuICAgICAgICAgICAgICBbbWF4XT1cImdldE1heChyb3cpXCJcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiPjwva2VuZG8tbnVtZXJpY3RleHRib3g+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJGaW5pc2hcIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidhYm92ZSdcIlxuICAgICAgICAgICAgICBmeEZsZXhBbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidmaW5pc2hfJyArIHJvdy5pZFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93LmZvcm1GaW5pc2hcIj5cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93LmluID09IHJvdy5vdXQgfHwgcm93LmZvcm1JbiA+IHJvdy5vdXQgLSByb3cuaW5cIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU2F2ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZWdpc3RlckluKHJvdywgcm93LmZvcm1Jbiwgcm93LmZvcm1GaW5pc2gpXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWJvdmUnXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFeGFtcGxlIGljb24gYnV0dG9uIHdpdGggYSBoZWFydCBpY29uXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5waWVjZXdvcmtfbGluZV9zdGF0dXNfaWQgPT0gMlwiPlxuICAgICAgICAgIDxzcGFuPkxpbmUgZmluaXNoZWQ8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9tYXQtY2VsbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxtYXQtaGVhZGVyLXJvdyAqY2RrSGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvbWF0LWhlYWRlci1yb3c+XG4gICAgPG1hdC1yb3cgKmNka1Jvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gIDwvbWF0LXRhYmxlPlxuICA8bWF0LXBhZ2luYXRvclxuICAgICNwYWdpbmF0b3JcbiAgICBbbGVuZ3RoXT1cInRvdGFsJCB8IGFzeW5jXCJcbiAgICBbcGFnZUluZGV4XT1cIjBcIlxuICAgIChwYWdlKT1cImNoYW5nZVBhZ2UoJGV2ZW50KVwiXG4gICAgW3BhZ2VTaXplXT1cIjEwXCJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjUsIDEwMF1cIj5cbiAgPC9tYXQtcGFnaW5hdG9yPlxuPC9kaXY+XG4iXX0=
|
|
@@ -246,7 +246,6 @@ class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
246
246
|
if (mode && isMode(mode)) {
|
|
247
247
|
const isAdminMode = currentUser.groups.find(value => value.module_group_id === mode.admin_group_id);
|
|
248
248
|
const isModeratorMode = currentUser.groups.find(value => value.module_group_id === mode.moderator_group_id);
|
|
249
|
-
console.log(isAdminMode, isModeratorMode);
|
|
250
249
|
if (isModeratorMode || isAdminMode) {
|
|
251
250
|
this.isAdmin = true;
|
|
252
251
|
}
|
|
@@ -255,7 +254,6 @@ class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
255
254
|
if (currentUserConfig) {
|
|
256
255
|
this.isAdmin = false;
|
|
257
256
|
}
|
|
258
|
-
console.log(`isAdmin: ${this.isAdmin}`);
|
|
259
257
|
if (!this.isAdmin) {
|
|
260
258
|
const currentUser = this.store.selectSnapshot(AuthState.user);
|
|
261
259
|
this.users.push(currentUser);
|
|
@@ -349,7 +347,6 @@ class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
349
347
|
return row.out - row.in;
|
|
350
348
|
}
|
|
351
349
|
registerIn(row, qty_in, finish) {
|
|
352
|
-
console.log(row, qty_in);
|
|
353
350
|
this.pieceWorkLineApi
|
|
354
351
|
.find({
|
|
355
352
|
filter: JSON.stringify({
|
|
@@ -381,10 +378,8 @@ class WidgetPieceworkInComponent extends ConfigInterfaceDashboard {
|
|
|
381
378
|
.split('\n')
|
|
382
379
|
.filter(value => value != null && value.length > 0)
|
|
383
380
|
.map(value => value.trim());
|
|
384
|
-
console.log(this.barcodes);
|
|
385
381
|
}
|
|
386
382
|
valueChange(field, event) {
|
|
387
|
-
console.log(`valueChange: ${field}, ${event}`);
|
|
388
383
|
if (!this.filters.filters) {
|
|
389
384
|
this.filters.filters = [];
|
|
390
385
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barcoding-widget-piecework-in.mjs","sources":["../../src/lib/piece-work-in-form/piece-work-in-form.component.ts","../../src/lib/piece-work-in-form/piece-work-in-form.component.html","../../src/lib/config/config.component.ts","../../src/lib/config/modal.html","../../src/lib/widget-piecework-in.component.ts","../../src/lib/widget-piecework-in.component.html","../../src/lib/widget-piecework-in.module.ts","../../src/public-api.ts","../../src/barcoding-widget-piecework-in.ts"],"sourcesContent":["import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\nimport { FocusService } from '@barcoding/frontend-core';\nimport {\n FaultCategoryControllerService,\n FaultControllerService,\n FaultsCategoryWithRelations,\n FaultWithRelations,\n PieceWorkLineWithRelations,\n SessionWithRelations,\n User,\n UserControllerService,\n UserWithRelations,\n} from '@barcoding/sdk';\nimport { Store } from '@ngxs/store';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkLineControllerService } from '@barcoding/sdk';\n\n@Component({\n selector: 'piece-work-in-form',\n styles: [\n `\n kendo-textbox-container {\n width: 100%;\n }\n\n .h_t {\n font: normal normal normal 10px/40px IBM Plex Sans;\n letter-spacing: 0px;\n color: #666666;\n opacity: 1;\n }\n\n .v_t {\n font: normal normal normal 18px/40px IBM Plex Sans;\n letter-spacing: 0px;\n color: #666666;\n opacity: 1;\n }\n\n .spacer {\n display: flex;\n flex-grow: 1;\n }\n `,\n ],\n templateUrl: 'piece-work-in-form.component.html',\n})\nexport class PieceWorkInForm implements OnInit, OnDestroy {\n line: PieceWorkLineWithRelations;\n public finish = false;\n public qty_in = 0;\n constructor(\n private focusService: FocusService,\n private pieceWorkLineApi: PieceWorkLineControllerService,\n public dialogRef: MatDialogRef<PieceWorkInForm>,\n private store: Store,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.line = Object.assign({}, data.line);\n this.qty_in = this.line.out - this.line.in;\n }\n\n ngOnInit() {\n this.focusService.unFocus();\n }\n\n ngOnDestroy() {\n this.focusService.setFocus();\n }\n cancel() {\n this.dialogRef.close();\n }\n\n save(qty_in, finish) {\n this.pieceWorkLineApi\n .find({\n filter: JSON.stringify({\n where: { piecework_id: this.line.piecework_id },\n }),\n })\n .subscribe(lines => {\n let isFinished = false;\n const totalLines = lines.length;\n let totalFinishedLines = 0;\n\n lines.forEach(line => {\n if (line.piecework_line_status_id === 2) {\n totalFinishedLines++;\n }\n });\n if (qty_in === this.line.out) {\n totalFinishedLines++;\n }\n if (totalFinishedLines === totalLines) {\n isFinished = true;\n }\n\n this.dialogRef.close({\n qty_in,\n finish,\n isFinished,\n });\n });\n }\n}\n","<div fxLayout=\"column\" style=\"width: 100%\" fxLayoutAlign=\" none\">\n <h4>Piece Work</h4>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Assembly Name</span>\n <span class=\"v_t\">{{ line.part?.part_number }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Mode</span>\n <span class=\"v_t\">{{ line.mode?.controller }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Allocated Time</span>\n <span class=\"v_t\">--</span>\n </div>\n </div>\n <form class=\"k-form\" autocomplete=\"off\" #pieceWork=\"ngForm\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"20px\">\n <kendo-floatinglabel fxFlex=\"80%\" text=\"Qty\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n required\n [(ngModel)]=\"qty_in\"\n [name]=\"'in'\"\n [max]=\"line.out\"\n type=\"number\"></kendo-numerictextbox>\n </kendo-floatinglabel>\n <mat-checkbox fxFlexAlign=\"center\" name=\"finish\" [(ngModel)]=\"finish\">\n Finish\n </mat-checkbox>\n </div>\n </form>\n</div>\n<div\n style=\"margin-top: 25px\"\n fxLayoutGap=\"10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end none\">\n <button (click)=\"cancel()\" mat-raised-button class=\"t_btn cancel\">\n Cancel\n </button>\n <button\n (click)=\"save(qty_in, finish)\"\n [disabled]=\"!pieceWork.valid\"\n mat-raised-button\n class=\"t_btn success\">\n Save\n </button>\n</div>\n","import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport {\n ExternalDashboardControllerService,\n ExternalDashboardWithRelations,\n} from '@barcoding/sdk';\n@Component({\n selector: 'assignmentFormDialog',\n templateUrl: 'modal.html',\n styleUrls: ['./style.css'],\n})\nexport class PieceworkInConfigModal implements OnInit {\n public config: any = {};\n constructor(\n public dialogRef: MatDialogRef<PieceworkInConfigModal>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.config = Object.assign({}, data.currentConfig);\n }\n\n ngOnInit() {}\n\n save(config) {\n this.dialogRef.close(config);\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}\n","<form class=\"k-form\" autocomplete=\"off\" #configForm=\"ngForm\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <div fxLayout=\"column\" fxLayoutAlign=\" stretch\">\n <fieldset>\n <legend>Main</legend>\n <label fxFlex class=\"k-form-field\">\n <span>Current User</span>\n <kendo-switch\n name=\"current_user\"\n [(ngModel)]=\"config.current_user\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"></kendo-switch>\n </label>\n <label fxFlex class=\"k-form-field\">\n <span>Simple Version</span>\n <kendo-switch\n name=\"simple_version\"\n [(ngModel)]=\"config.simple_version\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"></kendo-switch>\n </label>\n </fieldset>\n </div>\n\n <div\n fxLayoutGap=\"20px\"\n style=\"margin-top: 10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around end\">\n <button\n fxFlex\n (click)=\"onNoClick()\"\n mat-raised-button\n class=\"t_btn cancel\">\n Cancel\n </button>\n <button\n fxFlex\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save(config)\"\n class=\"t_btn success\"\n mat-raised-button>\n Save\n </button>\n </div>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Select, Store } from '@ngxs/store';\nimport {\n ConfigInterfaceDashboard,\n WidgetInterface,\n WidgetParams,\n} from '@barcoding/gridster-core';\nimport {\n ModeAccessViewWithRelations,\n ModeControllerService,\n ModeWithRelations,\n ModuleWithRelations,\n PieceWorkLineControllerService,\n PieceWorkLineStatusControllerControllerService,\n PieceWorkLineStatusWithRelations,\n PieceWorkLineWithRelations,\n PieceworkTransactionStatusControllerService,\n PieceworkTransactionStatusWithRelations,\n PieceWorkWithRelations,\n UserControllerService,\n UserWithRelations,\n WidgetConfigWithRelations,\n} from '@barcoding/sdk';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport {\n ResetStorePieceWork,\n FindPieceWorkEmployee,\n} from '@barcoding/module-piecework';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n ChangeStatePieceWork,\n isMode,\n ModeState,\n PieceWorkState,\n PieceWorkCollect,\n} from '@barcoding/frontend-core';\nimport { ModuleState } from '@barcoding/core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport {\n CompositeFilterDescriptor,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { DataStateChangeEvent } from '@progress/kendo-angular-grid';\nimport { PageEvent } from '@angular/material/paginator';\n\nexport interface PieceWorkInFilters {\n pw_id?: number;\n document?: string;\n user?: UserWithRelations;\n mode?: ModeWithRelations;\n status?: PieceWorkLineStatusWithRelations;\n}\n\n@Component({\n selector: 'widget-piece-work-in',\n styleUrls: ['./widget-piecework-in.component.scss'],\n templateUrl: './widget-piecework-in.component.html',\n})\nexport class WidgetPieceworkInComponent\n extends ConfigInterfaceDashboard\n implements OnInit, OnDestroy, WidgetInterface\n{\n public configChanged$: Subject<any> = new Subject<any>();\n public myConfigSubscription: Subscription;\n public isAdmin = false;\n public item: WidgetConfigWithRelations;\n public params: WidgetParams;\n public filters: any = {\n logic: 'and',\n filters: [\n {\n field: 'piecework_line_status_id',\n value: 1,\n },\n ],\n };\n displayedColumnsOrg = [\n 'pw_line',\n 'employee',\n 'document',\n 'assembly',\n 'mode',\n 'unit_price',\n 'percentage',\n 'qty',\n 'in',\n 'finish',\n 'total',\n 'status',\n ];\n displayedColumns = [\n 'pw_line',\n 'employee',\n 'document',\n 'assembly',\n 'mode',\n 'unit_price',\n 'percentage',\n 'qty',\n 'in',\n 'finish',\n 'total',\n 'status',\n ]; // column display value\n displayedColumnsSimple = [\n 'employee',\n 'document',\n 'assembly',\n 'finish',\n 'total',\n ]; // column display value\n dataSource: MatTableDataSource<any>;\n @Select(PieceWorkState.pieceworks) pieceworks$: Observable<\n PieceWorkLineWithRelations[]\n >;\n @Select(PieceWorkState.total) total$: Observable<number>;\n\n public pieceworkSubscription: Subscription;\n public employee = null;\n public status = 1;\n public object;\n public barcodes: Array<string> = [];\n public users: UserWithRelations[] = [];\n public objectSubscription: Subscription;\n public statuses: PieceWorkLineStatusWithRelations[] = [];\n public currentUserConfig;\n public state: Observable<any>;\n public stateSubscription: Subscription;\n @Select(PieceWorkState.state) state$: Observable<DataStateChangeEvent>;\n public modes: ModeWithRelations[] = [];\n public defaultItemMode: any = { id: null, controller: 'Show all...' };\n public defaultItemStatus: any = { id: null, name: 'Show all...' };\n\n constructor(\n public modeApi: ModeControllerService,\n private userApi: UserControllerService,\n public store: Store,\n private cdr: ChangeDetectorRef,\n public dialog: MatDialog,\n private statusesApi: PieceWorkLineStatusControllerControllerService,\n private pieceWorkLineApi: PieceWorkLineControllerService\n ) {\n super(dialog, PieceworkInConfigModal, store, '60%');\n }\n\n getValue(field: string, isMultiLine = false) {\n if (!this.filters) {\n return null;\n }\n\n if (!this.filters.filters) {\n return null;\n }\n const data: any = this.filters.filters.find(\n (value: FilterDescriptor) => value.field === field\n );\n\n if (isMultiLine) {\n if (data && data.value && data.value.length) {\n return data.value.join('\\n');\n }\n }\n\n return data ? data.value : '';\n }\n ngOnInit() {\n this.modeApi\n .find({ filter: JSON.stringify({ where: { is_piecework: true } }) })\n .subscribe(_ => {\n this.modes = _;\n });\n\n this.statusesApi.find().subscribe(_ => {\n this.statuses = _;\n });\n const currentUser = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n );\n // example of default filter on start\n // this.filters.filters.push({\n // operator: 'eq',\n // field: 'piecework_id',\n // value: 200,\n // });\n // this.store.dispatch(\n // new ChangeStatePieceWork({\n // skip: 0,\n // sort: [{ field: 'id', dir: 'desc' }],\n // take: 10,\n // filter: this.filters,\n // })\n // );\n this.stateSubscription = this.state$.subscribe(_ => {\n if (_.filter) {\n this.filters = _.filter;\n }\n });\n\n const mode = this.store.selectSnapshot<ModeAccessViewWithRelations | {}>(\n ModeState.mode\n );\n\n const currentModule = this.store.selectSnapshot<ModuleWithRelations>(\n ModuleState.module\n );\n\n if (currentModule) {\n const isAdmin = currentUser.groups.find(\n value => value.module_group_id === currentModule.admin_group_id\n );\n if (isAdmin) {\n this.isAdmin = true;\n }\n }\n\n if (mode && isMode(mode)) {\n const isAdminMode = currentUser.groups.find(\n value => value.module_group_id === mode.admin_group_id\n );\n const isModeratorMode = currentUser.groups.find(\n value => value.module_group_id === mode.moderator_group_id\n );\n console.log(isAdminMode, isModeratorMode);\n if (isModeratorMode || isAdminMode) {\n this.isAdmin = true;\n }\n }\n\n const currentUserConfig =\n this.item.config && this.item.config.current_user ? true : false;\n if (currentUserConfig) {\n this.isAdmin = false;\n }\n\n console.log(`isAdmin: ${this.isAdmin}`);\n\n if (!this.isAdmin) {\n const currentUser = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n );\n\n this.users.push(currentUser);\n let filters: any = {};\n\n if (this.item.config.simple_version) {\n this.displayedColumns = this.displayedColumnsSimple.slice();\n filters = {\n logic: 'and',\n filters: [\n {\n field: 'user_id',\n value: currentUser.id,\n },\n {\n field: 'piecework_line_status_id',\n value: 2,\n },\n ],\n };\n } else {\n filters = {\n logic: 'and',\n filters: [\n {\n field: 'piecework_line_status_id',\n value: 1,\n },\n {\n field: 'user_id',\n value: currentUser.id,\n },\n ],\n };\n }\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip: 0,\n sort: [{ field: 'id', dir: 'desc' }],\n take: 20,\n filter: filters,\n })\n );\n }\n\n if (this.isAdmin) {\n this.displayedColumns = [\n 'pw_line',\n 'employee',\n 'document',\n 'mode',\n 'percentage',\n 'qty',\n 'finish',\n 'total',\n 'status',\n 'actions',\n ]; // column display value\n }\n\n /**\n * example set filter outside\n */\n // setTimeout(() => {\n // const filters: CompositeFilterDescriptor = {\n // logic: 'and',\n // filters: [\n // {\n // operator: 'eq',\n // field: 'piecework_id',\n // value: 202,\n // },\n // ],\n // };\n // this.store.dispatch(\n // new ChangeStatePieceWork({\n // skip: 0,\n // sort: [{ field: 'id', dir: 'desc' }],\n // take: 10,\n // filter: filters,\n // })\n // );\n // }, 8000);\n\n this.pieceworkSubscription = this.pieceworks$.subscribe(_ => {\n const data = _.map(value => {\n return {\n ...value,\n formIn: value.out - value.in,\n };\n });\n this.dataSource = new MatTableDataSource(data);\n });\n }\n\n getMax(row: PieceWorkLineWithRelations) {\n return row.out - row.in;\n }\n\n registerIn(row: PieceWorkLineWithRelations, qty_in: number, finish) {\n console.log(row, qty_in);\n this.pieceWorkLineApi\n .find({\n filter: JSON.stringify({\n where: { piecework_id: row.piecework_id },\n }),\n })\n .subscribe(lines => {\n let isFinished = false;\n const totalLines = lines.length;\n let totalFinishedLines = 0;\n\n lines.forEach(line => {\n if (line.piecework_line_status_id === 2) {\n totalFinishedLines++;\n }\n });\n if (qty_in === row.out) {\n totalFinishedLines++;\n }\n if (totalFinishedLines === totalLines) {\n isFinished = true;\n }\n\n const user_id = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n ).id;\n const finishObject = finish ? qty_in : 0;\n this.store.dispatch(\n new PieceWorkCollect(\n row.piecework_id,\n qty_in,\n row.id,\n user_id,\n finishObject,\n isFinished\n )\n );\n });\n }\n\n buildBarcodeList(value: string) {\n this.barcodes = value\n .split('\\n')\n .filter(value => value != null && value.length > 0)\n .map(value => value.trim());\n console.log(this.barcodes);\n }\n\n valueChange(field, event) {\n console.log(`valueChange: ${field}, ${event}`);\n\n if (!this.filters.filters) {\n this.filters.filters = [];\n }\n\n const filterExists = this.filters.filters.findIndex(\n (value: FilterDescriptor) => value.field === field\n );\n\n if (filterExists >= 0) {\n this.filters.filters[filterExists].value = event;\n } else {\n this.filters.filters.push({\n operator: 'eq',\n field,\n value: event,\n });\n }\n\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip: 0,\n sort: [{ field: 'id', dir: 'desc' }],\n take: 10,\n filter: this.filters,\n })\n );\n }\n\n filterChange(event) {\n if (event) {\n this.userApi\n .find({\n filter: JSON.stringify({\n limit: 5,\n where: { full_name: { like: `%${event}%` } },\n }),\n })\n .subscribe(_ => {\n this.users = _;\n });\n }\n }\n\n ngOnDestroy() {\n if (this.pieceworkSubscription) {\n this.pieceworkSubscription.unsubscribe();\n }\n if (this.myConfigSubscription) {\n this.myConfigSubscription.unsubscribe();\n }\n if (this.objectSubscription) {\n this.objectSubscription.unsubscribe();\n }\n\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n this.store.dispatch(new ResetStorePieceWork());\n super.destroy();\n }\n\n openInForm(row: PieceWorkLineWithRelations) {\n const dialogRef = this.dialog.open(PieceWorkInForm, {\n width: '40%',\n data: { line: row },\n });\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n const user_id = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n ).id;\n const finish = data.finish ? data.qty_in : 0;\n this.store.dispatch(\n new PieceWorkCollect(\n row.piecework_id,\n data.qty_in,\n row.id,\n user_id,\n finish,\n data.isFinished\n )\n );\n }\n });\n }\n\n changePage(event: PageEvent) {\n const take = event.pageSize;\n const skip = event.pageIndex > 0 ? event.pageIndex * event.pageSize : 0;\n\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip,\n sort: [{ field: 'id', dir: 'desc' }],\n take,\n filter: this.filters,\n })\n );\n }\n\n formatCurrency(value, currency) {\n const region = currency.region;\n const symbol = currency.symbol;\n\n return value\n ? value.toLocaleString(region, { style: 'currency', currency: symbol })\n : 0;\n }\n}\n@Pipe({ name: 'formatTime' })\nexport class FormatTime implements PipeTransform {\n convertTime(input, separator) {\n const pad = input => {\n return input < 10 ? '0' + input : input;\n };\n return [\n pad(Math.floor(input / 3600)),\n pad(Math.floor((input % 3600) / 60)),\n pad(Math.floor(input % 60)),\n ].join(typeof separator !== 'undefined' ? separator : ':');\n }\n\n transform(value: any): any {\n return value ? this.convertTime(value, ':') : '00:00:00';\n }\n}\n","<div fxLayout=\"column\" fxLayoutGap=\"20px\">\n <label *ngIf=\"!item.config?.simple_version\" fxFlex class=\"k-form-field\">\n <form class=\"k-form\" id=\"piecework_in_form\">\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <label fxFlex class=\"k-form-field\">\n <span>Barcode</span>\n <kendo-textarea\n placeholder=\"Scan barcodes here\"\n [resizable]=\"'vertical'\"\n [rows]=\"3\"\n [value]=\"getValue('barcodes', true)\"\n (valueChange)=\"buildBarcodeList($event)\"\n flow=\"vertical\">\n </kendo-textarea>\n </label>\n <button\n fxFlex=\"50px\"\n (click)=\"valueChange('barcodes', barcodes)\"\n matTooltip=\"Filter\"\n [matTooltipPosition]=\"'above'\"\n mat-icon-button\n color=\"primary\"\n aria-label=\"Example icon button with a heart icon\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>PW ID</span>\n <input\n style=\"width: 100%\"\n kendoTextBox\n [value]=\"getValue('piecework_id')\"\n (input)=\"valueChange('piecework_id', $event.target.value)\"\n name=\"piecework_id\"\n type=\"text\" />\n </label>\n\n <!-- <label fxFlex=\"20%\" class=\"k-form-field\">\n <span>Barcode</span>\n <kendo-textarea\n [style.marginBottom.px]=\"10\"\n placeholder=\"Event name\"\n resizable=\"auto\"\n flow=\"horizontal\"\n >\n </kendo-textarea>\n\n <!-- <input\n style=\"width: 100%\"\n kendoTextBox\n [value]=\"getValue('barcode')\"\n (input)=\"valueChange('barcode', $event.target.value)\"\n name=\"barcode\"\n type=\"text\"\n /> -->\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Employee</span>\n <kendo-combobox\n style=\"width: 100%\"\n name=\"user_id\"\n [value]=\"getValue('user_id')\"\n [filterable]=\"true\"\n (filterChange)=\"filterChange($event)\"\n (valueChange)=\"valueChange('user_id', $event)\"\n [data]=\"users\"\n [textField]=\"'full_name'\"\n [disabled]=\"!isAdmin\"\n [valueField]=\"'id'\"\n [valuePrimitive]=\"true\">\n </kendo-combobox>\n </label>\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Mode</span>\n <kendo-dropdownlist\n [defaultItem]=\"defaultItemMode\"\n [data]=\"modes\"\n [value]=\"getValue('mode_id')\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"valueChange('mode_id', $event)\"\n [textField]=\"'controller'\"\n [valueField]=\"'id'\"\n name=\"true\">\n </kendo-dropdownlist>\n </label>\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Status</span>\n <kendo-dropdownlist\n [defaultItem]=\"defaultItemStatus\"\n [data]=\"statuses\"\n [value]=\"getValue('piecework_line_status_id')\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"valueChange('piecework_line_status_id', $event)\"\n [textField]=\"'name'\"\n [valueField]=\"'id'\"\n name=\"true\">\n </kendo-dropdownlist>\n </label>\n </div>\n </form>\n </label>\n\n <mat-table #table [dataSource]=\"dataSource\">\n <ng-container cdkColumnDef=\"pw_line\">\n <mat-header-cell *cdkHeaderCellDef>PW</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.piecework?.id }}/{{ row.piecework_order_line }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"employee\">\n <mat-header-cell *cdkHeaderCellDef>Employee</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row?.piecework?.prepared_for?.full_name }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"document\">\n <mat-header-cell *cdkHeaderCellDef>Document</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.document?.barcode }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"assembly\">\n <mat-header-cell *cdkHeaderCellDef>Assembly</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.part?.part_number }}</span>\n </mat-cell>\n </ng-container>\n <!-- <ng-container cdkColumnDef=\"qty_max\">\n <mat-header-cell *cdkHeaderCellDef>Qty</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ getMaxQtyLeftForRow(row)}}</span>\n </mat-cell>\n </ng-container> -->\n <ng-container cdkColumnDef=\"mode\">\n <mat-header-cell *cdkHeaderCellDef>Mode</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.mode?.controller }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"unit_price\">\n <mat-header-cell *cdkHeaderCellDef>Unit Price</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ formatCurrency(row.unit_price, row.currency) }}\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"percentage\">\n <mat-header-cell *cdkHeaderCellDef>Job %</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.work_percentage | percent }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"qty\">\n <mat-header-cell *cdkHeaderCellDef>Out / In</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.out }} / {{ !row.in ? 0 : row.in }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"in\">\n <mat-header-cell *cdkHeaderCellDef>Qty In</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ !row.in ? 0 : row.in }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"finish\">\n <mat-header-cell *cdkHeaderCellDef>Qty Finish</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.finish }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"status\">\n <mat-header-cell *cdkHeaderCellDef>Status</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.line_status?.name }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"total\">\n <mat-header-cell *cdkHeaderCellDef>Total</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ formatCurrency(row.value, row.currency) }}</span>\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"actions\">\n <mat-header-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkHeaderCellDef\n >Actions</mat-header-cell\n >\n <mat-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkCellDef=\"let row\">\n <ng-container *ngIf=\"row.piecework_line_status_id == 1\">\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n [(ngModel)]=\"row.formIn\"\n [name]=\"'in_' + row.id\"\n [max]=\"getMax(row)\"\n type=\"number\"></kendo-numerictextbox>\n <mat-checkbox\n matTooltip=\"Finish\"\n [matTooltipPosition]=\"'above'\"\n fxFlexAlign=\"center\"\n [name]=\"'finish_' + row.id\"\n [(ngModel)]=\"row.formFinish\">\n </mat-checkbox>\n <button\n [disabled]=\"row.in == row.out || row.formIn > row.out - row.in\"\n matTooltip=\"Save\"\n (click)=\"registerIn(row, row.formIn, row.formFinish)\"\n [matTooltipPosition]=\"'above'\"\n mat-icon-button\n color=\"warn\"\n aria-label=\"Example icon button with a heart icon\">\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"row.piecework_line_status_id == 2\">\n <span>Line finished</span>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *cdkHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *cdkRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n <mat-paginator\n #paginator\n [length]=\"total$ | async\"\n [pageIndex]=\"0\"\n (page)=\"changePage($event)\"\n [pageSize]=\"10\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\">\n </mat-paginator>\n</div>\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { NgxsModule } from '@ngxs/store';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { InputsModule, SwitchModule } from '@progress/kendo-angular-inputs';\nimport { DynamicComponentLoaderModule } from '@barcoding/gridster-core';\nimport { PieceWorkState } from '@barcoding/frontend-core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n FormatTime,\n WidgetPieceworkInComponent,\n} from './widget-piecework-in.component';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [\n WidgetPieceworkInComponent,\n FormatTime,\n PieceWorkInForm,\n PieceworkInConfigModal,\n ],\n imports: [\n CommonModule,\n FlexLayoutModule,\n MatDialogModule,\n CdkTableModule,\n MatTableModule,\n MatButtonModule,\n MatCheckboxModule,\n MatPaginatorModule,\n MatIconModule,\n FormsModule,\n InputsModule,\n MatTooltipModule,\n DropDownsModule,\n InputsModule,\n FormsModule,\n SwitchModule,\n NgxsModule.forFeature([PieceWorkFrontState, PieceWorkState]),\n DynamicComponentLoaderModule.forChild(WidgetPieceworkInComponent),\n ],\n exports: [WidgetPieceworkInComponent],\n})\nexport class WidgetPieceworkInModule {}\n","/*\n * Public API Surface of widget-piecework-in\n */\n\nexport * from './lib/widget-piecework-in.component';\nexport * from './lib/widget-piecework-in.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i9","i2","i3","i4","i5","i1","i6","i7","i8","i10","i13"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"barcoding-widget-piecework-in.mjs","sources":["../../src/lib/piece-work-in-form/piece-work-in-form.component.ts","../../src/lib/piece-work-in-form/piece-work-in-form.component.html","../../src/lib/config/config.component.ts","../../src/lib/config/modal.html","../../src/lib/widget-piecework-in.component.ts","../../src/lib/widget-piecework-in.component.html","../../src/lib/widget-piecework-in.module.ts","../../src/public-api.ts","../../src/barcoding-widget-piecework-in.ts"],"sourcesContent":["import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormControl, Validators, FormGroup } from '@angular/forms';\nimport { FocusService } from '@barcoding/frontend-core';\nimport {\n FaultCategoryControllerService,\n FaultControllerService,\n FaultsCategoryWithRelations,\n FaultWithRelations,\n PieceWorkLineWithRelations,\n SessionWithRelations,\n User,\n UserControllerService,\n UserWithRelations,\n} from '@barcoding/sdk';\nimport { Store } from '@ngxs/store';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkLineControllerService } from '@barcoding/sdk';\n\n@Component({\n selector: 'piece-work-in-form',\n styles: [\n `\n kendo-textbox-container {\n width: 100%;\n }\n\n .h_t {\n font: normal normal normal 10px/40px IBM Plex Sans;\n letter-spacing: 0px;\n color: #666666;\n opacity: 1;\n }\n\n .v_t {\n font: normal normal normal 18px/40px IBM Plex Sans;\n letter-spacing: 0px;\n color: #666666;\n opacity: 1;\n }\n\n .spacer {\n display: flex;\n flex-grow: 1;\n }\n `,\n ],\n templateUrl: 'piece-work-in-form.component.html',\n})\nexport class PieceWorkInForm implements OnInit, OnDestroy {\n line: PieceWorkLineWithRelations;\n public finish = false;\n public qty_in = 0;\n constructor(\n private focusService: FocusService,\n private pieceWorkLineApi: PieceWorkLineControllerService,\n public dialogRef: MatDialogRef<PieceWorkInForm>,\n private store: Store,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.line = Object.assign({}, data.line);\n this.qty_in = this.line.out - this.line.in;\n }\n\n ngOnInit() {\n this.focusService.unFocus();\n }\n\n ngOnDestroy() {\n this.focusService.setFocus();\n }\n cancel() {\n this.dialogRef.close();\n }\n\n save(qty_in, finish) {\n this.pieceWorkLineApi\n .find({\n filter: JSON.stringify({\n where: { piecework_id: this.line.piecework_id },\n }),\n })\n .subscribe(lines => {\n let isFinished = false;\n const totalLines = lines.length;\n let totalFinishedLines = 0;\n\n lines.forEach(line => {\n if (line.piecework_line_status_id === 2) {\n totalFinishedLines++;\n }\n });\n if (qty_in === this.line.out) {\n totalFinishedLines++;\n }\n if (totalFinishedLines === totalLines) {\n isFinished = true;\n }\n\n this.dialogRef.close({\n qty_in,\n finish,\n isFinished,\n });\n });\n }\n}\n","<div fxLayout=\"column\" style=\"width: 100%\" fxLayoutAlign=\" none\">\n <h4>Piece Work</h4>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Assembly Name</span>\n <span class=\"v_t\">{{ line.part?.part_number }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Mode</span>\n <span class=\"v_t\">{{ line.mode?.controller }}</span>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <span class=\"h_t\">Allocated Time</span>\n <span class=\"v_t\">--</span>\n </div>\n </div>\n <form class=\"k-form\" autocomplete=\"off\" #pieceWork=\"ngForm\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start start\" fxLayoutGap=\"20px\">\n <kendo-floatinglabel fxFlex=\"80%\" text=\"Qty\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n required\n [(ngModel)]=\"qty_in\"\n [name]=\"'in'\"\n [max]=\"line.out\"\n type=\"number\"></kendo-numerictextbox>\n </kendo-floatinglabel>\n <mat-checkbox fxFlexAlign=\"center\" name=\"finish\" [(ngModel)]=\"finish\">\n Finish\n </mat-checkbox>\n </div>\n </form>\n</div>\n<div\n style=\"margin-top: 25px\"\n fxLayoutGap=\"10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"end none\">\n <button (click)=\"cancel()\" mat-raised-button class=\"t_btn cancel\">\n Cancel\n </button>\n <button\n (click)=\"save(qty_in, finish)\"\n [disabled]=\"!pieceWork.valid\"\n mat-raised-button\n class=\"t_btn success\">\n Save\n </button>\n</div>\n","import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport {\n ExternalDashboardControllerService,\n ExternalDashboardWithRelations,\n} from '@barcoding/sdk';\n@Component({\n selector: 'assignmentFormDialog',\n templateUrl: 'modal.html',\n styleUrls: ['./style.css'],\n})\nexport class PieceworkInConfigModal implements OnInit {\n public config: any = {};\n constructor(\n public dialogRef: MatDialogRef<PieceworkInConfigModal>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {\n this.config = Object.assign({}, data.currentConfig);\n }\n\n ngOnInit() {}\n\n save(config) {\n this.dialogRef.close(config);\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}\n","<form class=\"k-form\" autocomplete=\"off\" #configForm=\"ngForm\">\n <div fxLayout=\"column\" fxLayoutAlign=\"space-between none\">\n <div fxLayout=\"column\" fxLayoutAlign=\" stretch\">\n <fieldset>\n <legend>Main</legend>\n <label fxFlex class=\"k-form-field\">\n <span>Current User</span>\n <kendo-switch\n name=\"current_user\"\n [(ngModel)]=\"config.current_user\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"></kendo-switch>\n </label>\n <label fxFlex class=\"k-form-field\">\n <span>Simple Version</span>\n <kendo-switch\n name=\"simple_version\"\n [(ngModel)]=\"config.simple_version\"\n [onLabel]=\"'Yes'\"\n [offLabel]=\"'No'\"></kendo-switch>\n </label>\n </fieldset>\n </div>\n\n <div\n fxLayoutGap=\"20px\"\n style=\"margin-top: 10px\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-around end\">\n <button\n fxFlex\n (click)=\"onNoClick()\"\n mat-raised-button\n class=\"t_btn cancel\">\n Cancel\n </button>\n <button\n fxFlex\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save(config)\"\n class=\"t_btn success\"\n mat-raised-button>\n Save\n </button>\n </div>\n </div>\n</form>\n","import {\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Select, Store } from '@ngxs/store';\nimport {\n ConfigInterfaceDashboard,\n WidgetInterface,\n WidgetParams,\n} from '@barcoding/gridster-core';\nimport {\n ModeAccessViewWithRelations,\n ModeControllerService,\n ModeWithRelations,\n ModuleWithRelations,\n PieceWorkLineControllerService,\n PieceWorkLineStatusControllerControllerService,\n PieceWorkLineStatusWithRelations,\n PieceWorkLineWithRelations,\n PieceworkTransactionStatusControllerService,\n PieceworkTransactionStatusWithRelations,\n PieceWorkWithRelations,\n UserControllerService,\n UserWithRelations,\n WidgetConfigWithRelations,\n} from '@barcoding/sdk';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport {\n ResetStorePieceWork,\n FindPieceWorkEmployee,\n} from '@barcoding/module-piecework';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthState } from '@barcoding/auth-core';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n ChangeStatePieceWork,\n isMode,\n ModeState,\n PieceWorkState,\n PieceWorkCollect,\n} from '@barcoding/frontend-core';\nimport { ModuleState } from '@barcoding/core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport {\n CompositeFilterDescriptor,\n FilterDescriptor,\n} from '@progress/kendo-data-query';\nimport { DataStateChangeEvent } from '@progress/kendo-angular-grid';\nimport { PageEvent } from '@angular/material/paginator';\n\nexport interface PieceWorkInFilters {\n pw_id?: number;\n document?: string;\n user?: UserWithRelations;\n mode?: ModeWithRelations;\n status?: PieceWorkLineStatusWithRelations;\n}\n\n@Component({\n selector: 'widget-piece-work-in',\n styleUrls: ['./widget-piecework-in.component.scss'],\n templateUrl: './widget-piecework-in.component.html',\n})\nexport class WidgetPieceworkInComponent\n extends ConfigInterfaceDashboard\n implements OnInit, OnDestroy, WidgetInterface\n{\n public configChanged$: Subject<any> = new Subject<any>();\n public myConfigSubscription: Subscription;\n public isAdmin = false;\n public item: WidgetConfigWithRelations;\n public params: WidgetParams;\n public filters: any = {\n logic: 'and',\n filters: [\n {\n field: 'piecework_line_status_id',\n value: 1,\n },\n ],\n };\n displayedColumnsOrg = [\n 'pw_line',\n 'employee',\n 'document',\n 'assembly',\n 'mode',\n 'unit_price',\n 'percentage',\n 'qty',\n 'in',\n 'finish',\n 'total',\n 'status',\n ];\n displayedColumns = [\n 'pw_line',\n 'employee',\n 'document',\n 'assembly',\n 'mode',\n 'unit_price',\n 'percentage',\n 'qty',\n 'in',\n 'finish',\n 'total',\n 'status',\n ]; // column display value\n displayedColumnsSimple = [\n 'employee',\n 'document',\n 'assembly',\n 'finish',\n 'total',\n ]; // column display value\n dataSource: MatTableDataSource<any>;\n @Select(PieceWorkState.pieceworks) pieceworks$: Observable<\n PieceWorkLineWithRelations[]\n >;\n @Select(PieceWorkState.total) total$: Observable<number>;\n\n public pieceworkSubscription: Subscription;\n public employee = null;\n public status = 1;\n public object;\n public barcodes: Array<string> = [];\n public users: UserWithRelations[] = [];\n public objectSubscription: Subscription;\n public statuses: PieceWorkLineStatusWithRelations[] = [];\n public currentUserConfig;\n public state: Observable<any>;\n public stateSubscription: Subscription;\n @Select(PieceWorkState.state) state$: Observable<DataStateChangeEvent>;\n public modes: ModeWithRelations[] = [];\n public defaultItemMode: any = { id: null, controller: 'Show all...' };\n public defaultItemStatus: any = { id: null, name: 'Show all...' };\n\n constructor(\n public modeApi: ModeControllerService,\n private userApi: UserControllerService,\n public store: Store,\n private cdr: ChangeDetectorRef,\n public dialog: MatDialog,\n private statusesApi: PieceWorkLineStatusControllerControllerService,\n private pieceWorkLineApi: PieceWorkLineControllerService\n ) {\n super(dialog, PieceworkInConfigModal, store, '60%');\n }\n\n getValue(field: string, isMultiLine = false) {\n if (!this.filters) {\n return null;\n }\n\n if (!this.filters.filters) {\n return null;\n }\n const data: any = this.filters.filters.find(\n (value: FilterDescriptor) => value.field === field\n );\n\n if (isMultiLine) {\n if (data && data.value && data.value.length) {\n return data.value.join('\\n');\n }\n }\n\n return data ? data.value : '';\n }\n ngOnInit() {\n this.modeApi\n .find({ filter: JSON.stringify({ where: { is_piecework: true } }) })\n .subscribe(_ => {\n this.modes = _;\n });\n\n this.statusesApi.find().subscribe(_ => {\n this.statuses = _;\n });\n const currentUser = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n );\n // example of default filter on start\n // this.filters.filters.push({\n // operator: 'eq',\n // field: 'piecework_id',\n // value: 200,\n // });\n // this.store.dispatch(\n // new ChangeStatePieceWork({\n // skip: 0,\n // sort: [{ field: 'id', dir: 'desc' }],\n // take: 10,\n // filter: this.filters,\n // })\n // );\n this.stateSubscription = this.state$.subscribe(_ => {\n if (_.filter) {\n this.filters = _.filter;\n }\n });\n\n const mode = this.store.selectSnapshot<ModeAccessViewWithRelations | {}>(\n ModeState.mode\n );\n\n const currentModule = this.store.selectSnapshot<ModuleWithRelations>(\n ModuleState.module\n );\n\n if (currentModule) {\n const isAdmin = currentUser.groups.find(\n value => value.module_group_id === currentModule.admin_group_id\n );\n if (isAdmin) {\n this.isAdmin = true;\n }\n }\n\n if (mode && isMode(mode)) {\n const isAdminMode = currentUser.groups.find(\n value => value.module_group_id === mode.admin_group_id\n );\n const isModeratorMode = currentUser.groups.find(\n value => value.module_group_id === mode.moderator_group_id\n );\n\n if (isModeratorMode || isAdminMode) {\n this.isAdmin = true;\n }\n }\n\n const currentUserConfig =\n this.item.config && this.item.config.current_user ? true : false;\n if (currentUserConfig) {\n this.isAdmin = false;\n }\n\n if (!this.isAdmin) {\n const currentUser = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n );\n\n this.users.push(currentUser);\n let filters: any = {};\n\n if (this.item.config.simple_version) {\n this.displayedColumns = this.displayedColumnsSimple.slice();\n filters = {\n logic: 'and',\n filters: [\n {\n field: 'user_id',\n value: currentUser.id,\n },\n {\n field: 'piecework_line_status_id',\n value: 2,\n },\n ],\n };\n } else {\n filters = {\n logic: 'and',\n filters: [\n {\n field: 'piecework_line_status_id',\n value: 1,\n },\n {\n field: 'user_id',\n value: currentUser.id,\n },\n ],\n };\n }\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip: 0,\n sort: [{ field: 'id', dir: 'desc' }],\n take: 20,\n filter: filters,\n })\n );\n }\n\n if (this.isAdmin) {\n this.displayedColumns = [\n 'pw_line',\n 'employee',\n 'document',\n 'mode',\n 'percentage',\n 'qty',\n 'finish',\n 'total',\n 'status',\n 'actions',\n ]; // column display value\n }\n\n /**\n * example set filter outside\n */\n // setTimeout(() => {\n // const filters: CompositeFilterDescriptor = {\n // logic: 'and',\n // filters: [\n // {\n // operator: 'eq',\n // field: 'piecework_id',\n // value: 202,\n // },\n // ],\n // };\n // this.store.dispatch(\n // new ChangeStatePieceWork({\n // skip: 0,\n // sort: [{ field: 'id', dir: 'desc' }],\n // take: 10,\n // filter: filters,\n // })\n // );\n // }, 8000);\n\n this.pieceworkSubscription = this.pieceworks$.subscribe(_ => {\n const data = _.map(value => {\n return {\n ...value,\n formIn: value.out - value.in,\n };\n });\n this.dataSource = new MatTableDataSource(data);\n });\n }\n\n getMax(row: PieceWorkLineWithRelations) {\n return row.out - row.in;\n }\n\n registerIn(row: PieceWorkLineWithRelations, qty_in: number, finish) {\n this.pieceWorkLineApi\n .find({\n filter: JSON.stringify({\n where: { piecework_id: row.piecework_id },\n }),\n })\n .subscribe(lines => {\n let isFinished = false;\n const totalLines = lines.length;\n let totalFinishedLines = 0;\n\n lines.forEach(line => {\n if (line.piecework_line_status_id === 2) {\n totalFinishedLines++;\n }\n });\n if (qty_in === row.out) {\n totalFinishedLines++;\n }\n if (totalFinishedLines === totalLines) {\n isFinished = true;\n }\n\n const user_id = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n ).id;\n const finishObject = finish ? qty_in : 0;\n this.store.dispatch(\n new PieceWorkCollect(\n row.piecework_id,\n qty_in,\n row.id,\n user_id,\n finishObject,\n isFinished\n )\n );\n });\n }\n\n buildBarcodeList(value: string) {\n this.barcodes = value\n .split('\\n')\n .filter(value => value != null && value.length > 0)\n .map(value => value.trim());\n }\n\n valueChange(field, event) {\n if (!this.filters.filters) {\n this.filters.filters = [];\n }\n\n const filterExists = this.filters.filters.findIndex(\n (value: FilterDescriptor) => value.field === field\n );\n\n if (filterExists >= 0) {\n this.filters.filters[filterExists].value = event;\n } else {\n this.filters.filters.push({\n operator: 'eq',\n field,\n value: event,\n });\n }\n\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip: 0,\n sort: [{ field: 'id', dir: 'desc' }],\n take: 10,\n filter: this.filters,\n })\n );\n }\n\n filterChange(event) {\n if (event) {\n this.userApi\n .find({\n filter: JSON.stringify({\n limit: 5,\n where: { full_name: { like: `%${event}%` } },\n }),\n })\n .subscribe(_ => {\n this.users = _;\n });\n }\n }\n\n ngOnDestroy() {\n if (this.pieceworkSubscription) {\n this.pieceworkSubscription.unsubscribe();\n }\n if (this.myConfigSubscription) {\n this.myConfigSubscription.unsubscribe();\n }\n if (this.objectSubscription) {\n this.objectSubscription.unsubscribe();\n }\n\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n this.store.dispatch(new ResetStorePieceWork());\n super.destroy();\n }\n\n openInForm(row: PieceWorkLineWithRelations) {\n const dialogRef = this.dialog.open(PieceWorkInForm, {\n width: '40%',\n data: { line: row },\n });\n dialogRef.afterClosed().subscribe(data => {\n if (data) {\n const user_id = this.store.selectSnapshot<UserWithRelations>(\n AuthState.user\n ).id;\n const finish = data.finish ? data.qty_in : 0;\n this.store.dispatch(\n new PieceWorkCollect(\n row.piecework_id,\n data.qty_in,\n row.id,\n user_id,\n finish,\n data.isFinished\n )\n );\n }\n });\n }\n\n changePage(event: PageEvent) {\n const take = event.pageSize;\n const skip = event.pageIndex > 0 ? event.pageIndex * event.pageSize : 0;\n\n this.store.dispatch(\n new ChangeStatePieceWork({\n skip,\n sort: [{ field: 'id', dir: 'desc' }],\n take,\n filter: this.filters,\n })\n );\n }\n\n formatCurrency(value, currency) {\n const region = currency.region;\n const symbol = currency.symbol;\n\n return value\n ? value.toLocaleString(region, { style: 'currency', currency: symbol })\n : 0;\n }\n}\n@Pipe({ name: 'formatTime' })\nexport class FormatTime implements PipeTransform {\n convertTime(input, separator) {\n const pad = input => {\n return input < 10 ? '0' + input : input;\n };\n return [\n pad(Math.floor(input / 3600)),\n pad(Math.floor((input % 3600) / 60)),\n pad(Math.floor(input % 60)),\n ].join(typeof separator !== 'undefined' ? separator : ':');\n }\n\n transform(value: any): any {\n return value ? this.convertTime(value, ':') : '00:00:00';\n }\n}\n","<div fxLayout=\"column\" fxLayoutGap=\"20px\">\n <label *ngIf=\"!item.config?.simple_version\" fxFlex class=\"k-form-field\">\n <form class=\"k-form\" id=\"piecework_in_form\">\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <label fxFlex class=\"k-form-field\">\n <span>Barcode</span>\n <kendo-textarea\n placeholder=\"Scan barcodes here\"\n [resizable]=\"'vertical'\"\n [rows]=\"3\"\n [value]=\"getValue('barcodes', true)\"\n (valueChange)=\"buildBarcodeList($event)\"\n flow=\"vertical\">\n </kendo-textarea>\n </label>\n <button\n fxFlex=\"50px\"\n (click)=\"valueChange('barcodes', barcodes)\"\n matTooltip=\"Filter\"\n [matTooltipPosition]=\"'above'\"\n mat-icon-button\n color=\"primary\"\n aria-label=\"Example icon button with a heart icon\">\n <mat-icon>refresh</mat-icon>\n </button>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>PW ID</span>\n <input\n style=\"width: 100%\"\n kendoTextBox\n [value]=\"getValue('piecework_id')\"\n (input)=\"valueChange('piecework_id', $event.target.value)\"\n name=\"piecework_id\"\n type=\"text\" />\n </label>\n\n <!-- <label fxFlex=\"20%\" class=\"k-form-field\">\n <span>Barcode</span>\n <kendo-textarea\n [style.marginBottom.px]=\"10\"\n placeholder=\"Event name\"\n resizable=\"auto\"\n flow=\"horizontal\"\n >\n </kendo-textarea>\n\n <!-- <input\n style=\"width: 100%\"\n kendoTextBox\n [value]=\"getValue('barcode')\"\n (input)=\"valueChange('barcode', $event.target.value)\"\n name=\"barcode\"\n type=\"text\"\n /> -->\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Employee</span>\n <kendo-combobox\n style=\"width: 100%\"\n name=\"user_id\"\n [value]=\"getValue('user_id')\"\n [filterable]=\"true\"\n (filterChange)=\"filterChange($event)\"\n (valueChange)=\"valueChange('user_id', $event)\"\n [data]=\"users\"\n [textField]=\"'full_name'\"\n [disabled]=\"!isAdmin\"\n [valueField]=\"'id'\"\n [valuePrimitive]=\"true\">\n </kendo-combobox>\n </label>\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Mode</span>\n <kendo-dropdownlist\n [defaultItem]=\"defaultItemMode\"\n [data]=\"modes\"\n [value]=\"getValue('mode_id')\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"valueChange('mode_id', $event)\"\n [textField]=\"'controller'\"\n [valueField]=\"'id'\"\n name=\"true\">\n </kendo-dropdownlist>\n </label>\n\n <label fxFlex=\"25%\" class=\"k-form-field\">\n <span>Status</span>\n <kendo-dropdownlist\n [defaultItem]=\"defaultItemStatus\"\n [data]=\"statuses\"\n [value]=\"getValue('piecework_line_status_id')\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"valueChange('piecework_line_status_id', $event)\"\n [textField]=\"'name'\"\n [valueField]=\"'id'\"\n name=\"true\">\n </kendo-dropdownlist>\n </label>\n </div>\n </form>\n </label>\n\n <mat-table #table [dataSource]=\"dataSource\">\n <ng-container cdkColumnDef=\"pw_line\">\n <mat-header-cell *cdkHeaderCellDef>PW</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.piecework?.id }}/{{ row.piecework_order_line }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"employee\">\n <mat-header-cell *cdkHeaderCellDef>Employee</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row?.piecework?.prepared_for?.full_name }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"document\">\n <mat-header-cell *cdkHeaderCellDef>Document</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.document?.barcode }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"assembly\">\n <mat-header-cell *cdkHeaderCellDef>Assembly</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.part?.part_number }}</span>\n </mat-cell>\n </ng-container>\n <!-- <ng-container cdkColumnDef=\"qty_max\">\n <mat-header-cell *cdkHeaderCellDef>Qty</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ getMaxQtyLeftForRow(row)}}</span>\n </mat-cell>\n </ng-container> -->\n <ng-container cdkColumnDef=\"mode\">\n <mat-header-cell *cdkHeaderCellDef>Mode</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ row.mode?.controller }}</span>\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"unit_price\">\n <mat-header-cell *cdkHeaderCellDef>Unit Price</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ formatCurrency(row.unit_price, row.currency) }}\n </mat-cell>\n </ng-container>\n <ng-container cdkColumnDef=\"percentage\">\n <mat-header-cell *cdkHeaderCellDef>Job %</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.work_percentage | percent }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"qty\">\n <mat-header-cell *cdkHeaderCellDef>Out / In</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.out }} / {{ !row.in ? 0 : row.in }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"in\">\n <mat-header-cell *cdkHeaderCellDef>Qty In</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ !row.in ? 0 : row.in }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"finish\">\n <mat-header-cell *cdkHeaderCellDef>Qty Finish</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.finish }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"status\">\n <mat-header-cell *cdkHeaderCellDef>Status</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n {{ row.line_status?.name }}\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"total\">\n <mat-header-cell *cdkHeaderCellDef>Total</mat-header-cell>\n <mat-cell *cdkCellDef=\"let row\">\n <span>{{ formatCurrency(row.value, row.currency) }}</span>\n </mat-cell>\n </ng-container>\n\n <ng-container cdkColumnDef=\"actions\">\n <mat-header-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkHeaderCellDef\n >Actions</mat-header-cell\n >\n <mat-cell [ngClass]=\"'pieceworkActionColumn'\" *cdkCellDef=\"let row\">\n <ng-container *ngIf=\"row.piecework_line_status_id == 1\">\n <div fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"start center\">\n <kendo-numerictextbox\n [format]=\"'n0'\"\n style=\"width: 100%\"\n [min]=\"1\"\n [(ngModel)]=\"row.formIn\"\n [name]=\"'in_' + row.id\"\n [max]=\"getMax(row)\"\n type=\"number\"></kendo-numerictextbox>\n <mat-checkbox\n matTooltip=\"Finish\"\n [matTooltipPosition]=\"'above'\"\n fxFlexAlign=\"center\"\n [name]=\"'finish_' + row.id\"\n [(ngModel)]=\"row.formFinish\">\n </mat-checkbox>\n <button\n [disabled]=\"row.in == row.out || row.formIn > row.out - row.in\"\n matTooltip=\"Save\"\n (click)=\"registerIn(row, row.formIn, row.formFinish)\"\n [matTooltipPosition]=\"'above'\"\n mat-icon-button\n color=\"warn\"\n aria-label=\"Example icon button with a heart icon\">\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"row.piecework_line_status_id == 2\">\n <span>Line finished</span>\n </ng-container>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *cdkHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *cdkRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n <mat-paginator\n #paginator\n [length]=\"total$ | async\"\n [pageIndex]=\"0\"\n (page)=\"changePage($event)\"\n [pageSize]=\"10\"\n [pageSizeOptions]=\"[5, 10, 25, 100]\">\n </mat-paginator>\n</div>\n","import { CdkTableModule } from '@angular/cdk/table';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\nimport { PieceWorkFrontState } from '@barcoding/module-piecework';\nimport { NgxsModule } from '@ngxs/store';\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\nimport { InputsModule, SwitchModule } from '@progress/kendo-angular-inputs';\nimport { DynamicComponentLoaderModule } from '@barcoding/gridster-core';\nimport { PieceWorkState } from '@barcoding/frontend-core';\nimport { PieceworkInConfigModal } from './config/config.component';\nimport { PieceWorkInForm } from './piece-work-in-form/piece-work-in-form.component';\nimport {\n FormatTime,\n WidgetPieceworkInComponent,\n} from './widget-piecework-in.component';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [\n WidgetPieceworkInComponent,\n FormatTime,\n PieceWorkInForm,\n PieceworkInConfigModal,\n ],\n imports: [\n CommonModule,\n FlexLayoutModule,\n MatDialogModule,\n CdkTableModule,\n MatTableModule,\n MatButtonModule,\n MatCheckboxModule,\n MatPaginatorModule,\n MatIconModule,\n FormsModule,\n InputsModule,\n MatTooltipModule,\n DropDownsModule,\n InputsModule,\n FormsModule,\n SwitchModule,\n NgxsModule.forFeature([PieceWorkFrontState, PieceWorkState]),\n DynamicComponentLoaderModule.forChild(WidgetPieceworkInComponent),\n ],\n exports: [WidgetPieceworkInComponent],\n})\nexport class WidgetPieceworkInModule {}\n","/*\n * Public API Surface of widget-piecework-in\n */\n\nexport * from './lib/widget-piecework-in.component';\nexport * from './lib/widget-piecework-in.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i9","i2","i3","i4","i5","i1","i6","i7","i8","i10","i13"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barcoding/widget-piecework-in",
|
|
3
|
-
"version": "4.67.
|
|
3
|
+
"version": "4.67.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "16.2.12",
|
|
6
6
|
"@angular/core": "16.2.12"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@barcoding/backend-core": "^4.67.
|
|
10
|
-
"@barcoding/core": "^4.67.
|
|
11
|
-
"@barcoding/module-piecework": "^4.67.
|
|
12
|
-
"@barcoding/sdk": "^4.67.
|
|
9
|
+
"@barcoding/backend-core": "^4.67.1",
|
|
10
|
+
"@barcoding/core": "^4.67.1",
|
|
11
|
+
"@barcoding/module-piecework": "^4.67.1",
|
|
12
|
+
"@barcoding/sdk": "^4.67.1",
|
|
13
13
|
"tslib": "^2.2.0"
|
|
14
14
|
},
|
|
15
15
|
"gitHead": "4f52009598144e40803bdd80b3cbb2b0728b380d",
|