monkey-front-components 0.0.742 → 0.0.743

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.
@@ -129,6 +129,19 @@ export class BaseComponent {
129
129
  }
130
130
  return '';
131
131
  }
132
+ handleRequiredFieldsPosition() {
133
+ setTimeout(() => {
134
+ const error = document.getElementsByTagName('error');
135
+ let letHEele = null;
136
+ for (let i = 0; i <= error.length; i += 1) {
137
+ if (`${error[i].textContent}`.trim()) {
138
+ letHEele = error[i];
139
+ break;
140
+ }
141
+ }
142
+ letHEele?.scrollIntoView({ behavior: 'smooth', block: 'center' });
143
+ }, 0);
144
+ }
132
145
  validateFormWithTranslate(f, index) {
133
146
  const formErrors = f.value;
134
147
  if (f.status === 'VALID')
@@ -205,6 +218,12 @@ export class BaseComponent {
205
218
  };
206
219
  }
207
220
  f.markAllAsTouched();
221
+ try {
222
+ this.handleRequiredFieldsPosition();
223
+ }
224
+ catch (e) {
225
+ // ignore
226
+ }
208
227
  return false;
209
228
  }
210
229
  clearAllServiceData(clearData) {
@@ -343,4 +362,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
343
362
  selector: '[baseComponent]'
344
363
  }]
345
364
  }], ctorParameters: function () { return []; } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsVUFBVSxFQUNYLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUszQyxNQUFNLE9BQWdCLGFBQWE7SUFlakM7UUFWQSx3QkFBbUIsR0FBc0MsSUFBSSxDQUFDO1FBSTlELGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFN0IsY0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFLL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztZQUNoRCxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNoQixNQUFNLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsT0FBTyxDQUNoRSxDQUFDO1FBQ0osT0FBTyxDQUFDLG1EQUFtRCxDQUFDLElBQUksQ0FDOUQsU0FBUyxDQUFDLFNBQVMsQ0FDcEIsQ0FBQyxJQUFJLGFBQWEs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LE9BQU8sQ0FBQzthQUM5QztTQUNGLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDWixZQUFZLEVBQUUsYUFBYSxDQUFDLGlCQUFpQjtZQUM3QyxPQUFPLEVBQUUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztTQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFckMsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsbUJBQW1CLENBQUM7WUFFeEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUM5QixJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUUsSUFBSTtnQkFBRSxPQUFPLElBQUksQ0FBQztTQUN2QztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFckMsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsbUJBQW1CLENBQUM7WUFDeEMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7MEdBeldtQixhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1vbmtleUVjeENvbW1vbnNTZXJ2aWNlLFxuICBNb25rZXlFY3hFcnJvclJlc3BvbnNlLFxuICBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucyxcbiAgTW9ua2V5RWN4U2Nyb2xsT3B0aW9ucyxcbiAgTW9ua2V5RWN4U3VwcG9ydE9wdGlvbnMsXG4gIE1vbmtleUVjeFRyYW5zbGF0ZU9wdGlvbnMsXG4gIE1vbmtleUVjeFV0aWxzLFxuICBWYWxpZGF0ZVV0aWxzLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ21vbmtleS1mcm9udC1jb3JlJztcbmltcG9ydCB7IE1vbmtleVV0aWxzIH0gZnJvbSAnbW9ua2V5LXN0eWxlLWd1aWRlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Jhc2VDb21wb25lbnRdJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgX19tb25rZXllY3hGb3JtRXJyb3JzOiBhbnkgfCBhbnlbXTtcblxuICBfX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT47XG5cbiAgX19wYWdpbmF0aW9uT3B0aW9uczogTW9ua2V5RWN4UGFnaW5hdGlvbk9wdGlvbnMgfCBudWxsID0gbnVsbDtcblxuICBfX2kxOG46IGFueTtcblxuICBfX2lzTW9iaWxlID0gdGhpcy5pc01vYmlsZSgpO1xuXG4gIF9fbG9jYWxlcyA9IFsncHQtQlInLCAnZXMtQ0wnLCAnZXMtTVgnLCAnZW4tVVMnXTtcblxuICBwcml2YXRlIHBhZ2luYXRpb25GdW5jOiBhbnk7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX191bnN1YnNjcmliZUFsbCA9IG5ldyBTdWJqZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGlzTW9iaWxlKCkge1xuICAgIGNvbnN0IGlzTW9iaWxlV2lkdGggPSAod2luZG93LnNjcmVlbi53aWR0aCA8PSA2NDApIHx8XG4gICAgICAod2luZG93Lm1hdGNoTWVkaWEgJiZcbiAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEoJ29ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCknKS5tYXRjaGVzXG4gICAgICApO1xuICAgIHJldHVybiAoL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE1vYmlsZS9pLnRlc3QoXG4gICAgICBuYXZpZ2F0b3IudXNlckFnZW50XG4gICAgKSkgfHwgaXNNb2JpbGVXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUGFnaW5hdGlvbihjcmVhdGUgPSB0cnVlKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKF9fcGFnaW5hdGlvbk9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHsgbWFpbkVsZW1lbnQsIHNlcnZpY2UgfSA9IF9fcGFnaW5hdGlvbk9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtYWluRWxlbWVudCk7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsID0gbnVsbDtcbiAgICAgICAgZWxlbWVudC5vbnNjcm9sbCA9IG51bGw7XG5cbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZWxlbWVudCBhcyBhbnkpLmV2ZW50TGlzdGVuZXJzKCdzY3JvbGwnKSk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKGVsZW1lbnQgYXMgYW55KS5ldmVudExpc3RlbmVycygnc2Nyb2xsJylbMF0pO1xuICAgICAgICBpZiAoY3JlYXRlKSB7XG4gICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0LCBvZmZzZXRIZWlnaHQgfSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50SGVpZ2h0ID0gc2Nyb2xsSGVpZ2h0IC0gb2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICBpZiAoY29udGVudEhlaWdodCA8PSBzY3JvbGxUb3ApIHtcbiAgICAgICAgICAgICAgc2VydmljZS5kb1BhZ2luYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3VwcG9ydChzdXBwb3J0Q29udHJvbHM6IE1vbmtleUVjeFN1cHBvcnRPcHRpb25zKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlLCBzaG93IH0gPSBzdXBwb3J0Q29udHJvbHM7XG4gICAgY29uc3QgbWV0aG9kID0gc2hvdyA/ICdzaG93JyA6ICdoaWRlJztcbiAgICBzZXJ2aWNlW21ldGhvZC50b0xvd2VyQ2FzZSgpXSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUcmFuc2xhdGUodHJhbnNsYXRlT3B0aW9uczogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgc2VydmljZSB9ID0gdHJhbnNsYXRlT3B0aW9ucztcbiAgICBzZXJ2aWNlLl9fb25pMThuRGF0YUNoYW5nZWQkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fX3Vuc3Vic2NyaWJlQWxsKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gc2VydmljZS5fX2kxOG47XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5fX2kxOG4gPSBkYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlld1Njcm9sbChvcHRpb25zOiBNb25rZXlFY3hTY3JvbGxPcHRpb25zKSB7XG4gICAgY29uc3QgeyBlbGVtZW50SWQsIHNlcnZpY2UgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoZWxlbWVudElkID09PSBzZXJ2aWNlPy5fX3NhdmVkU3RhdGU/LnNjcm9sbEVsZW1lbnRJZCkge1xuICAgICAgdGhpcy5nb1Njcm9sbChlbGVtZW50SWQpO1xuXG4gICAgICBzZXJ2aWNlLl9fc2F2ZWRTdGF0ZS5zY3JvbGxFbGVtZW50SWQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JGaXJzdE1lc3NhZ2VUcmFuc2xhdGVkKGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbCkge1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHJldHVybiAnRklFTEQtUkVRVUlSRUQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWQnKSkgcmV0dXJuICdGSUVMRC1JTlZBTElEJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdlbWFpbCcpKSByZXR1cm4gJ0lOVkFMSUQtRU1BSUwnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSByZXR1cm4gJ01JTi1MRU5HVEgnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSByZXR1cm4gJ01BWC1MRU5HVEgnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heCcpKSByZXR1cm4gJ01BWCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWluJykpIHJldHVybiAnTUlOJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdwYXNzd29yZHNOb3RNYXRjaGluZycpKSByZXR1cm4gJ01BVENILVBBU1NXT1JEJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkRGF0ZScpKSByZXR1cm4gJ0lOVkFMSUQtREFURSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFRydWUnKSkgcmV0dXJuICdJTlZBTElELVRSVUUnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRDcGZDbnBqJykpIHJldHVybiAnSU5WQUxJRC1ET0NVTUVOVCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFppcENvZGUnKSkgcmV0dXJuICdJTlZBTElELVpJUENPREUnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRDb21ibycpKSByZXR1cm4gJ0lOVkFMSUQtQ09NQk8nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRVcmwnKSkgcmV0dXJuICdJTlZBTElELVVSTCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFVubG9ja1JlZ2lzdGVyJykpIHsgcmV0dXJuICdJTlZBTElELVVOTE9DSy1SRUdJU1RFUic7IH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdkYXRlU3RhcnRNdXN0QmVMZXNzVGhhbkFuZCcpKSB7XG4gICAgICByZXR1cm4gJ0RBVEUtU1RBUlQtTVVTVC1CRS1MRVNTLVRIQU4tQU5EJztcbiAgICB9XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignZGF0ZUVuZE11c3RCZUdyZWF0ZXJUaGFuU3RhcnQnKSkge1xuICAgICAgcmV0dXJuICdEQVRFLUVORC1NVVNULUJFLUdSRUFURVItVEhBTi1TQVJUJztcbiAgICB9XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcigncGhvbmUnKSkgcmV0dXJuICdJTlZBTElELVBIT05FJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVmFsdWVHcmVhdGVyVGhhblplcm8nKSkgcmV0dXJuICdJTlZBTElELUdSRUFURVItVEhBTi1aRVJPJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdkYXRlUmFuZ2UnKSkgcmV0dXJuICdJTlZBTElELURBVEUtUkFOR0UnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2RpZmZlcmVudEZyb21aZXJvJykpIHJldHVybiAnRElGRkVSRU5ULUZST01ULVpFUk8nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRNaW5ZZWFycycpKSB7XG4gICAgICByZXR1cm4gYElOVkFMSUQtTUlOLVlFQVJTLSR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdpbnZhbGlkTWluWWVhcnMnKS55ZWFyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuICdGSUVMRC1JTlZBTElEJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbmxlbmd0aCcpLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXhsZW5ndGgnKS5yZXF1aXJlZExlbmd0aH0gY2FyYWN0ZXJlcy5gO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtYXgnKSkgeyByZXR1cm4gYCR7Zm9ybUNvbnRyb2w/LmdldEVycm9yKCdtYXgnKS5tYXh9YDsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21pbicpKSB7IHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21pbicpLm1pbn1gOyB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGVGb3JtV2l0aFRyYW5zbGF0ZShmOiBGb3JtR3JvdXAsIGluZGV4PzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZm9ybUVycm9yczogYW55ID0gZi52YWx1ZTtcblxuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdDogYEVSUk9SUy4ke3RoaXMuZ2V0RXJyb3JGaXJzdE1lc3NhZ2VUcmFuc2xhdGVkKGYuZ2V0KGtleSkpfWAsXG4gICAgICAgICAgbGFzdDogdGhpcy5nZXRFcnJvckxhc3RNZXNzYWdlTm90VHJhbnNsYXRlZChmLmdldChrZXkpKVxuICAgICAgICB9O1xuICAgICAgICBmb3JtRXJyb3JzW2tleV0gPSBtc2c7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoTW9ua2V5VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChpbmRleCkpIHsgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnNbaW5kZXggfHwgMF0gPSBmb3JtRXJyb3JzOyB9IGVsc2Uge1xuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSBmb3JtRXJyb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBzZWxCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xuICAgIHNlbEJveC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgc2VsQm94LnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgc2VsQm94LnN0eWxlLnRvcCA9ICcwJztcbiAgICBzZWxCb3guc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICBzZWxCb3gudmFsdWUgPSB2YWw7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZWxCb3gpO1xuICAgIHNlbEJveC5mb2N1cygpO1xuICAgIHNlbEJveC5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2VsQm94KTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUZvcm0oZjogRm9ybUdyb3VwLCBpbmRleD86IG51bWJlciwgYWxpYXM/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBhbnkgPSBmLnZhbHVlO1xuICAgIGlmIChmLnN0YXR1cyA9PT0gJ1ZBTElEJykgcmV0dXJuIHRydWU7XG5cbiAgICBpZiAoIWZvcm1FcnJvcnMpIHJldHVybiB0cnVlO1xuICAgIE9iamVjdC5lbnRyaWVzKGZvcm1FcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IGYuZ2V0KGtleSk7XG4gICAgICBmb3JtRXJyb3JzW2tleV0gPSAnJztcbiAgICAgIGlmIChjb250cm9sICYmICFjb250cm9sLnZhbGlkKSB7XG4gICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICBmaXJzdE1lc3NhZ2U6IGBFUlJPUlMuJHt0aGlzLmdldEVycm9yRmlyc3RNZXNzYWdlVHJhbnNsYXRlZChcbiAgICAgICAgICAgIGYuZ2V0KGtleSlcbiAgICAgICAgICApfWAsXG4gICAgICAgICAgbGFzdE1lc3NhZ2U6IHRoaXMuZ2V0RXJyb3JMYXN0TWVzc2FnZU5vdFRyYW5zbGF0ZWQoZi5nZXQoa2V5KSlcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybUVycm9yc1trZXldID0gbXNnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKE1vbmtleVV0aWxzLnBlcnNpc3ROdWxsRW1wdHlVbmRlZmluZWQoaW5kZXgpKSB7XG4gICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9yc1tpbmRleCB8fCAwXSA9IGZvcm1FcnJvcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBvYmo6IGFueTtcblxuICAgICAgaWYgKGFsaWFzKSB7XG4gICAgICAgIG9iaiA9IHtcbiAgICAgICAgICBbYWxpYXNdOiB7XG4gICAgICAgICAgICAuLi5mb3JtRXJyb3JzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqID0gZm9ybUVycm9ycztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMgPSB7XG4gICAgICAgIC4uLnRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzLFxuICAgICAgICAuLi5vYmpcbiAgICAgIH07XG4gICAgfVxuICAgIGYubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbFNlcnZpY2VEYXRhKGNsZWFyRGF0YTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzO1xuICAgIE9iamVjdC52YWx1ZXMoY29udGV4dCkuZm9yRWFjaCgoY3R4OiBhbnkpID0+IHtcbiAgICAgIGlmIChjdHggaW5zdGFuY2VvZiBNb25rZXlFY3hDb21tb25zU2VydmljZSkge1xuICAgICAgICBjdHguY2xlYXIoY2xlYXJEYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdChhcmdzOiB7XG4gICAgcGFnaW5hdGlvbk9wdGlvbnM/OiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucztcbiAgICBzdXBwb3J0Q29udHJvbHM/OiBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucztcbiAgICBzY3JvbGxPcHRpb25zPzogTW9ua2V5RWN4U2Nyb2xsT3B0aW9ucztcbiAgICB0cmFuc2xhdGVPcHRpb25zPzogTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucztcbiAgfSkge1xuICAgIGlmIChhcmdzPy5wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgdGhpcy5fX3BhZ2luYXRpb25PcHRpb25zID0gYXJncz8ucGFnaW5hdGlvbk9wdGlvbnM7XG4gICAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnN1cHBvcnRDb250cm9scykge1xuICAgICAgdGhpcy5oYW5kbGVTdXBwb3J0KGFyZ3M/LnN1cHBvcnRDb250cm9scyk7XG4gICAgfVxuICAgIGlmIChhcmdzPy50cmFuc2xhdGVPcHRpb25zKSB7XG4gICAgICB0aGlzLmhhbmRsZVRyYW5zbGF0ZShhcmdzPy50cmFuc2xhdGVPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnNjcm9sbE9wdGlvbnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlVmlld1Njcm9sbChhcmdzLnNjcm9sbE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveShjbGVhckRhdGE6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsLm5leHQoKTtcbiAgICB0aGlzLl9fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB0aGlzLmNsZWFyQWxsU2VydmljZURhdGEoY2xlYXJEYXRhKTtcbiAgICB0aGlzLmhhbmRsZVBhZ2luYXRpb24oZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUVycm9yRnJvbVNlcnZpY2VzKGVycm9yOiBNb25rZXlFY3hFcnJvclJlc3BvbnNlLCBmOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IG51bGw7XG4gICAgaWYgKGVycm9yLnR5cGUgPT09ICdQYXJhbWV0ZXJfRXJyb3InKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhmLnZhbHVlKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgZXJyb3Iubm90aWZpY2F0aW9ucy5mb3JFYWNoKChfOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IF8uc3BsaXQoJzonKVswXTtcbiAgICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IF8uc3BsaXQoJzonKVsxXTtcbiAgICAgICAgICBpZiAoZmllbGQgPT09IGtleSkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0ge1xuICAgICAgICAgICAgICBmaXJzdE1lc3NhZ2U6ICcnLFxuICAgICAgICAgICAgICBsYXN0TWVzc2FnZTogZGVzY3JpcHRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IHtcbiAgICAgICAgICAgICAgLi4udGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMsXG4gICAgICAgICAgICAgIFtrZXldOiBtc2dcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmLmNvbnRyb2xzW2tleV0uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgaW5jb3JyZWN0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCkge1xuICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1Njcm9sbChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICB9XG5cbiAgcHVibGljIGdldEVtYmVkZGVkRGF0YShkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcpOiBhbnlbXSB8IGFueSB7XG4gICAgY29uc3QgeyBfZW1iZWRkZWQgfSA9IGRhdGE7XG4gICAgcmV0dXJuIF9lbWJlZGRlZCA/IF9lbWJlZGRlZFtmaWVsZF0gOiBudWxsO1xuICB9XG5cbiAgcHVibGljIG9wZW5XaW5kb3codXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3BlbihgJHt1cmx9YCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHVibGljIGZpbGxJMThuKGRhdGE6IGFueSkge1xuICAgIHRoaXMuX19pMThuID0gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5UHJlZml4KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogNTUsXG4gICAgICBjbDogNTYsXG4gICAgICBteDogNTJcbiAgICB9W2NvdW50cnldIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnlDdXJyZW5jeUNoYXJ0Rm9ybWF0KGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiB7XG4gICAgICBicjogJ1IkICMsIyMjLCMjMC4wMCcsXG4gICAgICBjbDogJ0NMUCAjLCMjIywjIzAnXG4gICAgfVtjb3VudHJ5XTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5RG9jdW1lbnRNYXNrKHR5cGU6ICdDUEYnIHwgJ0NQTkonIHwgJycsIGNvdW50cnk6IHN0cmluZykge1xuICAgIHJldHVybiBNb25rZXlFY3hVdGlscy5nZXREb2N1bWVudE1hc2sodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeURvY3VtZW50UGxhY2Vob2xkZXIodHlwZTogJ0NQRicgfCAnQ1BOSicgfCAnJywgY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE1vbmtleUVjeFV0aWxzLmdldERvY3VtZW50UGxhY2Vob2xkZXIodHlwZSwgY291bnRyeSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeVZhbGlkYXRvcnMoY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJyOiB7XG4gICAgICAgIGdvdmVybm1lbnRJZDogVmFsaWRhdGVVdGlscy5Eb2N1bWVudFZhbGlkYXRvcixcbiAgICAgICAgemlwQ29kZTogVmFsaWRhdG9ycy56aXBDb2RlQnlDb3VudHJ5KGNvdW50cnkpXG4gICAgICB9LFxuICAgICAgY2w6IHtcbiAgICAgICAgZ292ZXJubWVudElkOiBWYWxpZGF0ZVV0aWxzLkRvY3VtZW50UnV0VmFsaWRhdG9yLFxuICAgICAgICB6aXBDb2RlOiBWYWxpZGF0b3JzLnppcENvZGVCeUNvdW50cnkoY291bnRyeSlcbiAgICAgIH0sXG4gICAgICBteDoge1xuICAgICAgICBnb3Zlcm5tZW50SWQ6IFZhbGlkYXRlVXRpbHMuRG9jdW1lbnRSRkNWYWxpZGF0b3IsXG4gICAgICAgIHppcENvZGU6IFZhbGlkYXRvcnMuemlwQ29kZUJ5Q291bnRyeShjb3VudHJ5KVxuICAgICAgfSxcbiAgICB9W2NvdW50cnldIHx8IHtcbiAgICAgIGdvdmVybm1lbnRJZDogVmFsaWRhdGVVdGlscy5Eb2N1bWVudFZhbGlkYXRvcixcbiAgICAgIHppcENvZGU6IFZhbGlkYXRvcnMuemlwQ29kZUJ5Q291bnRyeSgnYnInKVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaXNBYmxlVG9IYW5kbGVQYWdpbmF0aW9uKCkge1xuICAgIGNvbnN0IHsgX19wYWdpbmF0aW9uT3B0aW9ucyB9ID0gdGhpcztcblxuICAgIGlmIChfX3BhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICBjb25zdCB7IHNlcnZpY2UgfSA9IF9fcGFnaW5hdGlvbk9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IGxpbmtzID0gc2VydmljZS5fX2xpbmtzO1xuICAgICAgaWYgKGxpbmtzICYmIGxpbmtzPy5uZXh0KSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG9uSGFuZGxlUGFnaW5hdGlvbigpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBzZXJ2aWNlIH0gPSBfX3BhZ2luYXRpb25PcHRpb25zO1xuICAgICAgc2VydmljZS5kb1BhZ2luYXRpb24oKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsVUFBVSxFQUNYLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUszQyxNQUFNLE9BQWdCLGFBQWE7SUFlakM7UUFWQSx3QkFBbUIsR0FBc0MsSUFBSSxDQUFDO1FBSTlELGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFN0IsY0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFLL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztZQUNoRCxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNoQixNQUFNLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUFDLENBQUMsT0FBTyxDQUNoRSxDQUFDO1FBQ0osT0FBTyxDQUFDLG1EQUFtRCxDQUFDLElBQUksQ0FDOUQsU0FBUyxDQUFDLFNBQVMsQ0FDcEIsQ0FBQyxJQUFJLGFBQWEs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LE9BQU8sSUFBSSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQztRQUVyQyxJQUFJLG1CQUFtQixFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQztZQUN4QyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzswR0EvWG1CLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUhsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgTW9ua2V5RWN4Q29tbW9uc1NlcnZpY2UsXG4gIE1vbmtleUVjeEVycm9yUmVzcG9uc2UsXG4gIE1vbmtleUVjeFBhZ2luYXRpb25PcHRpb25zLFxuICBNb25rZXlFY3hTY3JvbGxPcHRpb25zLFxuICBNb25rZXlFY3hTdXBwb3J0T3B0aW9ucyxcbiAgTW9ua2V5RWN4VHJhbnNsYXRlT3B0aW9ucyxcbiAgTW9ua2V5RWN4VXRpbHMsXG4gIFZhbGlkYXRlVXRpbHMsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnbW9ua2V5LWZyb250LWNvcmUnO1xuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICdtb25rZXktc3R5bGUtZ3VpZGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYmFzZUNvbXBvbmVudF0nXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBfX21vbmtleWVjeEZvcm1FcnJvcnM6IGFueSB8IGFueVtdO1xuXG4gIF9fdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PjtcblxuICBfX3BhZ2luYXRpb25PcHRpb25zOiBNb25rZXlFY3hQYWdpbmF0aW9uT3B0aW9ucyB8IG51bGwgPSBudWxsO1xuXG4gIF9faTE4bjogYW55O1xuXG4gIF9faXNNb2JpbGUgPSB0aGlzLmlzTW9iaWxlKCk7XG5cbiAgX19sb2NhbGVzID0gWydwdC1CUicsICdlcy1DTCcsICdlcy1NWCcsICdlbi1VUyddO1xuXG4gIHByaXZhdGUgcGFnaW5hdGlvbkZ1bmM6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fX3Vuc3Vic2NyaWJlQWxsID0gbmV3IFN1YmplY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNb2JpbGUoKSB7XG4gICAgY29uc3QgaXNNb2JpbGVXaWR0aCA9ICh3aW5kb3cuc2NyZWVuLndpZHRoIDw9IDY0MCkgfHxcbiAgICAgICh3aW5kb3cubWF0Y2hNZWRpYSAmJlxuICAgICAgICB3aW5kb3cubWF0Y2hNZWRpYSgnb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY0MHB4KScpLm1hdGNoZXNcbiAgICAgICk7XG4gICAgcmV0dXJuICgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8TW9iaWxlL2kudGVzdChcbiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnRcbiAgICApKSB8fCBpc01vYmlsZVdpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQYWdpbmF0aW9uKGNyZWF0ZSA9IHRydWUpIHtcbiAgICBjb25zdCB7IF9fcGFnaW5hdGlvbk9wdGlvbnMgfSA9IHRoaXM7XG5cbiAgICBpZiAoX19wYWdpbmF0aW9uT3B0aW9ucykge1xuICAgICAgY29uc3QgeyBtYWluRWxlbWVudCwgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcblxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1haW5FbGVtZW50KTtcblxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudC5zY3JvbGwgPSBudWxsO1xuICAgICAgICBlbGVtZW50Lm9uc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChlbGVtZW50IGFzIGFueSkuZXZlbnRMaXN0ZW5lcnMoJ3Njcm9sbCcpKTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZWxlbWVudCBhcyBhbnkpLmV2ZW50TGlzdGVuZXJzKCdzY3JvbGwnKVswXSk7XG4gICAgICAgIGlmIChjcmVhdGUpIHtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIG9mZnNldEhlaWdodCB9ID0gZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSBzY3JvbGxIZWlnaHQgLSBvZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChjb250ZW50SGVpZ2h0IDw9IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgICBzZXJ2aWNlLmRvUGFnaW5hdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdXBwb3J0KHN1cHBvcnRDb250cm9sczogTW9ua2V5RWN4U3VwcG9ydE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHNlcnZpY2UsIHNob3cgfSA9IHN1cHBvcnRDb250cm9scztcbiAgICBjb25zdCBtZXRob2QgPSBzaG93ID8gJ3Nob3cnIDogJ2hpZGUnO1xuICAgIHNlcnZpY2VbbWV0aG9kLnRvTG93ZXJDYXNlKCldKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRyYW5zbGF0ZSh0cmFuc2xhdGVPcHRpb25zOiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zKSB7XG4gICAgY29uc3QgeyBzZXJ2aWNlIH0gPSB0cmFuc2xhdGVPcHRpb25zO1xuICAgIHNlcnZpY2UuX19vbmkxOG5EYXRhQ2hhbmdlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9fdW5zdWJzY3JpYmVBbGwpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBzZXJ2aWNlLl9faTE4bjtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLl9faTE4biA9IGRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWaWV3U2Nyb2xsKG9wdGlvbnM6IE1vbmtleUVjeFNjcm9sbE9wdGlvbnMpIHtcbiAgICBjb25zdCB7IGVsZW1lbnRJZCwgc2VydmljZSB9ID0gb3B0aW9ucztcblxuICAgIGlmIChlbGVtZW50SWQgPT09IHNlcnZpY2U/Ll9fc2F2ZWRTdGF0ZT8uc2Nyb2xsRWxlbWVudElkKSB7XG4gICAgICB0aGlzLmdvU2Nyb2xsKGVsZW1lbnRJZCk7XG5cbiAgICAgIHNlcnZpY2UuX19zYXZlZFN0YXRlLnNjcm9sbEVsZW1lbnRJZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvckZpcnN0TWVzc2FnZVRyYW5zbGF0ZWQoZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcigncmVxdWlyZWQnKSkgcmV0dXJuICdGSUVMRC1SRVFVSVJFRCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZCcpKSByZXR1cm4gJ0ZJRUxELUlOVkFMSUQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2VtYWlsJykpIHJldHVybiAnSU5WQUxJRC1FTUFJTCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHJldHVybiAnTUlOLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHJldHVybiAnTUFYLUxFTkdUSCc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4JykpIHJldHVybiAnTUFYJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtaW4nKSkgcmV0dXJuICdNSU4nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ3Bhc3N3b3Jkc05vdE1hdGNoaW5nJykpIHJldHVybiAnTUFUQ0gtUEFTU1dPUkQnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWREYXRlJykpIHJldHVybiAnSU5WQUxJRC1EQVRFJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVHJ1ZScpKSByZXR1cm4gJ0lOVkFMSUQtVFJVRSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENwZkNucGonKSkgcmV0dXJuICdJTlZBTElELURPQ1VNRU5UJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkWmlwQ29kZScpKSByZXR1cm4gJ0lOVkFMSUQtWklQQ09ERSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZENvbWJvJykpIHJldHVybiAnSU5WQUxJRC1DT01CTyc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZFVybCcpKSByZXR1cm4gJ0lOVkFMSUQtVVJMJztcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdpbnZhbGlkVW5sb2NrUmVnaXN0ZXInKSkgeyByZXR1cm4gJ0lOVkFMSUQtVU5MT0NLLVJFR0lTVEVSJzsgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2RhdGVTdGFydE11c3RCZUxlc3NUaGFuQW5kJykpIHtcbiAgICAgIHJldHVybiAnREFURS1TVEFSVC1NVVNULUJFLUxFU1MtVEhBTi1BTkQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdkYXRlRW5kTXVzdEJlR3JlYXRlclRoYW5TdGFydCcpKSB7XG4gICAgICByZXR1cm4gJ0RBVEUtRU5ELU1VU1QtQkUtR1JFQVRFUi1USEFOLVNBUlQnO1xuICAgIH1cbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdwaG9uZScpKSByZXR1cm4gJ0lOVkFMSUQtUEhPTkUnO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2ludmFsaWRWYWx1ZUdyZWF0ZXJUaGFuWmVybycpKSByZXR1cm4gJ0lOVkFMSUQtR1JFQVRFUi1USEFOLVpFUk8nO1xuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ2RhdGVSYW5nZScpKSByZXR1cm4gJ0lOVkFMSUQtREFURS1SQU5HRSc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignZGlmZmVyZW50RnJvbVplcm8nKSkgcmV0dXJuICdESUZGRVJFTlQtRlJPTVQtWkVSTyc7XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignaW52YWxpZE1pblllYXJzJykpIHtcbiAgICAgIHJldHVybiBgSU5WQUxJRC1NSU4tWUVBUlMtJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ2ludmFsaWRNaW5ZZWFycycpLnllYXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJ0ZJRUxELUlOVkFMSUQnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvckxhc3RNZXNzYWdlTm90VHJhbnNsYXRlZChmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IG51bGwpIHtcbiAgICBpZiAoZm9ybUNvbnRyb2w/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgcmV0dXJuIGAke2Zvcm1Db250cm9sPy5nZXRFcnJvcignbWlubGVuZ3RoJykucmVxdWlyZWRMZW5ndGh9IGNhcmFjdGVyZXMuYDtcbiAgICB9XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgIHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21heGxlbmd0aCcpLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbD8uaGFzRXJyb3IoJ21heCcpKSB7IHJldHVybiBgJHtmb3JtQ29udHJvbD8uZ2V0RXJyb3IoJ21heCcpLm1heH1gOyB9XG4gICAgaWYgKGZvcm1Db250cm9sPy5oYXNFcnJvcignbWluJykpIHsgcmV0dXJuIGAke2Zvcm1Db250cm9sPy5nZXRFcnJvcignbWluJykubWlufWA7IH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVxdWlyZWRGaWVsZHNQb3NpdGlvbigpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGVycm9yOiBIVE1MQ29sbGVjdGlvbk9mPEVsZW1lbnQ+ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Vycm9yJyk7XG5cbiAgICAgIGxldCBsZXRIRWVsZTogRWxlbWVudCA9IG51bGw7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBlcnJvci5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAoYCR7ZXJyb3JbaV0udGV4dENvbnRlbnR9YC50cmltKCkpIHtcbiAgICAgICAgICBsZXRIRWVsZSA9IGVycm9yW2ldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXRIRWVsZT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZUZvcm1XaXRoVHJhbnNsYXRlKGY6IEZvcm1Hcm91cCwgaW5kZXg/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBhbnkgPSBmLnZhbHVlO1xuXG4gICAgaWYgKGYuc3RhdHVzID09PSAnVkFMSUQnKSByZXR1cm4gdHJ1ZTtcblxuICAgIGlmICghZm9ybUVycm9ycykgcmV0dXJuIHRydWU7XG4gICAgT2JqZWN0LmVudHJpZXMoZm9ybUVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZi5nZXQoa2V5KTtcbiAgICAgIGZvcm1FcnJvcnNba2V5XSA9ICcnO1xuICAgICAgaWYgKGNvbnRyb2wgJiYgIWNvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgY29uc3QgbXNnID0ge1xuICAgICAgICAgIGZpcnN0OiBgRVJST1JTLiR7dGhpcy5nZXRFcnJvckZpcnN0TWVzc2FnZVRyYW5zbGF0ZWQoZi5nZXQoa2V5KSl9YCxcbiAgICAgICAgICBsYXN0OiB0aGlzLmdldEVycm9yTGFzdE1lc3NhZ2VOb3RUcmFuc2xhdGVkKGYuZ2V0KGtleSkpXG4gICAgICAgIH07XG4gICAgICAgIGZvcm1FcnJvcnNba2V5XSA9IG1zZztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChNb25rZXlVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGluZGV4KSkgeyB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9yc1tpbmRleCB8fCAwXSA9IGZvcm1FcnJvcnM7IH0gZWxzZSB7XG4gICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IGZvcm1FcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNvcHlUb0NsaXBib2FyZCh2YWw6IHN0cmluZykge1xuICAgIGNvbnN0IHNlbEJveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgc2VsQm94LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBzZWxCb3guc3R5bGUubGVmdCA9ICcwJztcbiAgICBzZWxCb3guc3R5bGUudG9wID0gJzAnO1xuICAgIHNlbEJveC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICAgIHNlbEJveC52YWx1ZSA9IHZhbDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNlbEJveCk7XG4gICAgc2VsQm94LmZvY3VzKCk7XG4gICAgc2VsQm94LnNlbGVjdCgpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChzZWxCb3gpO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlRm9ybShmOiBGb3JtR3JvdXAsIGluZGV4PzogbnVtYmVyLCBhbGlhcz86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZvcm1FcnJvcnM6IGFueSA9IGYudmFsdWU7XG4gICAgaWYgKGYuc3RhdHVzID09PSAnVkFMSUQnKSByZXR1cm4gdHJ1ZTtcblxuICAgIGlmICghZm9ybUVycm9ycykgcmV0dXJuIHRydWU7XG4gICAgT2JqZWN0LmVudHJpZXMoZm9ybUVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gZi5nZXQoa2V5KTtcbiAgICAgIGZvcm1FcnJvcnNba2V5XSA9ICcnO1xuICAgICAgaWYgKGNvbnRyb2wgJiYgIWNvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgY29uc3QgbXNnID0ge1xuICAgICAgICAgIGZpcnN0TWVzc2FnZTogYEVSUk9SUy4ke3RoaXMuZ2V0RXJyb3JGaXJzdE1lc3NhZ2VUcmFuc2xhdGVkKFxuICAgICAgICAgICAgZi5nZXQoa2V5KVxuICAgICAgICAgICl9YCxcbiAgICAgICAgICBsYXN0TWVzc2FnZTogdGhpcy5nZXRFcnJvckxhc3RNZXNzYWdlTm90VHJhbnNsYXRlZChmLmdldChrZXkpKVxuICAgICAgICB9O1xuICAgICAgICBmb3JtRXJyb3JzW2tleV0gPSBtc2c7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoTW9ua2V5VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChpbmRleCkpIHtcbiAgICAgIHRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzW2luZGV4IHx8IDBdID0gZm9ybUVycm9ycztcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG9iajogYW55O1xuXG4gICAgICBpZiAoYWxpYXMpIHtcbiAgICAgICAgb2JqID0ge1xuICAgICAgICAgIFthbGlhc106IHtcbiAgICAgICAgICAgIC4uLmZvcm1FcnJvcnNcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmogPSBmb3JtRXJyb3JzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyA9IHtcbiAgICAgICAgLi4udGhpcy5fX21vbmtleWVjeEZvcm1FcnJvcnMsXG4gICAgICAgIC4uLm9ialxuICAgICAgfTtcbiAgICB9XG4gICAgZi5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oYW5kbGVSZXF1aXJlZEZpZWxkc1Bvc2l0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWdub3JlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsU2VydmljZURhdGEoY2xlYXJEYXRhOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXM7XG4gICAgT2JqZWN0LnZhbHVlcyhjb250ZXh0KS5mb3JFYWNoKChjdHg6IGFueSkgPT4ge1xuICAgICAgaWYgKGN0eCBpbnN0YW5jZW9mIE1vbmtleUVjeENvbW1vbnNTZXJ2aWNlKSB7XG4gICAgICAgIGN0eC5jbGVhcihjbGVhckRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KGFyZ3M6IHtcbiAgICBwYWdpbmF0aW9uT3B0aW9ucz86IE1vbmtleUVjeFBhZ2luYXRpb25PcHRpb25zO1xuICAgIHN1cHBvcnRDb250cm9scz86IE1vbmtleUVjeFN1cHBvcnRPcHRpb25zO1xuICAgIHNjcm9sbE9wdGlvbnM/OiBNb25rZXlFY3hTY3JvbGxPcHRpb25zO1xuICAgIHRyYW5zbGF0ZU9wdGlvbnM/OiBNb25rZXlFY3hUcmFuc2xhdGVPcHRpb25zO1xuICB9KSB7XG4gICAgaWYgKGFyZ3M/LnBhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICB0aGlzLl9fcGFnaW5hdGlvbk9wdGlvbnMgPSBhcmdzPy5wYWdpbmF0aW9uT3B0aW9ucztcbiAgICAgIHRoaXMuaGFuZGxlUGFnaW5hdGlvbigpO1xuICAgIH1cbiAgICBpZiAoYXJncz8uc3VwcG9ydENvbnRyb2xzKSB7XG4gICAgICB0aGlzLmhhbmRsZVN1cHBvcnQoYXJncz8uc3VwcG9ydENvbnRyb2xzKTtcbiAgICB9XG4gICAgaWYgKGFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgIHRoaXMuaGFuZGxlVHJhbnNsYXRlKGFyZ3M/LnRyYW5zbGF0ZU9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoYXJncz8uc2Nyb2xsT3B0aW9ucykge1xuICAgICAgdGhpcy5oYW5kbGVWaWV3U2Nyb2xsKGFyZ3Muc2Nyb2xsT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KGNsZWFyRGF0YTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICB0aGlzLl9fdW5zdWJzY3JpYmVBbGwubmV4dCgpO1xuICAgIHRoaXMuX191bnN1YnNjcmliZUFsbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuY2xlYXJBbGxTZXJ2aWNlRGF0YShjbGVhckRhdGEpO1xuICAgIHRoaXMuaGFuZGxlUGFnaW5hdGlvbihmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRXJyb3JGcm9tU2VydmljZXMoZXJyb3I6IE1vbmtleUVjeEVycm9yUmVzcG9uc2UsIGY6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzID0gbnVsbDtcbiAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ1BhcmFtZXRlcl9FcnJvcicpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGYudmFsdWUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBlcnJvci5ub3RpZmljYXRpb25zLmZvckVhY2goKF86IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpZWxkID0gXy5zcGxpdCgnOicpWzBdO1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gXy5zcGxpdCgnOicpWzFdO1xuICAgICAgICAgIGlmIChmaWVsZCA9PT0ga2V5KSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSB7XG4gICAgICAgICAgICAgIGZpcnN0TWVzc2FnZTogJycsXG4gICAgICAgICAgICAgIGxhc3RNZXNzYWdlOiBkZXNjcmlwdGlvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuX19tb25rZXllY3hGb3JtRXJyb3JzID0ge1xuICAgICAgICAgICAgICAuLi50aGlzLl9fbW9ua2V5ZWN4Rm9ybUVycm9ycyxcbiAgICAgICAgICAgICAgW2tleV06IG1zZ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGYuY29udHJvbHNba2V5XS5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICBpbmNvcnJlY3Q6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnb0JhY2soKSB7XG4gICAgd2luZG93Lmhpc3RvcnkuYmFjaygpO1xuICB9XG5cbiAgcHVibGljIGdvU2Nyb2xsKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIGlmIChlbGVtZW50KSBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RW1iZWRkZWREYXRhKGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IGFueVtdIHwgYW55IHtcbiAgICBjb25zdCB7IF9lbWJlZGRlZCB9ID0gZGF0YTtcbiAgICByZXR1cm4gX2VtYmVkZGVkID8gX2VtYmVkZGVkW2ZpZWxkXSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgb3BlbldpbmRvdyh1cmw6IHN0cmluZykge1xuICAgIHdpbmRvdy5vcGVuKGAke3VybH1gLCAnX2JsYW5rJyk7XG4gIH1cblxuICBwdWJsaWMgZmlsbEkxOG4oZGF0YTogYW55KSB7XG4gICAgdGhpcy5fX2kxOG4gPSBkYXRhO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnlQcmVmaXgoY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJyOiA1NSxcbiAgICAgIGNsOiA1NixcbiAgICAgIG14OiA1MlxuICAgIH1bY291bnRyeV0gfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeUN1cnJlbmN5Q2hhcnRGb3JtYXQoY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJyOiAnUiQgIywjIyMsIyMwLjAwJyxcbiAgICAgIGNsOiAnQ0xQICMsIyMjLCMjMCdcbiAgICB9W2NvdW50cnldO1xuICB9XG5cbiAgcHVibGljIGdldENvdW50cnlEb2N1bWVudE1hc2sodHlwZTogJ0NQRicgfCAnQ1BOSicgfCAnJywgY291bnRyeTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIE1vbmtleUVjeFV0aWxzLmdldERvY3VtZW50TWFzayh0eXBlLCBjb3VudHJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5RG9jdW1lbnRQbGFjZWhvbGRlcih0eXBlOiAnQ1BGJyB8ICdDUE5KJyB8ICcnLCBjb3VudHJ5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gTW9ua2V5RWN4VXRpbHMuZ2V0RG9jdW1lbnRQbGFjZWhvbGRlcih0eXBlLCBjb3VudHJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5VmFsaWRhdG9ycyhjb3VudHJ5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnI6IHtcbiAgICAgICAgZ292ZXJubWVudElkOiBWYWxpZGF0ZVV0aWxzLkRvY3VtZW50VmFsaWRhdG9yLFxuICAgICAgICB6aXBDb2RlOiBWYWxpZGF0b3JzLnppcENvZGVCeUNvdW50cnkoY291bnRyeSlcbiAgICAgIH0sXG4gICAgICBjbDoge1xuICAgICAgICBnb3Zlcm5tZW50SWQ6IFZhbGlkYXRlVXRpbHMuRG9jdW1lbnRSdXRWYWxpZGF0b3IsXG4gICAgICAgIHppcENvZGU6IFZhbGlkYXRvcnMuemlwQ29kZUJ5Q291bnRyeShjb3VudHJ5KVxuICAgICAgfSxcbiAgICAgIG14OiB7XG4gICAgICAgIGdvdmVybm1lbnRJZDogVmFsaWRhdGVVdGlscy5Eb2N1bWVudFJGQ1ZhbGlkYXRvcixcbiAgICAgICAgemlwQ29kZTogVmFsaWRhdG9ycy56aXBDb2RlQnlDb3VudHJ5KGNvdW50cnkpXG4gICAgICB9LFxuICAgIH1bY291bnRyeV0gfHwge1xuICAgICAgZ292ZXJubWVudElkOiBWYWxpZGF0ZVV0aWxzLkRvY3VtZW50VmFsaWRhdG9yLFxuICAgICAgemlwQ29kZTogVmFsaWRhdG9ycy56aXBDb2RlQnlDb3VudHJ5KCdicicpXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FibGVUb0hhbmRsZVBhZ2luYXRpb24oKSB7XG4gICAgY29uc3QgeyBfX3BhZ2luYXRpb25PcHRpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKF9fcGFnaW5hdGlvbk9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHsgc2VydmljZSB9ID0gX19wYWdpbmF0aW9uT3B0aW9ucztcblxuICAgICAgY29uc3QgbGlua3MgPSBzZXJ2aWNlLl9fbGlua3M7XG4gICAgICBpZiAobGlua3MgJiYgbGlua3M/Lm5leHQpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgb25IYW5kbGVQYWdpbmF0aW9uKCkge1xuICAgIGNvbnN0IHsgX19wYWdpbmF0aW9uT3B0aW9ucyB9ID0gdGhpcztcblxuICAgIGlmIChfX3BhZ2luYXRpb25PcHRpb25zKSB7XG4gICAgICBjb25zdCB7IHNlcnZpY2UgfSA9IF9fcGFnaW5hdGlvbk9wdGlvbnM7XG4gICAgICBzZXJ2aWNlLmRvUGFnaW5hdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -142,6 +142,19 @@ class BaseComponent {
142
142
  }
143
143
  return '';
144
144
  }
145
+ handleRequiredFieldsPosition() {
146
+ setTimeout(() => {
147
+ const error = document.getElementsByTagName('error');
148
+ let letHEele = null;
149
+ for (let i = 0; i <= error.length; i += 1) {
150
+ if (`${error[i].textContent}`.trim()) {
151
+ letHEele = error[i];
152
+ break;
153
+ }
154
+ }
155
+ letHEele === null || letHEele === void 0 ? void 0 : letHEele.scrollIntoView({ behavior: 'smooth', block: 'center' });
156
+ }, 0);
157
+ }
145
158
  validateFormWithTranslate(f, index) {
146
159
  const formErrors = f.value;
147
160
  if (f.status === 'VALID')
@@ -213,6 +226,12 @@ class BaseComponent {
213
226
  this.__monkeyecxFormErrors = Object.assign(Object.assign({}, this.__monkeyecxFormErrors), obj);
214
227
  }
215
228
  f.markAllAsTouched();
229
+ try {
230
+ this.handleRequiredFieldsPosition();
231
+ }
232
+ catch (e) {
233
+ // ignore
234
+ }
216
235
  return false;
217
236
  }
218
237
  clearAllServiceData(clearData) {