@carefirst/library 2.0.28 → 2.0.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -51,6 +51,7 @@ export const iconsC = [
51
51
  'close-box',
52
52
  'speech-bubble',
53
53
  'camera-switch',
54
+ 'retry',
54
55
  ];
55
56
  export const iconColorC = ['primary', 'secondary', 'success', 'warning', 'error', 'white', 'accent'];
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2ludGVyZmFjZXMvaWNvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE1BQU07SUFDTixLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULE9BQU87SUFDUCxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osTUFBTTtJQUNOLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLGNBQWM7SUFDZCxZQUFZO0lBQ1osS0FBSztJQUNMLFFBQVE7SUFDUixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLDRCQUE0QjtJQUM1Qix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE1BQU07SUFDTixXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7Q0FDUCxDQUFDO0FBT1gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBAaW50ZXJmYWNlICAgICBJY29uc1RcbiAqIEBkZXNjcmlwdGlvbiAgIFNob3J0IGRlc2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBpY29uc0MgPSBbXG4gICdob21lJyxcbiAgJ2NvZycsXG4gICdwcm9maWxlJyxcbiAgJ3NjYW4nLFxuICAncGVyc29uJyxcbiAgJ2FwcG9pbnRtZW50JyxcbiAgJ2Nsb2NrJyxcbiAgJ2NhbGVuZGFyJyxcbiAgJ2VtYWlsJyxcbiAgJ3Bob25lJyxcbiAgJ3NpZ24tb3V0JyxcbiAgJ3NpZ24taW4nLFxuICAnY2xvc2UnLFxuICAnY2hlY2stbWFyaycsXG4gICdyYXRpbmctc3Rhci1ibGFuaycsXG4gICdyYXRpbmctc3Rhci1maWxsZWQnLFxuICAnYmFjay1hcnJvdycsXG4gICdsb2NrJyxcbiAgJ3Nob3ctcGFzc3dvcmQnLFxuICAnaGlkZS1wYXNzd29yZCcsXG4gICdjaXJjbGUtY2hlY2snLFxuICAnY2lyY2xlLWFsZXJ0JyxcbiAgJ2RpcmVjdGlvbi1zd2l0Y2gnLFxuICAnZGlyZWN0aW9uLXN3aXRjaC1ibG9jaycsXG4gICdjaGF0LWJ1YmJsZXMnLFxuICAncGhvbmUtZG93bicsXG4gICdtaWMnLFxuICAnbm8tbWljJyxcbiAgJ2J1dHRvbi1mb3J3YXJkLWFycm93JyxcbiAgJ2J1dHRvbi1jaGVjay1ib3gnLFxuICAnc29jaWFsLW1lZGlhLXdoYXRzYXBwJyxcbiAgJ3NvY2lhbC1tZWRpYS1mYWNlYm9vaycsXG4gICdzb2NpYWwtbWVkaWEtbGlua2VkaW4nLFxuICAnc29jaWFsLW1lZGlhLWluc3RhZ3JhbScsXG4gICdzb2NpYWwtbWVkaWEtZ29vZ2xlLW1haWwnLFxuICAnaW5zdGFudC12aWRlby1zZXJ2aWNlJyxcbiAgJ2luc3RhbnQtdGVsZXBob25pYy1zZXJ2aWNlJyxcbiAgJ3NjaGVkdWxlZC12aWRlby1zZXJ2aWNlJyxcbiAgJ3NjaGVkdWxlZC10ZWxlcGhvbmljLXNlcnZpY2UnLFxuICAndml0YWwtc2Nhbi1zZXJ2aWNlJyxcbiAgJ29wZW4tYmFjay1hcnJvdycsXG4gICdvcGVuLWZvcndhcmQtYXJyb3cnLFxuICAnb3Blbi11cC1hcnJvdycsXG4gICdvcGVuLWRvd24tYXJyb3cnLFxuICAnc2luZ2xlLWRvY3VtZW50JyxcbiAgJ2xpZ2h0bmluZycsXG4gICdtaWNyb3NvZnQtMzY1JyxcbiAgJ3VzZXItZGVwZW5kZW50JyxcbiAgJ3BsdXMnLFxuICAnY2xvc2UtYm94JyxcbiAgJ3NwZWVjaC1idWJibGUnLFxuICAnY2FtZXJhLXN3aXRjaCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWNvbnNUID0gKHR5cGVvZiBpY29uc0MpW251bWJlcl07XG5cbi8qKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEBpbnRlcmZhY2UgICAgIEljb25Db2xvclRcbiAqIEBkZXNjcmlwdGlvbiAgIEFsbCBhdmFpbGFibGUgY29sb3JzIGluIENTUyBjbGFzc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBpY29uQ29sb3JDID0gWydwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnLCAnZXJyb3InLCAnd2hpdGUnLCAnYWNjZW50J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJY29uQ29sb3JUID0gKHR5cGVvZiBpY29uQ29sb3JDKVtudW1iZXJdO1xuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL2ludGVyZmFjZXMvaWNvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE1BQU07SUFDTixLQUFLO0lBQ0wsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsYUFBYTtJQUNiLE9BQU87SUFDUCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87SUFDUCxVQUFVO0lBQ1YsU0FBUztJQUNULE9BQU87SUFDUCxZQUFZO0lBQ1osbUJBQW1CO0lBQ25CLG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osTUFBTTtJQUNOLGVBQWU7SUFDZixlQUFlO0lBQ2YsY0FBYztJQUNkLGNBQWM7SUFDZCxrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLGNBQWM7SUFDZCxZQUFZO0lBQ1osS0FBSztJQUNMLFFBQVE7SUFDUixzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ2xCLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLDRCQUE0QjtJQUM1Qix5QkFBeUI7SUFDekIsOEJBQThCO0lBQzlCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLE1BQU07SUFDTixXQUFXO0lBQ1gsZUFBZTtJQUNmLGVBQWU7SUFDZixPQUFPO0NBQ0MsQ0FBQztBQU9YLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQGludGVyZmFjZSAgICAgSWNvbnNUXG4gKiBAZGVzY3JpcHRpb24gICBTaG9ydCBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgY29uc3QgaWNvbnNDID0gW1xuICAnaG9tZScsXG4gICdjb2cnLFxuICAncHJvZmlsZScsXG4gICdzY2FuJyxcbiAgJ3BlcnNvbicsXG4gICdhcHBvaW50bWVudCcsXG4gICdjbG9jaycsXG4gICdjYWxlbmRhcicsXG4gICdlbWFpbCcsXG4gICdwaG9uZScsXG4gICdzaWduLW91dCcsXG4gICdzaWduLWluJyxcbiAgJ2Nsb3NlJyxcbiAgJ2NoZWNrLW1hcmsnLFxuICAncmF0aW5nLXN0YXItYmxhbmsnLFxuICAncmF0aW5nLXN0YXItZmlsbGVkJyxcbiAgJ2JhY2stYXJyb3cnLFxuICAnbG9jaycsXG4gICdzaG93LXBhc3N3b3JkJyxcbiAgJ2hpZGUtcGFzc3dvcmQnLFxuICAnY2lyY2xlLWNoZWNrJyxcbiAgJ2NpcmNsZS1hbGVydCcsXG4gICdkaXJlY3Rpb24tc3dpdGNoJyxcbiAgJ2RpcmVjdGlvbi1zd2l0Y2gtYmxvY2snLFxuICAnY2hhdC1idWJibGVzJyxcbiAgJ3Bob25lLWRvd24nLFxuICAnbWljJyxcbiAgJ25vLW1pYycsXG4gICdidXR0b24tZm9yd2FyZC1hcnJvdycsXG4gICdidXR0b24tY2hlY2stYm94JyxcbiAgJ3NvY2lhbC1tZWRpYS13aGF0c2FwcCcsXG4gICdzb2NpYWwtbWVkaWEtZmFjZWJvb2snLFxuICAnc29jaWFsLW1lZGlhLWxpbmtlZGluJyxcbiAgJ3NvY2lhbC1tZWRpYS1pbnN0YWdyYW0nLFxuICAnc29jaWFsLW1lZGlhLWdvb2dsZS1tYWlsJyxcbiAgJ2luc3RhbnQtdmlkZW8tc2VydmljZScsXG4gICdpbnN0YW50LXRlbGVwaG9uaWMtc2VydmljZScsXG4gICdzY2hlZHVsZWQtdmlkZW8tc2VydmljZScsXG4gICdzY2hlZHVsZWQtdGVsZXBob25pYy1zZXJ2aWNlJyxcbiAgJ3ZpdGFsLXNjYW4tc2VydmljZScsXG4gICdvcGVuLWJhY2stYXJyb3cnLFxuICAnb3Blbi1mb3J3YXJkLWFycm93JyxcbiAgJ29wZW4tdXAtYXJyb3cnLFxuICAnb3Blbi1kb3duLWFycm93JyxcbiAgJ3NpbmdsZS1kb2N1bWVudCcsXG4gICdsaWdodG5pbmcnLFxuICAnbWljcm9zb2Z0LTM2NScsXG4gICd1c2VyLWRlcGVuZGVudCcsXG4gICdwbHVzJyxcbiAgJ2Nsb3NlLWJveCcsXG4gICdzcGVlY2gtYnViYmxlJyxcbiAgJ2NhbWVyYS1zd2l0Y2gnLFxuICAncmV0cnknLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEljb25zVCA9ICh0eXBlb2YgaWNvbnNDKVtudW1iZXJdO1xuXG4vKio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBAaW50ZXJmYWNlICAgICBJY29uQ29sb3JUXG4gKiBAZGVzY3JpcHRpb24gICBBbGwgYXZhaWxhYmxlIGNvbG9ycyBpbiBDU1MgY2xhc3Nlc1xuICovXG5leHBvcnQgY29uc3QgaWNvbkNvbG9yQyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2Vycm9yJywgJ3doaXRlJywgJ2FjY2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWNvbkNvbG9yVCA9ICh0eXBlb2YgaWNvbkNvbG9yQylbbnVtYmVyXTtcbiJdfQ==
@@ -109,5 +109,14 @@ export class CFPFormValidators {
109
109
  return error ? { errorMessage: error } : null;
110
110
  };
111
111
  }
112
+ static isValidDate(minDate, maxDate) {
113
+ return (control) => {
114
+ if (!dayjs(new Date(control.value)).isValid())
115
+ return { errorMessage: 'The given date is not valid' };
116
+ if ((minDate && dayjs(new Date(control.value)).isBefore(minDate)) || (maxDate && dayjs(new Date(control.value)).isAfter(maxDate)))
117
+ return { errorMessage: 'The given date is not within the valid parameters' };
118
+ return null;
119
+ };
120
+ }
112
121
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFHdkMsTUFBTTtpQkFFSCxFQUFFLEVBQUU7aUJBQ0osR0FBRyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztpQkFFakMsRUFBRSxFQUFFO2lCQUNKLEdBQUcsQ0FBQyxFQUFFLEVBQUUsMEJBQTBCLENBQUM7aUJBRW5DLEdBQUcsRUFBRTtpQkFDTCxTQUFTLENBQUMsU0FBUyxFQUFFLGtDQUFrQyxDQUFDO2lCQUV4RCxHQUFHLEVBQUU7aUJBQ0wsU0FBUyxDQUFDLFNBQVMsRUFBRSxrQ0FBa0MsQ0FBQztpQkFFeEQsR0FBRyxFQUFFO2lCQUNMLE1BQU0sQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUM7aUJBRXZDLEdBQUcsRUFBRTtpQkFDTCxPQUFPLENBQUMsU0FBUyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFHeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUk3RCxDQUFDO1lBRUosTUFBTSxjQUFjLEdBQStCLEVBQUUsQ0FBQztZQUN0RCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3hCLGNBQWMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNKLENBQUM7SUFTRCxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQWlCO1FBQzlCLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixNQUFNLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1lBRzNELElBQUksVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFHRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVILFNBQVMsR0FBRyxFQUFFLFlBQVksRUFBRSwyQkFBMkIsRUFBRSxDQUFDO1lBQzVELENBQUM7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDLENBQUM7SUFDSixDQUFDO0lBU0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUF5QjtRQUNuQyxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsMkNBQTJDLEVBQUUsQ0FBQztZQUN4RyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7SUFTRCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQWlCO1FBQ25DLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELE1BQU0sWUFBWSxHQUFHLEdBQVksRUFBRTtnQkFDakMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ2hGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO29CQUFFLE9BQU8sS0FBSyxDQUFDO2dCQUM5RSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUMsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFHLEdBQVksRUFBRTtnQkFDN0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUU7b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ25GLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxHQUFHLEdBQXVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxHQUFHO3dCQUFFLE9BQU8sS0FBSyxDQUFDO29CQUV2QixJQUFJLENBQUMsR0FBVyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRXRELElBQUksUUFBUSxJQUFJLElBQUk7d0JBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBRWhDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBRWYsUUFBUSxHQUFHLENBQUMsUUFBUSxDQUFDO2dCQUN2QixDQUFDO2dCQUVELE9BQU8sSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDO1lBRUYsSUFBSSxLQUFLLEdBQWtCLElBQUksQ0FBQztZQUNoQyxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7aUJBRTFFLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQUUsS0FBSyxHQUFHLHVCQUF1QixDQUFDO2lCQUV2RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEVBQUU7Z0JBQUUsS0FBSyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFFekYsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFBRSxLQUFLLEdBQUcsdUJBQXVCLENBQUM7aUJBRXJELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUFFLEtBQUssR0FBRywyQkFBMkIsQ0FBQztpQkFFM0YsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFBRSxLQUFLLEdBQUcsZ0NBQWdDLENBQUM7WUFFL0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIHZhbGlkYXRvcnNcbiAqXG4gKiBAZmlsZSAgICAgICAgICBmb3JtLXZhbGlkYXRvcnNcbiAqIEBkZXNjcmlwdGlvbiAgIFZhcmlvdXMgZm9ybSB2YWxpZGF0b3JzXG4gKiBAYXV0aG9yICAgICAgICBKYWNxdWVzIENvZXR6ZWVcbiAqIEBzaW5jZSAgICAgICAgIDIwMjIgLSAwMSAtIDIwXG4gKiBAdXNhZ2UgICAgICAgICBEaXNwbGF5IFwiZXJyb3JNZXNzYWdlXCIga2V5IHZhbHVlIGFzIHZhbGlkYXRvciByZXNwb25zZSBtZXNzYWdlXG4gKi9cblxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHBhc3N3b3JkVmFsaWRhdG9yIGZyb20gJ3Bhc3N3b3JkLXZhbGlkYXRvcic7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuLy8tLS0gSW50ZXJmYWNlc1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIENGUEZvcm1WYWxpZGF0b3JzIHtcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjaGVja1BTV1JldHlwZVxuICAgKiBAZGVzY3JpcHRpb24gICBDaGVjayBpZiBwYXNzd29yZHMgbWF0Y2hcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZ30gY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmNvbXBhcmVUbygncGFzc3dvcmQnKVxuICAgKi9cbiAgc3RhdGljIGNvbXBhcmVUbyhjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBjb25zdCBjb250cm9sVG9DaGVja1RvOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbD8ucGFyZW50Py5nZXQoY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdCkgfHwgbnVsbDtcblxuICAgICAgLy8tLS0gQ2hlY2sgcHJpbWFyeSBjb250cm9sIHZhbHVlXG4gICAgICBpZiAoIWNvbnRyb2xUb0NoZWNrVG8/LnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBSZXF1aXJlZGAgfTtcbiAgICAgIC8vLS0tIENoZWNrIHNlY29uZGFyeSBjb250cm9sIHZhbHVlXG4gICAgICBlbHNlIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmQgY29uZmlybWF0aW9uIHJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ29tcGFyZSBjb250cm9sc1xuICAgICAgZWxzZSBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sPy52YWx1ZSAhPT0gY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkcyBkbyBub3QgbWF0Y2hgIH07XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzUGFzc3dvcmRcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBwYXNzd29yZFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzUGFzc3dvcmQoKVxuICAgKi9cbiAgc3RhdGljIGFzUGFzc3dvcmQoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gbmV3IHBhc3N3b3JkVmFsaWRhdG9yKCk7XG5cbiAgICAgIC8vLS0tIFNldHVwIHBhc3N3b3JkIHJlcXVpcmVtZW50c1xuICAgICAgc2NoZW1hXG4gICAgICAgIC8vLS0tIE1pbmltdW0gbGVuZ3RoIDhcbiAgICAgICAgLmlzKClcbiAgICAgICAgLm1pbig4LCAnTWluaW11bSBvZiA4IGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNYXhpbXVtIGxlbmd0aCA1MFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWF4KDMwLCAnTWF4aW11bSBvZiAzMCBjaGFyYWN0ZXJzJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIHVwcGVyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAudXBwZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBVUFBFUkNBU0UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAubG93ZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBsb3dlcmNhc2UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGF0IGxlYXN0IDEgZGlnaXRzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuZGlnaXRzKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBkaWdpdCcpXG4gICAgICAgIC8vLS0tIFNwZWNpYWwgY2hhcmFjdGVyc1xuICAgICAgICAuaGFzKClcbiAgICAgICAgLnN5bWJvbHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyJyk7XG5cbiAgICAgIC8vLS0tIFZhbGlkYXRlIHN0cmluZ1xuICAgICAgY29uc3QgaW5WYWxpZCA9IHNjaGVtYS52YWxpZGF0ZShjb250cm9sLnZhbHVlLCB7IGRldGFpbHM6IHRydWUgfSkgYXMge1xuICAgICAgICB2YWxpZGF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgYXJndW1lbnRzPzogbnVtYmVyO1xuICAgICAgfVtdO1xuXG4gICAgICBjb25zdCByZXR1cm5SZXNwb25zZTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7fTtcbiAgICAgIGluVmFsaWQuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuUmVzcG9uc2VbJ3Bhc3N3b3JkLScgKyBlcnJvci52YWxpZGF0aW9uXSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBpblZhbGlkLmxlbmd0aCA/IHJldHVyblJlc3BvbnNlIDogbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBhc0VtYWlsXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgYXMgZW1haWxcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5hc0VtYWlsKHRydWU/KVxuICAgKi9cbiAgc3RhdGljIGFzRW1haWwoY2FuQmVFbXB0eT86IHRydWUpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgc2V0RXJyb3JzID0gbnVsbDtcbiAgICAgIGNvbnN0IGVtYWlsUmVnRXggPSBuZXcgUmVnRXhwKCdeW1xcXFx3LS5dK0BbXFxcXHddK1xcXFwuW1xcXFx3XSsnKTtcblxuICAgICAgLy8tLS0gQ2hlY2sgaWYgZW1haWwgY2FuIGJlIGVtcHR5XG4gICAgICBpZiAoY2FuQmVFbXB0eSAmJiAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCBjb250cm9sLnZhbHVlID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vLS0tIFRlc3QgUmVnRXhwXG4gICAgICBpZiAoIShjb250cm9sLnZhbHVlICYmIGVtYWlsUmVnRXgudGVzdChjb250cm9sLnZhbHVlKSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWNvbnRyb2wudmFsdWUuaW5jbHVkZXMoJyAnKSkpIHtcbiAgICAgICAgc2V0RXJyb3JzID0geyBlcnJvck1lc3NhZ2U6IGBOb3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzYCB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2V0RXJyb3JzO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzSW5cbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBwYXJ0IG9mIGEgZ2l2ZW4gbGlzdFxuICAgKiBAcGFyYW0gICAgICAgICB7c3RyaW5nIHwgbnVtYmVyW119IGxpc3RcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc0luKClcbiAgICovXG4gIHN0YXRpYyBpc0luKGxpc3Q6IChzdHJpbmcgfCBudW1iZXIpW10pOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBpZiAoIWxpc3QuaW5jbHVkZXMoY29udHJvbC52YWx1ZSkpIHJldHVybiB7IGVycm9yTWVzc2FnZTogJ0NvbnRyb2wgdmFsdWUgbm90IHBhcnQgb2YgZWxpZ2libGUgdmFsdWVzJyB9O1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQG5hbWUgICAgICAgICAgaXNTQUlETnVtYmVyXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgaXMgYSB2YWxpZCBSU0EgSUQgTnVtYmVyXG4gICAqIEBwYXJhbSAgICAgICAgIHt0cnVlfSBjYW5CZUVtcHR5XG4gICAqIEByZXR1cm5zICAgICAgIHtWYWxpZGF0b3JGbn1cbiAgICogQHVzYWdlICAgICAgICAgRm9ybVZhbGlkYXRvcnMuaXNTQUlETnVtYmVyKHRydWU/KVxuICAgKi9cbiAgc3RhdGljIGlzU0FJRE51bWJlcihjYW5CZUVtcHR5PzogdHJ1ZSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlRGF0ZSA9ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAnc3RyaW5nJyB8fCBjb250cm9sLnZhbHVlLmxlbmd0aCA8IDYpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgbW9udGggPSBjb250cm9sLnZhbHVlLnNsaWNlKDIsIDQpO1xuICAgICAgICBjb25zdCBkYXkgPSBjb250cm9sLnZhbHVlLnNsaWNlKDQsIDYpO1xuICAgICAgICBpZiAoK21vbnRoIDwgMCAmJiArbW9udGggPiAxMykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoK2RheSA8IDAgJiYgK2RheSA+IDMxKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGF5anMoY29udHJvbC52YWx1ZS5zbGljZSgwLCA2KSwgJ1lZTU1ERCcsIHRydWUpLmlzVmFsaWQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNoZWNrc3VtID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoICE9PSAxMykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgblN1bSA9IDA7IC8vLS0tIFRvdGFsIHN1bSBvZiBhbGwgdGhlIHZhbHVlc1xuICAgICAgICBsZXQgaXNTZWNvbmQgPSBmYWxzZTsgLy8tLS0gVG8gZG91YmxlIGV2ZXJ5IG90aGVyIHZhbHVlXG4gICAgICAgIC8vLS0tIFN0YXJ0IGZyb20gdGhlIGVuZFxuICAgICAgICBmb3IgKGxldCBpID0gY29udHJvbC52YWx1ZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGNvbnN0IHZhbDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY29udHJvbC52YWx1ZVtpXTtcbiAgICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIC8vLS0tIEdldCBudW1lcmljYWwgdmFsdWUgZnJvbSBhc2NpaSBzdHJpbmdcbiAgICAgICAgICBsZXQgZDogbnVtYmVyID0gdmFsLmNoYXJDb2RlQXQoMCkgLSAnMCcuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAvLy0tLSBEb3VibGUgZXZlcnkgb3RoZXIgdmFsdWVcbiAgICAgICAgICBpZiAoaXNTZWNvbmQgPT0gdHJ1ZSkgZCA9IGQgKiAyO1xuICAgICAgICAgIC8vLS0tIFN1bSB0aGUgdG90YWwgb2YgdGhlIGRvdWJsZWQgdmFsdWVzIGlmIGF2YWlsYWJsZVxuICAgICAgICAgIG5TdW0gKz0gTWF0aC5mbG9vcihkIC8gMTApO1xuICAgICAgICAgIG5TdW0gKz0gZCAlIDEwO1xuICAgICAgICAgIC8vLS0tIEludmVyc2Ugc2Vjb25kIHRvIGRldGVybWluZSBldmVyeSBvdGhlciBpbmRleCB2YWx1ZVxuICAgICAgICAgIGlzU2Vjb25kID0gIWlzU2Vjb25kO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIFJldHVybiB0aGUgbW9kdWx1cyAxMCBvZiB0aGUgc3VtbWF0aW9uXG4gICAgICAgIHJldHVybiBuU3VtICUgMTAgPT0gMDtcbiAgICAgIH07XG5cbiAgICAgIGxldCBlcnJvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgICBpZiAoY2FuQmVFbXB0eSAmJiAoIWNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZT8ubGVuZ3RoID09PSAwKSkgcmV0dXJuIG51bGw7XG4gICAgICAvLy0tLSBzdHJpbmdcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAnc3RyaW5nJykgZXJyb3IgPSAnSW52YWxpZCBSU0EgSUQgTnVtYmVyJztcbiAgICAgIC8vLS0tIExlbmd0aCA9IDEzXG4gICAgICBlbHNlIGlmIChjb250cm9sLnZhbHVlLmxlbmd0aCAhPT0gMTMpIGVycm9yID0gYExlbmd0aCByZXF1aXJlZDogJHsxMyAtIGNvbnRyb2wudmFsdWUubGVuZ3RofWA7XG4gICAgICAvLy0tLSBWYWxpZGF0ZSBkYXRlXG4gICAgICBlbHNlIGlmICghdmFsaWRhdGVEYXRlKCkpIGVycm9yID0gYEludmFsaWQgZGF0ZSBvZiBiaXJ0aGA7XG4gICAgICAvLy0tLSBDaXRpemVuc2hpcFxuICAgICAgZWxzZSBpZiAoIVsnMCcsICcxJ10uaW5jbHVkZXMoY29udHJvbC52YWx1ZS5zbGljZSgxMCwgMTEpKSkgZXJyb3IgPSBgSW52YWxpZCBjaXRpemVuc2hpcCB2YWx1ZWA7XG4gICAgICAvLy0tLSBDaGVja3N1bVxuICAgICAgZWxzZSBpZiAoIWNoZWNrc3VtKCkpIGVycm9yID0gYEludmFsaWQgUlNBIElEIG51bWJlciBjaGVja3N1bWA7XG5cbiAgICAgIHJldHVybiBlcnJvciA/IHsgZXJyb3JNZXNzYWdlOiBlcnJvciB9IDogbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLXV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXJlZmlyc3QvbGlicmFyeS9zcmMvbGliL3V0aWxzL2Zvcm0tdmFsaWRhdG9ycy11dGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLGlCQUFpQixNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUloQyxNQUFNLE9BQU8saUJBQWlCO0lBUTVCLE1BQU0sQ0FBQyxTQUFTLENBQUMseUJBQWlDO1FBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBRTNELE1BQU0sZ0JBQWdCLEdBQTJCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksSUFBSSxDQUFDO1lBR3pHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztpQkFFdEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQztpQkFFOUUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBRSxLQUFLLEtBQUssZ0JBQWdCLEVBQUUsS0FBSztnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7WUFFeEgsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLENBQUMsT0FBd0IsRUFBMkIs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RSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDaEQsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQVVELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBc0IsRUFBRSxPQUF1QjtRQUNoRSxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtZQUUzRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixFQUFFLENBQUM7WUFFdEcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0gsT0FBTyxFQUFFLFlBQVksRUFBRSxtREFBbUQsRUFBRSxDQUFDO1lBQy9FLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIHZhbGlkYXRvcnNcbiAqXG4gKiBAZmlsZSAgICAgICAgICBmb3JtLXZhbGlkYXRvcnNcbiAqIEBkZXNjcmlwdGlvbiAgIFZhcmlvdXMgZm9ybSB2YWxpZGF0b3JzXG4gKiBAYXV0aG9yICAgICAgICBKYWNxdWVzIENvZXR6ZWVcbiAqIEBzaW5jZSAgICAgICAgIDIwMjIgLSAwMSAtIDIwXG4gKiBAdXNhZ2UgICAgICAgICBEaXNwbGF5IFwiZXJyb3JNZXNzYWdlXCIga2V5IHZhbHVlIGFzIHZhbGlkYXRvciByZXNwb25zZSBtZXNzYWdlXG4gKi9cblxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHBhc3N3b3JkVmFsaWRhdG9yIGZyb20gJ3Bhc3N3b3JkLXZhbGlkYXRvcic7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5kYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xuLy8tLS0gSW50ZXJmYWNlc1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNsYXNzIENGUEZvcm1WYWxpZGF0b3JzIHtcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBjaGVja1BTV1JldHlwZVxuICAgKiBAZGVzY3JpcHRpb24gICBDaGVjayBpZiBwYXNzd29yZHMgbWF0Y2hcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZ30gY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmNvbXBhcmVUbygncGFzc3dvcmQnKVxuICAgKi9cbiAgc3RhdGljIGNvbXBhcmVUbyhjb250cm9sTmFtZVRvQ2hlY2tBZ2FpbnN0OiBzdHJpbmcpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAvLy0tLSBDb21wYXJlIGNvbnRyb2xzXG4gICAgICBjb25zdCBjb250cm9sVG9DaGVja1RvOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gY29udHJvbD8ucGFyZW50Py5nZXQoY29udHJvbE5hbWVUb0NoZWNrQWdhaW5zdCkgfHwgbnVsbDtcblxuICAgICAgLy8tLS0gQ2hlY2sgcHJpbWFyeSBjb250cm9sIHZhbHVlXG4gICAgICBpZiAoIWNvbnRyb2xUb0NoZWNrVG8/LnZhbHVlKSByZXR1cm4geyBlcnJvck1lc3NhZ2U6IGBQYXNzd29yZCBSZXF1aXJlZGAgfTtcbiAgICAgIC8vLS0tIENoZWNrIHNlY29uZGFyeSBjb250cm9sIHZhbHVlXG4gICAgICBlbHNlIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiBgUGFzc3dvcmQgY29uZmlybWF0aW9uIHJlcXVpcmVkYCB9O1xuICAgICAgLy8tLS0gQ29tcGFyZSBjb250cm9sc1xuICAgICAgZWxzZSBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sPy52YWx1ZSAhPT0gY29udHJvbFRvQ2hlY2tUbz8udmFsdWUpIHJldHVybiB7IGVycm9yTWVzc2FnZTogYFBhc3N3b3JkcyBkbyBub3QgbWF0Y2hgIH07XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGFzUGFzc3dvcmRcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCBhcyBwYXNzd29yZFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmFzUGFzc3dvcmQoKVxuICAgKi9cbiAgc3RhdGljIGFzUGFzc3dvcmQoKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3Qgc2NoZW1hID0gbmV3IHBhc3N3b3JkVmFsaWRhdG9yKCk7XG5cbiAgICAgIC8vLS0tIFNldHVwIHBhc3N3b3JkIHJlcXVpcmVtZW50c1xuICAgICAgc2NoZW1hXG4gICAgICAgIC8vLS0tIE1pbmltdW0gbGVuZ3RoIDhcbiAgICAgICAgLmlzKClcbiAgICAgICAgLm1pbig4LCAnTWluaW11bSBvZiA4IGNoYXJhY3RlcnMnKVxuICAgICAgICAvLy0tLSBNYXhpbXVtIGxlbmd0aCA1MFxuICAgICAgICAuaXMoKVxuICAgICAgICAubWF4KDMwLCAnTWF4aW11bSBvZiAzMCBjaGFyYWN0ZXJzJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIHVwcGVyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAudXBwZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBVUFBFUkNBU0UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAubG93ZXJjYXNlKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBsb3dlcmNhc2UgY2hhcmFjdGVyJylcbiAgICAgICAgLy8tLS0gTXVzdCBoYXZlIGF0IGxlYXN0IDEgZGlnaXRzXG4gICAgICAgIC5oYXMoKVxuICAgICAgICAuZGlnaXRzKHVuZGVmaW5lZCwgJ0F0IGxlYXN0IG9uZSBkaWdpdCcpXG4gICAgICAgIC8vLS0tIFNwZWNpYWwgY2hhcmFjdGVyc1xuICAgICAgICAuaGFzKClcbiAgICAgICAgLnN5bWJvbHModW5kZWZpbmVkLCAnQXQgbGVhc3Qgb25lIHNwZWNpYWwgY2hhcmFjdGVyJyk7XG5cbiAgICAgIC8vLS0tIFZhbGlkYXRlIHN0cmluZ1xuICAgICAgY29uc3QgaW5WYWxpZCA9IHNjaGVtYS52YWxpZGF0ZShjb250cm9sLnZhbHVlLCB7IGRldGFpbHM6IHRydWUgfSkgYXMge1xuICAgICAgICB2YWxpZGF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgICAgYXJndW1lbnRzPzogbnVtYmVyO1xuICAgICAgfVtdO1xuXG4gICAgICBjb25zdCByZXR1cm5SZXNwb25zZTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7fTtcbiAgICAgIGluVmFsaWQuZm9yRWFjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuUmVzcG9uc2VbJ3Bhc3N3b3JkLScgKyBlcnJvci52YWxpZGF0aW9uXSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBpblZhbGlkLmxlbmd0aCA/IHJldHVyblJlc3BvbnNlIDogbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBhc0VtYWlsXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgYXMgZW1haWxcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5hc0VtYWlsKHRydWU/KVxuICAgKi9cbiAgc3RhdGljIGFzRW1haWwoY2FuQmVFbXB0eT86IHRydWUpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBsZXQgc2V0RXJyb3JzID0gbnVsbDtcbiAgICAgIGNvbnN0IGVtYWlsUmVnRXggPSBuZXcgUmVnRXhwKCdeW1xcXFx3LS5dK0BbXFxcXHddK1xcXFwuW1xcXFx3XSsnKTtcblxuICAgICAgLy8tLS0gQ2hlY2sgaWYgZW1haWwgY2FuIGJlIGVtcHR5XG4gICAgICBpZiAoY2FuQmVFbXB0eSAmJiAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCBjb250cm9sLnZhbHVlID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vLS0tIFRlc3QgUmVnRXhwXG4gICAgICBpZiAoIShjb250cm9sLnZhbHVlICYmIGVtYWlsUmVnRXgudGVzdChjb250cm9sLnZhbHVlKSAmJiB0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWNvbnRyb2wudmFsdWUuaW5jbHVkZXMoJyAnKSkpIHtcbiAgICAgICAgc2V0RXJyb3JzID0geyBlcnJvck1lc3NhZ2U6IGBOb3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzYCB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2V0RXJyb3JzO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzSW5cbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBwYXJ0IG9mIGEgZ2l2ZW4gbGlzdFxuICAgKiBAcGFyYW0gICAgICAgICB7KHN0cmluZyB8IG51bWJlcilbXX0gbGlzdFxuICAgKiBAcmV0dXJucyAgICAgICB7VmFsaWRhdG9yRm59XG4gICAqIEB1c2FnZSAgICAgICAgIEZvcm1WYWxpZGF0b3JzLmlzSW4oKVxuICAgKi9cbiAgc3RhdGljIGlzSW4obGlzdDogKHN0cmluZyB8IG51bWJlcilbXSk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGlmICghbGlzdC5pbmNsdWRlcyhjb250cm9sLnZhbHVlKSkgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnQ29udHJvbCB2YWx1ZSBub3QgcGFydCBvZiBlbGlnaWJsZSB2YWx1ZXMnIH07XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBAbmFtZSAgICAgICAgICBpc1NBSUROdW1iZXJcbiAgICogQGRlc2NyaXB0aW9uICAgVmFsaWRhdGUgY29udHJvbCB2YWx1ZSBpcyBhIHZhbGlkIFJTQSBJRCBOdW1iZXJcbiAgICogQHBhcmFtICAgICAgICAge3RydWV9IGNhbkJlRW1wdHlcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1NBSUROdW1iZXIodHJ1ZT8pXG4gICAqL1xuICBzdGF0aWMgaXNTQUlETnVtYmVyKGNhbkJlRW1wdHk/OiB0cnVlKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdGVEYXRlID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgNikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBtb250aCA9IGNvbnRyb2wudmFsdWUuc2xpY2UoMiwgNCk7XG4gICAgICAgIGNvbnN0IGRheSA9IGNvbnRyb2wudmFsdWUuc2xpY2UoNCwgNik7XG4gICAgICAgIGlmICgrbW9udGggPCAwICYmICttb250aCA+IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICgrZGF5IDwgMCAmJiArZGF5ID4gMzEpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFkYXlqcyhjb250cm9sLnZhbHVlLnNsaWNlKDAsIDYpLCAnWVlNTUREJywgdHJ1ZSkuaXNWYWxpZCgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgY2hlY2tzdW0gPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDEzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBuU3VtID0gMDsgLy8tLS0gVG90YWwgc3VtIG9mIGFsbCB0aGUgdmFsdWVzXG4gICAgICAgIGxldCBpc1NlY29uZCA9IGZhbHNlOyAvLy0tLSBUbyBkb3VibGUgZXZlcnkgb3RoZXIgdmFsdWVcbiAgICAgICAgLy8tLS0gU3RhcnQgZnJvbSB0aGUgZW5kXG4gICAgICAgIGZvciAobGV0IGkgPSBjb250cm9sLnZhbHVlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBjb250cm9sLnZhbHVlW2ldO1xuICAgICAgICAgIGlmICghdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgLy8tLS0gR2V0IG51bWVyaWNhbCB2YWx1ZSBmcm9tIGFzY2lpIHN0cmluZ1xuICAgICAgICAgIGxldCBkOiBudW1iZXIgPSB2YWwuY2hhckNvZGVBdCgwKSAtICcwJy5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgIC8vLS0tIERvdWJsZSBldmVyeSBvdGhlciB2YWx1ZVxuICAgICAgICAgIGlmIChpc1NlY29uZCA9PSB0cnVlKSBkID0gZCAqIDI7XG4gICAgICAgICAgLy8tLS0gU3VtIHRoZSB0b3RhbCBvZiB0aGUgZG91YmxlZCB2YWx1ZXMgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgblN1bSArPSBNYXRoLmZsb29yKGQgLyAxMCk7XG4gICAgICAgICAgblN1bSArPSBkICUgMTA7XG4gICAgICAgICAgLy8tLS0gSW52ZXJzZSBzZWNvbmQgdG8gZGV0ZXJtaW5lIGV2ZXJ5IG90aGVyIGluZGV4IHZhbHVlXG4gICAgICAgICAgaXNTZWNvbmQgPSAhaXNTZWNvbmQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gUmV0dXJuIHRoZSBtb2R1bHVzIDEwIG9mIHRoZSBzdW1tYXRpb25cbiAgICAgICAgcmV0dXJuIG5TdW0gJSAxMCA9PSAwO1xuICAgICAgfTtcblxuICAgICAgbGV0IGVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChjYW5CZUVtcHR5ICYmICghY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlPy5sZW5ndGggPT09IDApKSByZXR1cm4gbnVsbDtcbiAgICAgIC8vLS0tIHN0cmluZ1xuICAgICAgZWxzZSBpZiAodHlwZW9mIGNvbnRyb2wudmFsdWUgIT09ICdzdHJpbmcnKSBlcnJvciA9ICdJbnZhbGlkIFJTQSBJRCBOdW1iZXInO1xuICAgICAgLy8tLS0gTGVuZ3RoID0gMTNcbiAgICAgIGVsc2UgaWYgKGNvbnRyb2wudmFsdWUubGVuZ3RoICE9PSAxMykgZXJyb3IgPSBgTGVuZ3RoIHJlcXVpcmVkOiAkezEzIC0gY29udHJvbC52YWx1ZS5sZW5ndGh9YDtcbiAgICAgIC8vLS0tIFZhbGlkYXRlIGRhdGVcbiAgICAgIGVsc2UgaWYgKCF2YWxpZGF0ZURhdGUoKSkgZXJyb3IgPSBgSW52YWxpZCBkYXRlIG9mIGJpcnRoYDtcbiAgICAgIC8vLS0tIENpdGl6ZW5zaGlwXG4gICAgICBlbHNlIGlmICghWycwJywgJzEnXS5pbmNsdWRlcyhjb250cm9sLnZhbHVlLnNsaWNlKDEwLCAxMSkpKSBlcnJvciA9IGBJbnZhbGlkIGNpdGl6ZW5zaGlwIHZhbHVlYDtcbiAgICAgIC8vLS0tIENoZWNrc3VtXG4gICAgICBlbHNlIGlmICghY2hlY2tzdW0oKSkgZXJyb3IgPSBgSW52YWxpZCBSU0EgSUQgbnVtYmVyIGNoZWNrc3VtYDtcblxuICAgICAgcmV0dXJuIGVycm9yID8geyBlcnJvck1lc3NhZ2U6IGVycm9yIH0gOiBudWxsO1xuICAgIH07XG4gIH1cblxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIEBuYW1lICAgICAgICAgIGlzVmFsaWREYXRlXG4gICAqIEBkZXNjcmlwdGlvbiAgIFZhbGlkYXRlIGNvbnRyb2wgdmFsdWUgaXMgcGFydCBvZiBhIGdpdmVuIGxpc3RcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZyB8IG51bGx9IG1pbkRhdGVcbiAgICogQHBhcmFtICAgICAgICAge3N0cmluZyB8IG51bGx9IG1heERhdGVcbiAgICogQHJldHVybnMgICAgICAge1ZhbGlkYXRvckZufVxuICAgKiBAdXNhZ2UgICAgICAgICBGb3JtVmFsaWRhdG9ycy5pc1ZhbGlkRGF0ZSgnMTk5OS0wMS0wMScsICcyMDIwLTAxLTAxJylcbiAgICovXG4gIHN0YXRpYyBpc1ZhbGlkRGF0ZShtaW5EYXRlOiBzdHJpbmcgfCBudWxsLCBtYXhEYXRlPzogc3RyaW5nIHwgbnVsbCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIC8vLS0tIENoZWNrIHRvIHNlZSBpZiBhIGludmFsaWQgZGF0ZSBpcyByZWNlaXZlZCBsaWtlICgzMSBGZWIpXG4gICAgICBpZiAoIWRheWpzKG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpKS5pc1ZhbGlkKCkpIHJldHVybiB7IGVycm9yTWVzc2FnZTogJ1RoZSBnaXZlbiBkYXRlIGlzIG5vdCB2YWxpZCcgfTtcbiAgICAgIC8vLS0tIENoZWNrIGRhdGUgaXMgbm90IGxlc3MgdGhhbiBtaW5EYXRlIGFuZCBkYXRlIGRvZXNuJ3QgZXhjZWVkIG1heERhdGVcbiAgICAgIGlmICgobWluRGF0ZSAmJiBkYXlqcyhuZXcgRGF0ZShjb250cm9sLnZhbHVlKSkuaXNCZWZvcmUobWluRGF0ZSkpIHx8IChtYXhEYXRlICYmIGRheWpzKG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpKS5pc0FmdGVyKG1heERhdGUpKSlcbiAgICAgICAgcmV0dXJuIHsgZXJyb3JNZXNzYWdlOiAnVGhlIGdpdmVuIGRhdGUgaXMgbm90IHdpdGhpbiB0aGUgdmFsaWQgcGFyYW1ldGVycycgfTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==