@sumaris-net/ngx-components 18.26.13 → 18.27.0-alpha1

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.
Files changed (37) hide show
  1. package/doc/changelog.md +3 -1
  2. package/esm2022/public_api.mjs +2 -1
  3. package/esm2022/src/app/core/core.module.mjs +4 -1
  4. package/esm2022/src/app/core/form/form.utils.mjs +12 -1
  5. package/esm2022/src/app/shared/field-accessor.mjs +16 -0
  6. package/esm2022/src/app/shared/focusable.mjs +1 -1
  7. package/esm2022/src/app/shared/inputs.mjs +22 -3
  8. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +175 -46
  9. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +69 -23
  10. package/esm2022/src/app/shared/material/datetime/material.date.mjs +18 -4
  11. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +116 -28
  12. package/esm2022/src/app/shared/material/duration/duration.module.mjs +10 -3
  13. package/esm2022/src/app/shared/material/duration/material.duration.mjs +63 -33
  14. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +3 -3
  15. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +14 -1
  16. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +16 -1
  17. package/esm2022/src/app/shared/material/testing/common.test.mjs +218 -27
  18. package/fesm2022/sumaris-net.ngx-components.mjs +985 -429
  19. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  20. package/package.json +1 -1
  21. package/public_api.d.ts +1 -0
  22. package/src/app/core/core.module.d.ts +15 -15
  23. package/src/app/core/form/form.utils.d.ts +7 -0
  24. package/src/app/shared/field-accessor.d.ts +51 -0
  25. package/src/app/shared/focusable.d.ts +3 -1
  26. package/src/app/shared/inputs.d.ts +3 -1
  27. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +20 -7
  28. package/src/app/shared/material/boolean/material.boolean.d.ts +12 -4
  29. package/src/app/shared/material/datetime/material.date.d.ts +6 -2
  30. package/src/app/shared/material/datetime/material.datetime.d.ts +20 -4
  31. package/src/app/shared/material/duration/duration.module.d.ts +3 -1
  32. package/src/app/shared/material/duration/material.duration.d.ts +15 -13
  33. package/src/app/shared/material/latlong/material.latlong-input.d.ts +5 -3
  34. package/src/app/shared/material/latlong/material.latlong.d.ts +5 -1
  35. package/src/app/shared/material/testing/common.test.d.ts +49 -6
  36. package/src/assets/i18n/en.json +1 -1
  37. package/src/assets/manifest.json +1 -1
@@ -5,6 +5,7 @@ import { computeDecimalDegrees, computeDecimalPart, LAT_LONG_PATTERN_MAX_DECIMAL
5
5
  import { MAT_FORM_FIELD, MatFormFieldControl } from '@angular/material/form-field';
6
6
  import { Subject, Subscription } from 'rxjs';
7
7
  import { maskitoNumberOptionsGenerator } from '@maskito/kit';
8
+ import { isFocusableElement } from '../../focusable';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/forms";
10
11
  import * as i2 from "@ionic/angular";
@@ -158,6 +159,17 @@ export class MatLatLongFieldInput {
158
159
  this.stateChanges.complete();
159
160
  this._subscription.unsubscribe();
160
161
  }
162
+ focus(options, origin) {
163
+ if (!this.degreesInput)
164
+ return;
165
+ // Need a delay to prevent early focus event, just after a blur event
166
+ setTimeout(() => {
167
+ if (isFocusableElement(this.degreesInput.nativeElement)) {
168
+ this.degreesInput.nativeElement.focus(options, origin);
169
+ }
170
+ });
171
+ }
172
+ /* -- protected functions -- */
161
173
  onFocusIn(event) {
162
174
  if (!this.focused) {
163
175
  this.focused = true;
@@ -172,6 +184,7 @@ export class MatLatLongFieldInput {
172
184
  this.stateChanges.next();
173
185
  }
174
186
  }
187
+ /* private functions */
175
188
  updatePattern(pattern) {
176
189
  const mustUpdateFormGroup = this._pattern !== pattern;
177
190
  this._pattern = pattern;
@@ -468,4 +481,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
468
481
  }], readonly: [{
469
482
  type: Input
470
483
  }] } });
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy1pbnB1dC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUVsQiw2QkFBNkIsRUFLN0IscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix5QkFBeUIsR0FDMUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsY0FBYyxFQUFnQixtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7QUFhN0QsTUFBTSxPQUFPLG9CQUFvQjtJQW1KckI7SUFDbUM7SUFDaEI7SUFwSjdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzBCLFlBQVks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QWdDbEMsS0FBSztzQkFEUixLQUFLO2dCQVlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBYUcsSUFBSTtzQkFBWixLQUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBU2QsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7XG4gIGNvbXB1dGVEZWNpbWFsRGVncmVlcyxcbiAgY29tcHV0ZURlY2ltYWxQYXJ0LFxuICBJTGF0TG9uZ0RhdGEsXG4gIExBVF9MT05HX1BBVFRFUk5fTUFYX0RFQ0lNQUxTLFxuICBMYXRMb25nUGF0dGVybixcbiAgTGF0TG9uZ1NpZ24sXG4gIExhdExvbmdTaWduVmFsdWUsXG4gIExhdExvbmdUeXBlLFxuICBzcGxpdERlZ3JlZXNUb0REQXJyYXksXG4gIHNwbGl0RGVncmVlc1RvRERNTUFycmF5LFxuICBzcGxpdERlZ3JlZXNUb0RETU1TU0FycmF5LFxufSBmcm9tICcuL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IE1BVF9GT1JNX0ZJRUxELCBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tICdAbWFza2l0by9raXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtbGF0bG9uZy1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5sYXRsb25nLWlucHV0Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWF0ZXJpYWwubGF0bG9uZy1pbnB1dC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogTWF0TGF0TG9uZ0ZpZWxkSW5wdXQgfV0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmxhYmVsLWZsb2F0aW5nXSc6ICdzaG91bGRMYWJlbEZsb2F0JyxcbiAgICAnW2lkXSc6ICdpZCcsXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMYXRMb25nRmllbGRJbnB1dCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8bnVtYmVyPiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc3RhdGljIG5leHRJZCA9IDA7XG4gIEBWaWV3Q2hpbGQoJ2RlZ3JlZXMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZGVncmVlc0lucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtaW51dGVzJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIG1pbnV0ZXNJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2Vjb25kcycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzZWNvbmRzSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NpZ24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgc2lnbklucHV0OiBFbGVtZW50UmVmO1xuXG4gIHByb3RlY3RlZCBmb3JtR3JvdXAgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLmdyb3VwKHtcbiAgICBkZWdyZWVzOiBbJyddLFxuICAgIG1pbnV0ZXM6IFsnJ10sXG4gICAgc2Vjb25kczogWycnXSxcbiAgICBzaWduOiBbPExhdExvbmdTaWduVmFsdWU+bnVsbF0sXG4gIH0pO1xuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBmb2N1c2VkID0gZmFsc2U7XG4gIHRvdWNoZWQgPSBmYWxzZTtcbiAgY29udHJvbFR5cGUgPSAnbWF0LWxhdGxvbmctaW5wdXQnO1xuICBpZCA9IGBtYXQtbGF0bG9uZy1pbnB1dC0ke01hdExhdExvbmdGaWVsZElucHV0Lm5leHRJZCsrfWA7XG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGdldCBlbXB0eSgpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIGlzTmlsKHRoaXMubmdDb250cm9sLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2YWx1ZTogeyBkZWdyZWVzLCBtaW51dGVzLCBzZWNvbmRzIH0sXG4gICAgICB9ID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgICByZXR1cm4gIWRlZ3JlZXMgJiYgIW1pbnV0ZXMgJiYgIXNlY29uZHM7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIEBJbnB1dCgnYXJpYS1kZXNjcmliZWRieScpIHVzZXJBcmlhRGVzY3JpYmVkQnk6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZzsgLy8gTm90IHVzZWRcblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmRpc2FibGVkICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGdldCB2YWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgICBjb25zdCBkZWdyZWVzID0gdGhpcy5zYWZlUGFyc2VGbG9hdChwYXJ0cy5kZWdyZWVzKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLnNhZmVQYXJzZUZsb2F0KHBhcnRzLm1pbnV0ZXMpO1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQocGFydHMuc2Vjb25kcyk7XG4gICAgICBjb25zdCBzaWduID0gcGFydHMuc2lnbjtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC52YWxpZFxuICAgICAgICA/IGlzTmlsKGRlZ3JlZXMpIHx8IHRoaXMucGF0dGVybiA9PT0gJ0REJ1xuICAgICAgICAgID8gZGVncmVlc1xuICAgICAgICAgIDogY29tcHV0ZURlY2ltYWxEZWdyZWVzKGRlZ3JlZXMsIG1pbnV0ZXMsIHNlY29uZHMsIHNpZ24sIHRoaXMubWF4RGVjaW1hbHMpXG4gICAgICAgIDogbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlRm9ybUdyb3VwKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBlcnJvclN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5pbnZhbGlkICYmIHRoaXMudG91Y2hlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2RlZmF1bHRTaWduOiBMYXRMb25nU2lnbjtcblxuICBASW5wdXQoKSBzZXQgZGVmYXVsdFNpZ24odmFsdWU6IExhdExvbmdTaWduKSB7XG4gICAgdGhpcy5fZGVmYXVsdFNpZ24gPSB2YWx1ZTtcbiAgICBjb25zdCBwYXJ0cyA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIGlmIChpc05pbE9yQmxhbmsocGFydHMuZGVncmVlcykgJiYgaXNOaWxPckJsYW5rKHBhcnRzLnNlY29uZHMpICYmIGlzTmlsT3JCbGFuayhwYXJ0cy5taW51dGVzKSkge1xuICAgICAgY29uc3QgZm9ybVZhbHVlID0gaXNOaWwodmFsdWUpID8gbnVsbCA6IHZhbHVlID09PSAnLScgPyAtMSA6IDE7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ3NpZ24nKS5zZXRWYWx1ZShmb3JtVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkZWZhdWx0U2lnbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFNpZ247XG4gIH1cblxuICBASW5wdXQoKSB0eXBlOiBMYXRMb25nVHlwZTtcblxuICBASW5wdXQoJ2xhdExvbmdQYXR0ZXJuJylcbiAgc2V0IHBhdHRlcm4odmFsdWU6IExhdExvbmdQYXR0ZXJuKSB7XG4gICAgdGhpcy51cGRhdGVQYXR0ZXJuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBwYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXR0ZXJuO1xuICB9XG5cbiAgQElucHV0KCkgbWF4RGVjaW1hbHM6IG51bWJlcjtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyIHwgbnVsbDtcbiAgcHJpdmF0ZSBfcGF0dGVybjogTGF0TG9uZ1BhdHRlcm47XG4gIHByb3RlY3RlZCBkZWdyZWVzU3ltYm9sVW5pdCA9ICfCsCc7XG4gIHByb3RlY3RlZCBtaW51dGVzU3ltYm9sVW5pdCA9IFwiJ1wiO1xuICBwcm90ZWN0ZWQgc2Vjb25kc1N5bWJvbFVuaXQgPSAnXCInO1xuICBwcm90ZWN0ZWQgc2hvd01pbnV0ZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dTZWNvbmRzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93U2lnbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZGVncmVlc01hc2s6IE1hc2tpdG9PcHRpb25zO1xuICBwcm90ZWN0ZWQgbWludXRlc01hc2s6IE1hc2tpdG9PcHRpb25zO1xuICBwcm90ZWN0ZWQgc2Vjb25kc01hc2s6IE1hc2tpdG9PcHRpb25zO1xuICBwcm90ZWN0ZWQgZGVncmVlc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBtaW51dGVzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlY29uZHNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbGFzdElucHV0TWF4RGVjaW1hbHMgPSBMQVRfTE9OR19QQVRURVJOX01BWF9ERUNJTUFMUztcblxuICBwcml2YXRlIGxvZ1ByZWZpeCA9ICdbbWF0LWxhdGxvbmctaW5wdXRdJztcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEKSBwdWJsaWMgX2Zvcm1GaWVsZDogTWF0Rm9ybUZpZWxkLFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGUgfHwgJ2xhdGl0dWRlJztcbiAgICB0aGlzLnVwZGF0ZVBhdHRlcm4odGhpcy5wYXR0ZXJuID8/ICdERE1NJyk7XG5cbiAgICAvLyBVcGRhdGUgdmFsaWRhdG9ycyAoYWRkIHJlcXVpcmVkIHRvIGNvbnRyb2xzKVxuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xuXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQodGhpcy5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLm1hcmtGb3JDaGVjaygpKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9uRm9jdXNJbihldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICghdGhpcy5mb2N1c2VkKSB7XG4gICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEVsZW1lbnQpKSB7XG4gICAgICB0aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVBhdHRlcm4ocGF0dGVybjogTGF0TG9uZ1BhdHRlcm4pIHtcbiAgICBjb25zdCBtdXN0VXBkYXRlRm9ybUdyb3VwID0gdGhpcy5fcGF0dGVybiAhPT0gcGF0dGVybjtcbiAgICB0aGlzLl9wYXR0ZXJuID0gcGF0dGVybjtcbiAgICB0aGlzLnNob3dTaWduID0gdGhpcy5wYXR0ZXJuICE9PSAnREQnO1xuXG4gICAgc3dpdGNoICh0aGlzLnBhdHRlcm4pIHtcbiAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyA9IDc7XG4gICAgICAgIHRoaXMuc2hvd01pbnV0ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93U2Vjb25kcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRlZ3JlZXNQbGFjZWhvbGRlciA9IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/ICdDT01NT04uTEFUX0xPTkcuRERfRERERERERF9QTEFDRUhPTERFUicgOiAnQ09NTU9OLkxBVF9MT05HLkRERF9EREREREREX1BMQUNFSE9MREVSJztcbiAgICAgICAgdGhpcy5kZWdyZWVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMsXG4gICAgICAgICAgbWluOiB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyAtOTAgOiAtMTgwLFxuICAgICAgICAgIG1heDogdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gOTAgOiAxODAsXG4gICAgICAgICAgbWludXNTaWduOiAnLScsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RETU0nOlxuICAgICAgICB0aGlzLmxhc3RJbnB1dE1heERlY2ltYWxzID0gMztcbiAgICAgICAgdGhpcy5zaG93TWludXRlcyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kZWdyZWVzUGxhY2Vob2xkZXIgPSB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkREX1BMQUNFSE9MREVSJyA6ICdDT01NT04uTEFUX0xPTkcuREREX1BMQUNFSE9MREVSJztcbiAgICAgICAgdGhpcy5taW51dGVzUGxhY2Vob2xkZXIgPSAnQ09NTU9OLkxBVF9MT05HLk1NX01NTV9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuZGVncmVlc01hc2sgPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgcHJlY2lzaW9uOiAwLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IDkwIDogMTgwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5taW51dGVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMsXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogNjAgLSBjb21wdXRlRGVjaW1hbFBhcnQoMSwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vIERlZmF1bHQgaXMgRERNTVNTXG4gICAgICAgIHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMgPSAyO1xuICAgICAgICB0aGlzLnNob3dNaW51dGVzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93U2Vjb25kcyA9IHRydWU7XG4gICAgICAgIHRoaXMuZGVncmVlc1BsYWNlaG9sZGVyID0gdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gJ0NPTU1PTi5MQVRfTE9ORy5ERF9QTEFDRUhPTERFUicgOiAnQ09NTU9OLkxBVF9MT05HLkRERF9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMubWludXRlc1BsYWNlaG9sZGVyID0gJ0NPTU1PTi5MQVRfTE9ORy5NTV9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuc2Vjb25kc1BsYWNlaG9sZGVyID0gJ0NPTU1PTi5MQVRfTE9ORy5TU19TU19QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuZGVncmVlc01hc2sgPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgcHJlY2lzaW9uOiAwLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IDkwIDogMTgwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5taW51dGVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IDAsXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogNTksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlY29uZHNNYXNrID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgIHByZWNpc2lvbjogdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyxcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiA2MCAtIGNvbXB1dGVEZWNpbWFsUGFydCgxLCB0aGlzLmxhc3RJbnB1dE1heERlY2ltYWxzKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmIChtdXN0VXBkYXRlRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1Hcm91cCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1Hcm91cCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29tcHV0ZUxhdExvbmdGb3JtR3JvdXBWYWx1ZSh2YWx1ZSk7XG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IFNldHRpbmcgdmFsdWVgLCB2YWx1ZSwgcmVzdWx0KTtcblxuICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHtcbiAgICAgIGRlZ3JlZXM6IHJlc3VsdC5kZWdyZWVzPy50b1N0cmluZygpIHx8IG51bGwsXG4gICAgICBtaW51dGVzOiByZXN1bHQubWludXRlcz8udG9TdHJpbmcoKSB8fCBudWxsLFxuICAgICAgc2Vjb25kczogcmVzdWx0LnNlY29uZHM/LnRvU3RyaW5nKCkgfHwgbnVsbCxcbiAgICAgIHNpZ246IHJlc3VsdC5zaWduLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGNvbnRyb2xOYW1lOiBzdHJpbmcsIG5leHRDb250cm9sTmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENhbiBhdXRvZm9jdXMgbmV4dCBjb250cm9sID9cbiAgICBsZXQgZm9jdXNOZXh0ID0gZmFsc2U7XG4gICAgc3dpdGNoIChjb250cm9sTmFtZSkge1xuICAgICAgY2FzZSAnZGVncmVlcyc6IHtcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQodGhpcy5mb3JtR3JvdXAudmFsdWUuZGVncmVlcyk7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgJiYgKGRlZ3JlZXMgPT09IDAgfHwgZGVncmVlcyA+IDkpKSB7XG4gICAgICAgICAgZm9jdXNOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdsb25naXR1ZGUnICYmIChkZWdyZWVzID09PSAwIHx8IGRlZ3JlZXMgPiAxOCkpIHtcbiAgICAgICAgICBmb2N1c05leHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbWludXRlcyc6IHtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQodGhpcy5mb3JtR3JvdXAudmFsdWUubWludXRlcyk7XG4gICAgICAgIGlmIChtaW51dGVzID09PSAwIHx8IG1pbnV0ZXMgPiA2KSB7XG4gICAgICAgICAgZm9jdXNOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3NlY29uZHMnOiB7XG4gICAgICAgIC8vIGZvY3VzTmV4dCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmb2N1c05leHQpIHtcbiAgICAgIHRoaXMuYXV0b0ZvY3VzTmV4dChjb250cm9sTmFtZSwgbmV4dENvbnRyb2xOYW1lKTtcbiAgICB9XG4gICAgLy8gVXBkYXRlIHZhbHVlXG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgYXV0b0ZvY3VzTmV4dChjb250cm9sTmFtZTogc3RyaW5nLCBuZXh0Q29udHJvbE5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS5lcnJvcnMgJiYgbmV4dENvbnRyb2xOYW1lKSB7XG4gICAgICB0aGlzLmdldEVsZW1lbnRCeU5hbWUobmV4dENvbnRyb2xOYW1lKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBhdXRvRm9jdXNQcmV2KGNvbnRyb2xOYW1lOiBzdHJpbmcsIHByZXZDb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzTmlsT3JCbGFuayh0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWUpKSB7XG4gICAgICB0aGlzLmdldEVsZW1lbnRCeU5hbWUocHJldkNvbnRyb2xOYW1lKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbGVtZW50QnlOYW1lKG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ2RlZ3JlZXMnOlxuICAgICAgICByZXR1cm4gdGhpcy5kZWdyZWVzSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWludXRlc0lucHV0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgIHJldHVybiB0aGlzLnNlY29uZHNJbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNhc2UgJ3NpZ24nOlxuICAgICAgICByZXR1cm4gdGhpcy5zaWduSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5sb2dQcmVmaXh9IE5vIEhUTUxFbGVtZW50IHdpdGggbmFtZSAnJHtuYW1lfSdgKTtcbiAgICB9XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY29udHJvbEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1sYXRsb25nLWlucHV0LWNvbnRhaW5lcicpITtcbiAgICBjb250cm9sRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzLmpvaW4oJyAnKSk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKCkge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IERFQlVHIG9uQ29udGFpbmVyQ2xpY2tgKTtcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICB0aGlzLmRlZ3JlZXNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmIChpc05pbE9yQmxhbmsodGhpcy5mb3JtR3JvdXAudmFsdWUubWludXRlcykpIHtcbiAgICAgIHRoaXMubWludXRlc0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKGlzTmlsT3JCbGFuayh0aGlzLmZvcm1Hcm91cC52YWx1ZS5zZWNvbmRzKSkge1xuICAgICAgdGhpcy5zZWNvbmRzSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoaXNOaWwodGhpcy5mb3JtR3JvdXAudmFsdWUuc2lnbikpIHtcbiAgICAgIHRoaXMuc2lnbklucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUxhdExvbmdGb3JtR3JvdXBWYWx1ZShyYXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogSUxhdExvbmdEYXRhIHtcbiAgICBjb25zdCBpc0xvbmdpdHVkZSA9IHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZSc7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnID8gdGhpcy5zYWZlUGFyc2VGbG9hdChyYXdWYWx1ZS5yZXBsYWNlKC8sL2csICcuJykpIDogcmF3VmFsdWU7XG4gICAgY29uc3QgcmVzdWx0OiBJTGF0TG9uZ0RhdGEgPSB7XG4gICAgICBkZWdyZWVzOiBudWxsLFxuICAgICAgbWludXRlczogbnVsbCxcbiAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICBzaWduOiBpc05vdE5pbCh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZSA8IDBcbiAgICAgICAgICA/IC0xXG4gICAgICAgICAgOiAxXG4gICAgICAgIDogLy8gVXNlIGRlZmF1bHQgc2lnbiwgaWYgYW55XG4gICAgICAgICAgdGhpcy5fZGVmYXVsdFNpZ25cbiAgICAgICAgICA/IHRoaXMuX2RlZmF1bHRTaWduID09PSAnLSdcbiAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgIDogMVxuICAgICAgICAgIDogbnVsbCxcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICByZXN1bHQuZGVncmVlcyA9IDA7XG4gICAgfSBlbHNlIGlmIChpc05vdE5pbCh2YWx1ZSkpIHtcbiAgICAgIC8vIFBhcnNlIG9wdGlvbnNcbiAgICAgIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgICAgICAgbG9uZ2l0dWRlOiBpc0xvbmdpdHVkZSxcbiAgICAgICAgcGF0dGVybjogdGhpcy5wYXR0ZXJuLFxuICAgICAgICBtYXhEZWNpbWFsczogdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyxcbiAgICAgICAgZml4TGF0TG9uZzogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERCcpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRWYWx1ZSA9IHNwbGl0RGVncmVlc1RvRERBcnJheSh2YWx1ZSwgcGFyc2VPcHRpb25zKS5zbGljZSgxKSBhcyBudW1iZXJbXTsgLy8gcmVtb3ZlIHNpZ247XG4gICAgICAgIHJlc3VsdC5zZWNvbmRzID0gMDtcbiAgICAgICAgcmVzdWx0Lm1pbnV0ZXMgPSAwO1xuICAgICAgICByZXN1bHQuZGVncmVlcyA9IChzcGxpdFZhbHVlWzBdICsgY29tcHV0ZURlY2ltYWxQYXJ0KHNwbGl0VmFsdWVbMV0gPz8gMCwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscykpICogKHJlc3VsdC5zaWduIHx8IDEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERE1NJykge1xuICAgICAgICBjb25zdCBzcGxpdFZhbHVlID0gc3BsaXREZWdyZWVzVG9ERE1NQXJyYXkodmFsdWUsIHBhcnNlT3B0aW9ucyk7XG4gICAgICAgIHJlc3VsdC5zZWNvbmRzID0gMDtcbiAgICAgICAgcmVzdWx0Lm1pbnV0ZXMgPSBNYXRoLmFicygoc3BsaXRWYWx1ZVsxXSA/PyAwKSArIGNvbXB1dGVEZWNpbWFsUGFydChzcGxpdFZhbHVlWzJdID8/IDAsIHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMpKTtcbiAgICAgICAgcmVzdWx0LmRlZ3JlZXMgPSBNYXRoLmFicyghcmVzdWx0Lm1pbnV0ZXMgJiYgaXNOaWxPckJsYW5rKHNwbGl0VmFsdWVbMF0pID8gMCA6IChzcGxpdFZhbHVlWzBdID8/IDApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgLy8gRERNTVNTXG4gICAgICAgIGNvbnN0IHNwbGl0VmFsdWUgPSBzcGxpdERlZ3JlZXNUb0RETU1TU0FycmF5KHZhbHVlLCBwYXJzZU9wdGlvbnMpO1xuICAgICAgICByZXN1bHQuc2Vjb25kcyA9IE1hdGguYWJzKChzcGxpdFZhbHVlWzJdID8/IDApICsgY29tcHV0ZURlY2ltYWxQYXJ0KHNwbGl0VmFsdWVbM10gPz8gMCwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscykpO1xuICAgICAgICByZXN1bHQubWludXRlcyA9ICFyZXN1bHQuc2Vjb25kcyAmJiAhc3BsaXRWYWx1ZVsxXSA/IDAgOiBNYXRoLmFicyhzcGxpdFZhbHVlWzFdID8/IDApO1xuICAgICAgICByZXN1bHQuZGVncmVlcyA9ICFyZXN1bHQuc2Vjb25kcyAmJiAhcmVzdWx0Lm1pbnV0ZXMgJiYgaXNOaWxPckJsYW5rKHNwbGl0VmFsdWVbMF0pID8gMCA6IE1hdGguYWJzKHNwbGl0VmFsdWVbMF0gPz8gMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc2FmZVBhcnNlRmxvYXQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGlzTm90TmlsT3JCbGFuayh2YWx1ZSkgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsaWRhdG9ycygpIHtcbiAgICBjb25zdCB7IG1pbnV0ZXMsIHNlY29uZHMsIHNpZ24gfSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzO1xuXG4gICAgLy8gVXBkYXRlIG1pbnV0ZXNcbiAgICBpZiAodGhpcy5zaG93TWludXRlcyAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgbWludXRlcy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW51dGVzLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlY29uZHNcbiAgICBpZiAodGhpcy5zaG93U2Vjb25kcyAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgc2Vjb25kcy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWNvbmRzLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNpZ25cbiAgICBpZiAodGhpcy5zaG93U2lnbiAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgc2lnbi5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaWduLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKHJlYWRvbmx5KSB7XG4gIDxpb24tdGV4dD5cbiAgICB7e1xuICAgICAgbmdDb250cm9sLnZhbHVlXG4gICAgICAgIHwgbGF0TG9uZ0Zvcm1hdDogeyBwYXR0ZXJuOiBwYXR0ZXJuLCBtYXhEZWNpbWFsczogbGFzdElucHV0TWF4RGVjaW1hbHMsIHR5cGU6IHR5cGUsIHBsYWNlaG9sZGVyQ2hhcjogJycgfVxuICAgIH19XG4gIDwvaW9uLXRleHQ+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIHJvbGU9XCJncm91cFwiXG4gICAgY2xhc3M9XCJtYXQtbGF0bG9uZy1pbnB1dC1jb250YWluZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX2Zvcm1GaWVsZD8uZ2V0TGFiZWxJZCgpXCJcbiAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oJGV2ZW50KVwiXG4gICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICAjZGVncmVlc1xuICAgICAgYXJpYS1sYWJlbD1cIkRlZ3JlZXNcIlxuICAgICAgW2NsYXNzLmRlZ3JlZXMtb25seV09XCJwYXR0ZXJuID09PSAnREQnXCJcbiAgICAgIFtjbGFzcy5kZWdyZWVzXT1cInBhdHRlcm4gIT09ICdERCdcIlxuICAgICAgW2NsYXNzLmxhdGl0dWRlXT1cInR5cGUgPT09ICdsYXRpdHVkZSdcIlxuICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRlZ3JlZXNQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWdyZWVzXCJcbiAgICAgIFttYXNraXRvXT1cImRlZ3JlZXNNYXNrXCJcbiAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgnZGVncmVlcycsICdtaW51dGVzJylcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtdW5pdFwiPlxuICAgICAge3sgZGVncmVlc1N5bWJvbFVuaXQgfX1cbiAgICA8L3NwYW4+XG5cbiAgICBAaWYgKHNob3dNaW51dGVzKSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgI21pbnV0ZXNcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIlxuICAgICAgICBbY2xhc3MubWludXRlc109XCJzaG93U2Vjb25kc1wiXG4gICAgICAgIFtjbGFzcy5taW51dGVzLXNlY29uZHNdPVwiIXNob3dTZWNvbmRzXCJcbiAgICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCJcbiAgICAgICAgW21hc2tpdG9dPVwibWludXRlc01hc2tcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJ21pbnV0ZXMnLCAnc2Vjb25kcycpXCJcbiAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJhdXRvRm9jdXNQcmV2KCdtaW51dGVzJywgJ2RlZ3JlZXMnKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtdW5pdFwiPlxuICAgICAgICB7eyBtaW51dGVzU3ltYm9sVW5pdCB9fVxuICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAjc2Vjb25kc1xuICAgICAgICBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiXG4gICAgICAgIGNsYXNzPVwic2Vjb25kc1wiXG4gICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2Vjb25kc1BsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2Vjb25kc1wiXG4gICAgICAgIFttYXNraXRvXT1cInNlY29uZHNNYXNrXCJcbiAgICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCdzZWNvbmRzJywgJ3NpZ24nKVwiXG4gICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwiYXV0b0ZvY3VzUHJldignc2Vjb25kcycsICdtaW51dGVzJylcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLXVuaXRcIj5cbiAgICAgICAge3sgc2Vjb25kc1N5bWJvbFVuaXQgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICA8IS0tIHNpZ24gLS0+XG4gICAgQGlmIChzaG93U2lnbikge1xuICAgICAgPHNwYW4gY2xhc3M9XCJzaWduLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICNzaWduXG4gICAgICAgIGhpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JcbiAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZ1xuICAgICAgICBhcmlhLWxhYmVsPVwiU2lnblwiXG4gICAgICAgIGNsYXNzPVwic2lnblwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNpZ25cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgKHR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX1BMQUNFSE9MREVSJyA6ICdDT01NT04uTEFUX0xPTkcuTE9OR19TSUdOX1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIChmb2N1c2luKT1cInNpZ24ub3BlbigpXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJoYW5kbGVJbnB1dCgnc2lnbicpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIiAoY2xpY2spPVwic2lnbi5jbG9zZSgpXCI+XG4gICAgICAgICAge3sgKHR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX04nIDogJ0NPTU1PTi5MQVRfTE9ORy5MT05HX1NJR05fRScpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIi0xXCIgKGNsaWNrKT1cInNpZ24uY2xvc2UoKVwiPlxuICAgICAgICAgIHt7ICh0eXBlID09PSAnbGF0aXR1ZGUnID8gJ0NPTU1PTi5MQVRfTE9ORy5MQVRfU0lHTl9TJyA6ICdDT01NT04uTEFUX0xPTkcuTE9OR19TSUdOX1cnKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgIH1cblxuICA8L2Rpdj5cbn1cbiJdfQ==
484
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy1pbnB1dC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUVsQiw2QkFBNkIsRUFLN0IscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix5QkFBeUIsR0FDMUIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsY0FBYyxFQUFnQixtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFjbkQsTUFBTSxPQUFPLG9CQUFvQjtJQW1KckI7SUFDbUM7SUFDaEI7SUFw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RSxVQUFVLEVBQUU7Z0JBQ0UsWUFBWTtzQkFBdkQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNFLFlBQVk7c0JBQXZELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDRCxTQUFTO3NCQUFqRCxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBK0JaLG1CQUFtQjtzQkFBN0MsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBUXJCLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFjbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWdDbEMsS0FBSztzQkFEUixLQUFLO2dCQVlPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBYUcsSUFBSTtzQkFBWixLQUFLO2dCQUdGLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBU2QsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7XG4gIGNvbXB1dGVEZWNpbWFsRGVncmVlcyxcbiAgY29tcHV0ZURlY2ltYWxQYXJ0LFxuICBJTGF0TG9uZ0RhdGEsXG4gIExBVF9MT05HX1BBVFRFUk5fTUFYX0RFQ0lNQUxTLFxuICBMYXRMb25nUGF0dGVybixcbiAgTGF0TG9uZ1NpZ24sXG4gIExhdExvbmdTaWduVmFsdWUsXG4gIExhdExvbmdUeXBlLFxuICBzcGxpdERlZ3JlZXNUb0REQXJyYXksXG4gIHNwbGl0RGVncmVlc1RvRERNTUFycmF5LFxuICBzcGxpdERlZ3JlZXNUb0RETU1TU0FycmF5LFxufSBmcm9tICcuL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IE1BVF9GT1JNX0ZJRUxELCBNYXRGb3JtRmllbGQsIE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3IgfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtpc0ZvY3VzYWJsZUVsZW1lbnR9IGZyb20gJy4uLy4uL2ZvY3VzYWJsZSc7XG5pbXBvcnQge0ZvY3VzT3JpZ2lufSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1sYXRsb25nLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLmxhdGxvbmctaW5wdXQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tYXRlcmlhbC5sYXRsb25nLWlucHV0LnNjc3MnLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNYXRMYXRMb25nRmllbGRJbnB1dCB9XSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MubGFiZWwtZmxvYXRpbmddJzogJ3Nob3VsZExhYmVsRmxvYXQnLFxuICAgICdbaWRdJzogJ2lkJyxcbiAgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdExhdExvbmdGaWVsZElucHV0IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxudW1iZXI+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0aWMgbmV4dElkID0gMDtcbiAgQFZpZXdDaGlsZCgnZGVncmVlcycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBkZWdyZWVzSW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ21pbnV0ZXMnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbWludXRlc0lucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZWNvbmRzJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHNlY29uZHNJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2lnbicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBzaWduSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJvdGVjdGVkIGZvcm1Hcm91cCA9IGluamVjdChGb3JtQnVpbGRlcikuZ3JvdXAoe1xuICAgIGRlZ3JlZXM6IFsnJ10sXG4gICAgbWludXRlczogWycnXSxcbiAgICBzZWNvbmRzOiBbJyddLFxuICAgIHNpZ246IFs8TGF0TG9uZ1NpZ25WYWx1ZT5udWxsXSxcbiAgfSk7XG4gIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGZvY3VzZWQgPSBmYWxzZTtcbiAgdG91Y2hlZCA9IGZhbHNlO1xuICBjb250cm9sVHlwZSA9ICdtYXQtbGF0bG9uZy1pbnB1dCc7XG4gIGlkID0gYG1hdC1sYXRsb25nLWlucHV0LSR7TWF0TGF0TG9uZ0ZpZWxkSW5wdXQubmV4dElkKyt9YDtcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgZ2V0IGVtcHR5KCkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm4gaXNOaWwodGhpcy5uZ0NvbnRyb2wudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlOiB7IGRlZ3JlZXMsIG1pbnV0ZXMsIHNlY29uZHMgfSxcbiAgICAgIH0gPSB0aGlzLmZvcm1Hcm91cDtcbiAgICAgIHJldHVybiAhZGVncmVlcyAmJiAhbWludXRlcyAmJiAhc2Vjb25kcztcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICB9XG5cbiAgQElucHV0KCdhcmlhLWRlc2NyaWJlZGJ5JykgdXNlckFyaWFEZXNjcmliZWRCeTogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nOyAvLyBOb3QgdXNlZFxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZGlzYWJsZWQgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgZ2V0IHZhbHVlKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgY29uc3QgcGFydHMgPSB0aGlzLmZvcm1Hcm91cC52YWx1ZTtcbiAgICAgIGNvbnN0IGRlZ3JlZXMgPSB0aGlzLnNhZmVQYXJzZUZsb2F0KHBhcnRzLmRlZ3JlZXMpO1xuICAgICAgY29uc3QgbWludXRlcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQocGFydHMubWludXRlcyk7XG4gICAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5zYWZlUGFyc2VGbG9hdChwYXJ0cy5zZWNvbmRzKTtcbiAgICAgIGNvbnN0IHNpZ24gPSBwYXJ0cy5zaWduO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnZhbGlkXG4gICAgICAgID8gaXNOaWwoZGVncmVlcykgfHwgdGhpcy5wYXR0ZXJuID09PSAnREQnXG4gICAgICAgICAgPyBkZWdyZWVzXG4gICAgICAgICAgOiBjb21wdXRlRGVjaW1hbERlZ3JlZXMoZGVncmVlcywgbWludXRlcywgc2Vjb25kcywgc2lnbiwgdGhpcy5tYXhEZWNpbWFscylcbiAgICAgICAgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JtR3JvdXAodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmludmFsaWQgJiYgdGhpcy50b3VjaGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFNpZ246IExhdExvbmdTaWduO1xuXG4gIEBJbnB1dCgpIHNldCBkZWZhdWx0U2lnbih2YWx1ZTogTGF0TG9uZ1NpZ24pIHtcbiAgICB0aGlzLl9kZWZhdWx0U2lnbiA9IHZhbHVlO1xuICAgIGNvbnN0IHBhcnRzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgaWYgKGlzTmlsT3JCbGFuayhwYXJ0cy5kZWdyZWVzKSAmJiBpc05pbE9yQmxhbmsocGFydHMuc2Vjb25kcykgJiYgaXNOaWxPckJsYW5rKHBhcnRzLm1pbnV0ZXMpKSB7XG4gICAgICBjb25zdCBmb3JtVmFsdWUgPSBpc05pbCh2YWx1ZSkgPyBudWxsIDogdmFsdWUgPT09ICctJyA/IC0xIDogMTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnc2lnbicpLnNldFZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRlZmF1bHRTaWduKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0U2lnbjtcbiAgfVxuXG4gIEBJbnB1dCgpIHR5cGU6IExhdExvbmdUeXBlO1xuXG4gIEBJbnB1dCgnbGF0TG9uZ1BhdHRlcm4nKVxuICBzZXQgcGF0dGVybih2YWx1ZTogTGF0TG9uZ1BhdHRlcm4pIHtcbiAgICB0aGlzLnVwZGF0ZVBhdHRlcm4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IHBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdHRlcm47XG4gIH1cblxuICBASW5wdXQoKSBtYXhEZWNpbWFsczogbnVtYmVyO1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcml2YXRlIF9wYXR0ZXJuOiBMYXRMb25nUGF0dGVybjtcbiAgcHJvdGVjdGVkIGRlZ3JlZXNTeW1ib2xVbml0ID0gJ8KwJztcbiAgcHJvdGVjdGVkIG1pbnV0ZXNTeW1ib2xVbml0ID0gXCInXCI7XG4gIHByb3RlY3RlZCBzZWNvbmRzU3ltYm9sVW5pdCA9ICdcIic7XG4gIHByb3RlY3RlZCBzaG93TWludXRlcyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dTaWduID0gZmFsc2U7XG4gIHByb3RlY3RlZCBkZWdyZWVzTWFzazogTWFza2l0b09wdGlvbnM7XG4gIHByb3RlY3RlZCBtaW51dGVzTWFzazogTWFza2l0b09wdGlvbnM7XG4gIHByb3RlY3RlZCBzZWNvbmRzTWFzazogTWFza2l0b09wdGlvbnM7XG4gIHByb3RlY3RlZCBkZWdyZWVzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgcHJvdGVjdGVkIG1pbnV0ZXNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgc2Vjb25kc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBsYXN0SW5wdXRNYXhEZWNpbWFscyA9IExBVF9MT05HX1BBVFRFUk5fTUFYX0RFQ0lNQUxTO1xuXG4gIHByaXZhdGUgbG9nUHJlZml4ID0gJ1ttYXQtbGF0bG9uZy1pbnB1dF0nO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTEQpIHB1YmxpYyBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2xcbiAgKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMudHlwZSB8fCAnbGF0aXR1ZGUnO1xuICAgIHRoaXMudXBkYXRlUGF0dGVybih0aGlzLnBhdHRlcm4gPz8gJ0RETU0nKTtcblxuICAgIC8vIFVwZGF0ZSB2YWxpZGF0b3JzIChhZGQgcmVxdWlyZWQgdG8gY29udHJvbHMpXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XG5cbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZCh0aGlzLm5nQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2QubWFya0ZvckNoZWNrKCkpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cblxuICBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zLCBvcmlnaW4/OiBGb2N1c09yaWdpbikge1xuICAgIGlmICghdGhpcy5kZWdyZWVzSW5wdXQpIHJldHVybjtcblxuICAgIC8vIE5lZWQgYSBkZWxheSB0byBwcmV2ZW50IGVhcmx5IGZvY3VzIGV2ZW50LCBqdXN0IGFmdGVyIGEgYmx1ciBldmVudFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGlzRm9jdXNhYmxlRWxlbWVudCh0aGlzLmRlZ3JlZXNJbnB1dC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICB0aGlzLmRlZ3JlZXNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKG9wdGlvbnMsIG9yaWdpbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zICAtLSAqL1xuXG4gIHByb3RlY3RlZCBvbkZvY3VzSW4oZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Gb2N1c091dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICghdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCkpIHtcbiAgICAgIHRoaXMudG91Y2hlZCA9IHRydWU7XG4gICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyogcHJpdmF0ZSBmdW5jdGlvbnMgKi9cblxuICBwcml2YXRlIHVwZGF0ZVBhdHRlcm4ocGF0dGVybjogTGF0TG9uZ1BhdHRlcm4pIHtcbiAgICBjb25zdCBtdXN0VXBkYXRlRm9ybUdyb3VwID0gdGhpcy5fcGF0dGVybiAhPT0gcGF0dGVybjtcbiAgICB0aGlzLl9wYXR0ZXJuID0gcGF0dGVybjtcbiAgICB0aGlzLnNob3dTaWduID0gdGhpcy5wYXR0ZXJuICE9PSAnREQnO1xuXG4gICAgc3dpdGNoICh0aGlzLnBhdHRlcm4pIHtcbiAgICAgIGNhc2UgJ0REJzpcbiAgICAgICAgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyA9IDc7XG4gICAgICAgIHRoaXMuc2hvd01pbnV0ZXMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93U2Vjb25kcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRlZ3JlZXNQbGFjZWhvbGRlciA9IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/ICdDT01NT04uTEFUX0xPTkcuRERfRERERERERF9QTEFDRUhPTERFUicgOiAnQ09NTU9OLkxBVF9MT05HLkRERF9EREREREREX1BMQUNFSE9MREVSJztcbiAgICAgICAgdGhpcy5kZWdyZWVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMsXG4gICAgICAgICAgbWluOiB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyAtOTAgOiAtMTgwLFxuICAgICAgICAgIG1heDogdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gOTAgOiAxODAsXG4gICAgICAgICAgbWludXNTaWduOiAnLScsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RETU0nOlxuICAgICAgICB0aGlzLmxhc3RJbnB1dE1heERlY2ltYWxzID0gMztcbiAgICAgICAgdGhpcy5zaG93TWludXRlcyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd1NlY29uZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kZWdyZWVzUGxhY2Vob2xkZXIgPSB0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkREX1BMQUNFSE9MREVSJyA6ICdDT01NT04uTEFUX0xPTkcuREREX1BMQUNFSE9MREVSJztcbiAgICAgICAgdGhpcy5taW51dGVzUGxhY2Vob2xkZXIgPSAnQ09NTU9OLkxBVF9MT05HLk1NX01NTV9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuZGVncmVlc01hc2sgPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgcHJlY2lzaW9uOiAwLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IDkwIDogMTgwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5taW51dGVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMsXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogNjAgLSBjb21wdXRlRGVjaW1hbFBhcnQoMSwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vIERlZmF1bHQgaXMgRERNTVNTXG4gICAgICAgIHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMgPSAyO1xuICAgICAgICB0aGlzLnNob3dNaW51dGVzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93U2Vjb25kcyA9IHRydWU7XG4gICAgICAgIHRoaXMuZGVncmVlc1BsYWNlaG9sZGVyID0gdGhpcy50eXBlID09PSAnbGF0aXR1ZGUnID8gJ0NPTU1PTi5MQVRfTE9ORy5ERF9QTEFDRUhPTERFUicgOiAnQ09NTU9OLkxBVF9MT05HLkRERF9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMubWludXRlc1BsYWNlaG9sZGVyID0gJ0NPTU1PTi5MQVRfTE9ORy5NTV9QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuc2Vjb25kc1BsYWNlaG9sZGVyID0gJ0NPTU1PTi5MQVRfTE9ORy5TU19TU19QTEFDRUhPTERFUic7XG4gICAgICAgIHRoaXMuZGVncmVlc01hc2sgPSBtYXNraXRvTnVtYmVyT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgcHJlY2lzaW9uOiAwLFxuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBtYXg6IHRoaXMudHlwZSA9PT0gJ2xhdGl0dWRlJyA/IDkwIDogMTgwLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5taW51dGVzTWFzayA9IG1hc2tpdG9OdW1iZXJPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICBwcmVjaXNpb246IDAsXG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIG1heDogNTksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlY29uZHNNYXNrID0gbWFza2l0b051bWJlck9wdGlvbnNHZW5lcmF0b3Ioe1xuICAgICAgICAgIHByZWNpc2lvbjogdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyxcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbWF4OiA2MCAtIGNvbXB1dGVEZWNpbWFsUGFydCgxLCB0aGlzLmxhc3RJbnB1dE1heERlY2ltYWxzKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmIChtdXN0VXBkYXRlRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1Hcm91cCh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUZvcm1Hcm91cCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29tcHV0ZUxhdExvbmdGb3JtR3JvdXBWYWx1ZSh2YWx1ZSk7XG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IFNldHRpbmcgdmFsdWVgLCB2YWx1ZSwgcmVzdWx0KTtcblxuICAgIHRoaXMuZm9ybUdyb3VwLnNldFZhbHVlKHtcbiAgICAgIGRlZ3JlZXM6IHJlc3VsdC5kZWdyZWVzPy50b1N0cmluZygpIHx8IG51bGwsXG4gICAgICBtaW51dGVzOiByZXN1bHQubWludXRlcz8udG9TdHJpbmcoKSB8fCBudWxsLFxuICAgICAgc2Vjb25kczogcmVzdWx0LnNlY29uZHM/LnRvU3RyaW5nKCkgfHwgbnVsbCxcbiAgICAgIHNpZ246IHJlc3VsdC5zaWduLFxuICAgIH0pO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGNvbnRyb2xOYW1lOiBzdHJpbmcsIG5leHRDb250cm9sTmFtZT86IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENhbiBhdXRvZm9jdXMgbmV4dCBjb250cm9sID9cbiAgICBsZXQgZm9jdXNOZXh0ID0gZmFsc2U7XG4gICAgc3dpdGNoIChjb250cm9sTmFtZSkge1xuICAgICAgY2FzZSAnZGVncmVlcyc6IHtcbiAgICAgICAgY29uc3QgZGVncmVlcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQodGhpcy5mb3JtR3JvdXAudmFsdWUuZGVncmVlcyk7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdsYXRpdHVkZScgJiYgKGRlZ3JlZXMgPT09IDAgfHwgZGVncmVlcyA+IDkpKSB7XG4gICAgICAgICAgZm9jdXNOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdsb25naXR1ZGUnICYmIChkZWdyZWVzID09PSAwIHx8IGRlZ3JlZXMgPiAxOCkpIHtcbiAgICAgICAgICBmb2N1c05leHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnbWludXRlcyc6IHtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IHRoaXMuc2FmZVBhcnNlRmxvYXQodGhpcy5mb3JtR3JvdXAudmFsdWUubWludXRlcyk7XG4gICAgICAgIGlmIChtaW51dGVzID09PSAwIHx8IG1pbnV0ZXMgPiA2KSB7XG4gICAgICAgICAgZm9jdXNOZXh0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3NlY29uZHMnOiB7XG4gICAgICAgIC8vIGZvY3VzTmV4dCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmb2N1c05leHQpIHtcbiAgICAgIHRoaXMuYXV0b0ZvY3VzTmV4dChjb250cm9sTmFtZSwgbmV4dENvbnRyb2xOYW1lKTtcbiAgICB9XG4gICAgLy8gVXBkYXRlIHZhbHVlXG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICB9XG5cbiAgYXV0b0ZvY3VzTmV4dChjb250cm9sTmFtZTogc3RyaW5nLCBuZXh0Q29udHJvbE5hbWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS5lcnJvcnMgJiYgbmV4dENvbnRyb2xOYW1lKSB7XG4gICAgICB0aGlzLmdldEVsZW1lbnRCeU5hbWUobmV4dENvbnRyb2xOYW1lKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBhdXRvRm9jdXNQcmV2KGNvbnRyb2xOYW1lOiBzdHJpbmcsIHByZXZDb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzTmlsT3JCbGFuayh0aGlzLmZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWUpKSB7XG4gICAgICB0aGlzLmdldEVsZW1lbnRCeU5hbWUocHJldkNvbnRyb2xOYW1lKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRFbGVtZW50QnlOYW1lKG5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgJ2RlZ3JlZXMnOlxuICAgICAgICByZXR1cm4gdGhpcy5kZWdyZWVzSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgcmV0dXJuIHRoaXMubWludXRlc0lucHV0Py5uYXRpdmVFbGVtZW50O1xuICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgIHJldHVybiB0aGlzLnNlY29uZHNJbnB1dD8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGNhc2UgJ3NpZ24nOlxuICAgICAgICByZXR1cm4gdGhpcy5zaWduSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5sb2dQcmVmaXh9IE5vIEhUTUxFbGVtZW50IHdpdGggbmFtZSAnJHtuYW1lfSdgKTtcbiAgICB9XG4gIH1cblxuICBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY29udHJvbEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1sYXRsb25nLWlucHV0LWNvbnRhaW5lcicpITtcbiAgICBjb250cm9sRWxlbWVudD8uc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgaWRzLmpvaW4oJyAnKSk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKCkge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoYCR7dGhpcy5sb2dQcmVmaXh9IERFQlVHIG9uQ29udGFpbmVyQ2xpY2tgKTtcbiAgICBpZiAodGhpcy5yZWFkb25seSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICB0aGlzLmRlZ3JlZXNJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmIChpc05pbE9yQmxhbmsodGhpcy5mb3JtR3JvdXAudmFsdWUubWludXRlcykpIHtcbiAgICAgIHRoaXMubWludXRlc0lucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKGlzTmlsT3JCbGFuayh0aGlzLmZvcm1Hcm91cC52YWx1ZS5zZWNvbmRzKSkge1xuICAgICAgdGhpcy5zZWNvbmRzSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoaXNOaWwodGhpcy5mb3JtR3JvdXAudmFsdWUuc2lnbikpIHtcbiAgICAgIHRoaXMuc2lnbklucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUxhdExvbmdGb3JtR3JvdXBWYWx1ZShyYXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogSUxhdExvbmdEYXRhIHtcbiAgICBjb25zdCBpc0xvbmdpdHVkZSA9IHRoaXMudHlwZSA9PT0gJ2xvbmdpdHVkZSc7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnID8gdGhpcy5zYWZlUGFyc2VGbG9hdChyYXdWYWx1ZS5yZXBsYWNlKC8sL2csICcuJykpIDogcmF3VmFsdWU7XG4gICAgY29uc3QgcmVzdWx0OiBJTGF0TG9uZ0RhdGEgPSB7XG4gICAgICBkZWdyZWVzOiBudWxsLFxuICAgICAgbWludXRlczogbnVsbCxcbiAgICAgIHNlY29uZHM6IG51bGwsXG4gICAgICBzaWduOiBpc05vdE5pbCh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZSA8IDBcbiAgICAgICAgICA/IC0xXG4gICAgICAgICAgOiAxXG4gICAgICAgIDogLy8gVXNlIGRlZmF1bHQgc2lnbiwgaWYgYW55XG4gICAgICAgICAgdGhpcy5fZGVmYXVsdFNpZ25cbiAgICAgICAgICA/IHRoaXMuX2RlZmF1bHRTaWduID09PSAnLSdcbiAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgIDogMVxuICAgICAgICAgIDogbnVsbCxcbiAgICB9O1xuXG4gICAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgICByZXN1bHQuZGVncmVlcyA9IDA7XG4gICAgfSBlbHNlIGlmIChpc05vdE5pbCh2YWx1ZSkpIHtcbiAgICAgIC8vIFBhcnNlIG9wdGlvbnNcbiAgICAgIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgICAgICAgbG9uZ2l0dWRlOiBpc0xvbmdpdHVkZSxcbiAgICAgICAgcGF0dGVybjogdGhpcy5wYXR0ZXJuLFxuICAgICAgICBtYXhEZWNpbWFsczogdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscyxcbiAgICAgICAgZml4TGF0TG9uZzogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERCcpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRWYWx1ZSA9IHNwbGl0RGVncmVlc1RvRERBcnJheSh2YWx1ZSwgcGFyc2VPcHRpb25zKS5zbGljZSgxKSBhcyBudW1iZXJbXTsgLy8gcmVtb3ZlIHNpZ247XG4gICAgICAgIHJlc3VsdC5zZWNvbmRzID0gMDtcbiAgICAgICAgcmVzdWx0Lm1pbnV0ZXMgPSAwO1xuICAgICAgICByZXN1bHQuZGVncmVlcyA9IChzcGxpdFZhbHVlWzBdICsgY29tcHV0ZURlY2ltYWxQYXJ0KHNwbGl0VmFsdWVbMV0gPz8gMCwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscykpICogKHJlc3VsdC5zaWduIHx8IDEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnBhdHRlcm4gPT09ICdERE1NJykge1xuICAgICAgICBjb25zdCBzcGxpdFZhbHVlID0gc3BsaXREZWdyZWVzVG9ERE1NQXJyYXkodmFsdWUsIHBhcnNlT3B0aW9ucyk7XG4gICAgICAgIHJlc3VsdC5zZWNvbmRzID0gMDtcbiAgICAgICAgcmVzdWx0Lm1pbnV0ZXMgPSBNYXRoLmFicygoc3BsaXRWYWx1ZVsxXSA/PyAwKSArIGNvbXB1dGVEZWNpbWFsUGFydChzcGxpdFZhbHVlWzJdID8/IDAsIHRoaXMubGFzdElucHV0TWF4RGVjaW1hbHMpKTtcbiAgICAgICAgcmVzdWx0LmRlZ3JlZXMgPSBNYXRoLmFicyghcmVzdWx0Lm1pbnV0ZXMgJiYgaXNOaWxPckJsYW5rKHNwbGl0VmFsdWVbMF0pID8gMCA6IChzcGxpdFZhbHVlWzBdID8/IDApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIERlZmF1bHQgLy8gRERNTVNTXG4gICAgICAgIGNvbnN0IHNwbGl0VmFsdWUgPSBzcGxpdERlZ3JlZXNUb0RETU1TU0FycmF5KHZhbHVlLCBwYXJzZU9wdGlvbnMpO1xuICAgICAgICByZXN1bHQuc2Vjb25kcyA9IE1hdGguYWJzKChzcGxpdFZhbHVlWzJdID8/IDApICsgY29tcHV0ZURlY2ltYWxQYXJ0KHNwbGl0VmFsdWVbM10gPz8gMCwgdGhpcy5sYXN0SW5wdXRNYXhEZWNpbWFscykpO1xuICAgICAgICByZXN1bHQubWludXRlcyA9ICFyZXN1bHQuc2Vjb25kcyAmJiAhc3BsaXRWYWx1ZVsxXSA/IDAgOiBNYXRoLmFicyhzcGxpdFZhbHVlWzFdID8/IDApO1xuICAgICAgICByZXN1bHQuZGVncmVlcyA9ICFyZXN1bHQuc2Vjb25kcyAmJiAhcmVzdWx0Lm1pbnV0ZXMgJiYgaXNOaWxPckJsYW5rKHNwbGl0VmFsdWVbMF0pID8gMCA6IE1hdGguYWJzKHNwbGl0VmFsdWVbMF0gPz8gMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc2FmZVBhcnNlRmxvYXQodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGlzTm90TmlsT3JCbGFuayh2YWx1ZSkgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsaWRhdG9ycygpIHtcbiAgICBjb25zdCB7IG1pbnV0ZXMsIHNlY29uZHMsIHNpZ24gfSA9IHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzO1xuXG4gICAgLy8gVXBkYXRlIG1pbnV0ZXNcbiAgICBpZiAodGhpcy5zaG93TWludXRlcyAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgbWludXRlcy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtaW51dGVzLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlY29uZHNcbiAgICBpZiAodGhpcy5zaG93U2Vjb25kcyAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgc2Vjb25kcy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWNvbmRzLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNpZ25cbiAgICBpZiAodGhpcy5zaG93U2lnbiAmJiB0aGlzLl9yZXF1aXJlZCkge1xuICAgICAgc2lnbi5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzaWduLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaWYgKHJlYWRvbmx5KSB7XG4gIDxpb24tdGV4dD5cbiAgICB7e1xuICAgICAgbmdDb250cm9sLnZhbHVlXG4gICAgICAgIHwgbGF0TG9uZ0Zvcm1hdDogeyBwYXR0ZXJuOiBwYXR0ZXJuLCBtYXhEZWNpbWFsczogbGFzdElucHV0TWF4RGVjaW1hbHMsIHR5cGU6IHR5cGUsIHBsYWNlaG9sZGVyQ2hhcjogJycgfVxuICAgIH19XG4gIDwvaW9uLXRleHQ+XG59IEBlbHNlIHtcbiAgPGRpdlxuICAgIHJvbGU9XCJncm91cFwiXG4gICAgY2xhc3M9XCJtYXQtbGF0bG9uZy1pbnB1dC1jb250YWluZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX2Zvcm1GaWVsZD8uZ2V0TGFiZWxJZCgpXCJcbiAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oJGV2ZW50KVwiXG4gICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoJGV2ZW50KVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICAjZGVncmVlc1xuICAgICAgYXJpYS1sYWJlbD1cIkRlZ3JlZXNcIlxuICAgICAgW2NsYXNzLmRlZ3JlZXMtb25seV09XCJwYXR0ZXJuID09PSAnREQnXCJcbiAgICAgIFtjbGFzcy5kZWdyZWVzXT1cInBhdHRlcm4gIT09ICdERCdcIlxuICAgICAgW2NsYXNzLmxhdGl0dWRlXT1cInR5cGUgPT09ICdsYXRpdHVkZSdcIlxuICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cImRlZ3JlZXNQbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWdyZWVzXCJcbiAgICAgIFttYXNraXRvXT1cImRlZ3JlZXNNYXNrXCJcbiAgICAgIChpbnB1dCk9XCJoYW5kbGVJbnB1dCgnZGVncmVlcycsICdtaW51dGVzJylcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtdW5pdFwiPlxuICAgICAge3sgZGVncmVlc1N5bWJvbFVuaXQgfX1cbiAgICA8L3NwYW4+XG5cbiAgICBAaWYgKHNob3dNaW51dGVzKSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgI21pbnV0ZXNcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZXNcIlxuICAgICAgICBbY2xhc3MubWludXRlc109XCJzaG93U2Vjb25kc1wiXG4gICAgICAgIFtjbGFzcy5taW51dGVzLXNlY29uZHNdPVwiIXNob3dTZWNvbmRzXCJcbiAgICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW51dGVzXCJcbiAgICAgICAgW21hc2tpdG9dPVwibWludXRlc01hc2tcIlxuICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJ21pbnV0ZXMnLCAnc2Vjb25kcycpXCJcbiAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJhdXRvRm9jdXNQcmV2KCdtaW51dGVzJywgJ2RlZ3JlZXMnKVwiXG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtdW5pdFwiPlxuICAgICAgICB7eyBtaW51dGVzU3ltYm9sVW5pdCB9fVxuICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAjc2Vjb25kc1xuICAgICAgICBhcmlhLWxhYmVsPVwiU2Vjb25kc1wiXG4gICAgICAgIGNsYXNzPVwic2Vjb25kc1wiXG4gICAgICAgIGlucHV0bW9kZT1cImRlY2ltYWxcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2Vjb25kc1BsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2Vjb25kc1wiXG4gICAgICAgIFttYXNraXRvXT1cInNlY29uZHNNYXNrXCJcbiAgICAgICAgKGlucHV0KT1cImhhbmRsZUlucHV0KCdzZWNvbmRzJywgJ3NpZ24nKVwiXG4gICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwiYXV0b0ZvY3VzUHJldignc2Vjb25kcycsICdtaW51dGVzJylcIlxuICAgICAgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLXVuaXRcIj5cbiAgICAgICAge3sgc2Vjb25kc1N5bWJvbFVuaXQgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG5cbiAgICA8IS0tIHNpZ24gLS0+XG4gICAgQGlmIChzaG93U2lnbikge1xuICAgICAgPHNwYW4gY2xhc3M9XCJzaWduLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICNzaWduXG4gICAgICAgIGhpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JcbiAgICAgICAgZGlzYWJsZU9wdGlvbkNlbnRlcmluZ1xuICAgICAgICBhcmlhLWxhYmVsPVwiU2lnblwiXG4gICAgICAgIGNsYXNzPVwic2lnblwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNpZ25cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgKHR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX1BMQUNFSE9MREVSJyA6ICdDT01NT04uTEFUX0xPTkcuTE9OR19TSUdOX1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIChmb2N1c2luKT1cInNpZ24ub3BlbigpXCJcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJoYW5kbGVJbnB1dCgnc2lnbicpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjFcIiAoY2xpY2spPVwic2lnbi5jbG9zZSgpXCI+XG4gICAgICAgICAge3sgKHR5cGUgPT09ICdsYXRpdHVkZScgPyAnQ09NTU9OLkxBVF9MT05HLkxBVF9TSUdOX04nIDogJ0NPTU1PTi5MQVRfTE9ORy5MT05HX1NJR05fRScpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIi0xXCIgKGNsaWNrKT1cInNpZ24uY2xvc2UoKVwiPlxuICAgICAgICAgIHt7ICh0eXBlID09PSAnbGF0aXR1ZGUnID8gJ0NPTU1PTi5MQVRfTE9ORy5MQVRfU0lHTl9TJyA6ICdDT01NT04uTEFUX0xPTkcuTE9OR19TSUdOX1cnKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgIDwvbWF0LXNlbGVjdD5cblxuICAgIH1cblxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -8,6 +8,7 @@ import { LAT_LONG_VALUE_MAX_DECIMALS } from './latlong.utils';
8
8
  import { isNotNil } from '../../functions';
9
9
  import { Subscription } from 'rxjs';
10
10
  import { filter } from 'rxjs/operators';
11
+ import { INPUT_FIELD_ACCESSOR } from '../../field-accessor';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "@angular/forms";
13
14
  import * as i2 from "@angular/common";
@@ -74,6 +75,9 @@ export class MatLatLongField {
74
75
  get disabled() {
75
76
  return this.readonly || this.formControl.disabled;
76
77
  }
78
+ get focused() {
79
+ return this.input.focused;
80
+ }
77
81
  input;
78
82
  pendingValue;
79
83
  pendingValueSet = false;
@@ -152,6 +156,9 @@ export class MatLatLongField {
152
156
  ngOnDestroy() {
153
157
  this._subscription.unsubscribe();
154
158
  }
159
+ focus(options, origin) {
160
+ this.input?.focus(options, origin);
161
+ }
155
162
  clearValue(event) {
156
163
  event?.stopPropagation();
157
164
  this.formControl.setValue(null);
@@ -167,6 +174,10 @@ export class MatLatLongField {
167
174
  multi: true,
168
175
  useExisting: forwardRef(() => MatLatLongField),
169
176
  },
177
+ {
178
+ provide: INPUT_FIELD_ACCESSOR,
179
+ useExisting: forwardRef(() => MatLatLongField),
180
+ }
170
181
  ], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<mat-form-field\n #formField\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class.mdc-text-field--invalid]=\"formControl.touched && formControl.invalid\"\n class=\"mat-latlong-field mat-latlong-field-{{ type }} {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if (floatLabel !== 'never' && placeholder | isNotNilOrBlank) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <mat-latlong-input\n #input\n [formControl]=\"formControl\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [latLongPattern]=\"pattern\"\n [defaultSign]=\"defaultSign\"\n [maxDecimals]=\"maxDecimals\"\n [readonly]=\"readonly\"\n ></mat-latlong-input>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<!-- Do the same as MatFromField since angular 15 (see component source)-->\n<div\n class=\"mat-mdc-form-field-subscript-wrapper\"\n [class.mat-mdc-form-field-bottom-align]=\"subscriptSizing === 'fixed'\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n>\n @if (formControl.touched && formControl.invalid) {\n <!-- errors -->\n <div class=\"mat-mdc-form-field-error-wrapper\">\n @if (formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error>\n {{ i18nErrorKeys | mapGet: errorKey | translate: (formControl.errors | mapGet: errorKey) }}\n </mat-error>\n } @else {\n <ng-container *ngTemplateOutlet=\"matErrorTemplate\"></ng-container>\n }\n </div>\n } @else {\n <!-- hints -->\n <mat-hint>\n <ng-container *ngTemplateOutlet=\"matHintTemplate\"></ng-container>\n </mat-hint>\n }\n</div>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n @if (clearable && !readonly) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearValue($event)\"\n [hidden]=\"formControl.value | isNil\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #matErrorTemplate>\n <ng-content select=\"mat-error,[matError]\"></ng-content>\n</ng-template>\n\n<ng-template #matHintTemplate>\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <ng-content select=\"mat-hint:not([align='end']),[matHint]\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatLatLongFieldInput, selector: "mat-latlong-input", inputs: ["aria-describedby", "required", "disabled", "value", "defaultSign", "type", "latLongPattern", "maxDecimals", "readonly"] }, { kind: "pipe", type: i7.ArrayFirstPipe, name: "arrayFirst" }, { kind: "pipe", type: i8.MapGetPipe, name: "mapGet" }, { kind: "pipe", type: i8.MapKeysPipe, name: "mapKeys" }, { kind: "pipe", type: i9.IsNotNilOrBlankPipe, name: "isNotNilOrBlank" }, { kind: "pipe", type: i9.IsNilPipe, name: "isNil" }, { kind: "pipe", type: i10.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
171
182
  }
172
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MatLatLongField, decorators: [{
@@ -177,6 +188,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
177
188
  multi: true,
178
189
  useExisting: forwardRef(() => MatLatLongField),
179
190
  },
191
+ {
192
+ provide: INPUT_FIELD_ACCESSOR,
193
+ useExisting: forwardRef(() => MatLatLongField),
194
+ }
180
195
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n #formField\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n [subscriptSizing]=\"subscriptSizing\"\n [class.mdc-text-field--invalid]=\"formControl.touched && formControl.invalid\"\n class=\"mat-latlong-field mat-latlong-field-{{ type }} {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n @if (floatLabel !== 'never' && placeholder | isNotNilOrBlank) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <mat-latlong-input\n #input\n [formControl]=\"formControl\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [type]=\"type\"\n [latLongPattern]=\"pattern\"\n [defaultSign]=\"defaultSign\"\n [maxDecimals]=\"maxDecimals\"\n [readonly]=\"readonly\"\n ></mat-latlong-input>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<!-- Do the same as MatFromField since angular 15 (see component source)-->\n<div\n class=\"mat-mdc-form-field-subscript-wrapper\"\n [class.mat-mdc-form-field-bottom-align]=\"subscriptSizing === 'fixed'\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n>\n @if (formControl.touched && formControl.invalid) {\n <!-- errors -->\n <div class=\"mat-mdc-form-field-error-wrapper\">\n @if (formControl.errors | mapKeys | arrayFirst; as errorKey) {\n <mat-error>\n {{ i18nErrorKeys | mapGet: errorKey | translate: (formControl.errors | mapGet: errorKey) }}\n </mat-error>\n } @else {\n <ng-container *ngTemplateOutlet=\"matErrorTemplate\"></ng-container>\n }\n </div>\n } @else {\n <!-- hints -->\n <mat-hint>\n <ng-container *ngTemplateOutlet=\"matHintTemplate\"></ng-container>\n </mat-hint>\n }\n</div>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n @if (clearable && !readonly) {\n <button\n matSuffix\n mat-icon-button\n tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearValue($event)\"\n [hidden]=\"formControl.value | isNil\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #matErrorTemplate>\n <ng-content select=\"mat-error,[matError]\"></ng-content>\n</ng-template>\n\n<ng-template #matHintTemplate>\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <ng-content select=\"mat-hint:not([align='end']),[matHint]\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n</ng-template>\n" }]
181
196
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormGroupDirective, decorators: [{
182
197
  type: Optional
@@ -228,4 +243,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
228
243
  type: ViewChild,
229
244
  args: ['input']
230
245
  }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBR2YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTRDLGlCQUFpQixFQUFzQixNQUFNLGdCQUFnQixDQUFDO0FBQ2pILE9BQU8sRUFBRSw4QkFBOEIsRUFBdUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuSixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEgsT0FBTyxFQUFFLDJCQUEyQixFQUE0QyxNQUFNLGlCQUFpQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWdCeEMsTUFBTSxPQUFPLGVBQWU7SUEwRWhCO0lBQ1k7SUExRWQsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkMsV0FBVyxHQUFrQyxJQUFJLENBQUM7SUFDbEQsZ0JB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UyxFQUFFLGdCQUFnQixFQUFFO2dCQUN0QixTQUFTO3NCQUF4QixLQUFLO3VCQUFDLE9BQU87Z0JBRTZCLFFBQVE7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQVdqQyxVQUFVO3NCQURiLEtBQUs7Z0JBU08sUUFBUTtzQkFBcEIsS0FBSztnQkFVRixlQUFlO3NCQURsQixLQUFLO2dCQWFjLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UsIE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zLCBTdWJzY3JpcHRTaXppbmcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vcGxhdGZvcm1zJztcbmltcG9ydCB7IFNoYXJlZFZhbGlkYXRvcnMgfSBmcm9tICcuLi8uLi92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX0FQUEVBUkFOQ0UsIE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfU1VCU0NSSVBUX1NJWklORyB9IGZyb20gJy4uL21hdGVyaWFsLmNvbmZpZyc7XG5pbXBvcnQgeyBMQVRfTE9OR19WQUxVRV9NQVhfREVDSU1BTFMsIExhdExvbmdQYXR0ZXJuLCBMYXRMb25nU2lnbiwgTGF0TG9uZ1R5cGUgfSBmcm9tICcuL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHsgTWF0TGF0TG9uZ0ZpZWxkSW5wdXQgfSBmcm9tICcuL21hdGVyaWFsLmxhdGxvbmctaW5wdXQnO1xuaW1wb3J0IHsgaXNOb3ROaWwgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBGbG9hdExhYmVsVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWxhdGxvbmctZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWF0ZXJpYWwubGF0bG9uZy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWF0ZXJpYWwubGF0bG9uZy5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXRMYXRMb25nRmllbGQpLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMYXRMb25nRmllbGQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX2FwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0U2l6aW5nOiBTdWJzY3JpcHRTaXppbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdGFiaW5kZXg6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRTdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZztcblxuICBwcm90ZWN0ZWQgaTE4bkVycm9yS2V5cyA9IFNoYXJlZFZhbGlkYXRvcnMuSTE4Tl9FUlJPUl9LRVlTO1xuXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBMYXRMb25nVHlwZTtcbiAgQElucHV0KCdsYXRMb25nUGF0dGVybicpIHBhdHRlcm46IExhdExvbmdQYXR0ZXJuO1xuICBASW5wdXQoKSBtYXhEZWNpbWFsczogbnVtYmVyID0gTEFUX0xPTkdfVkFMVUVfTUFYX0RFQ0lNQUxTO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZmxvYXRMYWJlbDogQXBwRmxvYXRMYWJlbFR5cGUgPSAnYXV0byc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRTaWduOiBMYXRMb25nU2lnbjtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbW9iaWxlOiBib29sZWFuO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2xlYXJhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzc0xpc3Q6IHN0cmluZztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzZXQgdGFiaW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl90YWJpbmRleCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UpIHtcbiAgICB0aGlzLl9hcHBlYXJhbmNlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYXBwZWFyYW5jZSgpOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZWFyYW5jZSB8fCB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlYWRvbmx5ID0gdmFsdWU7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc3Vic2NyaXB0U2l6aW5nKHZhbHVlOiBTdWJzY3JpcHRTaXppbmcpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRTaXppbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdWJzY3JpcHRTaXppbmcoKTogU3Vic2NyaXB0U2l6aW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0U2l6aW5nIHx8IHRoaXMuX2RlZmF1bHRTdWJzY3JpcHRTaXppbmc7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogTWF0TGF0TG9uZ0ZpZWxkSW5wdXQ7XG4gIHBlbmRpbmdWYWx1ZTogYW55O1xuICBwZW5kaW5nVmFsdWVTZXQgPSBmYWxzZTtcbiAgcGVuZGluZ0Rpc2FibGVkU3RhdGU6IGJvb2xlYW47XG4gIHBlbmRpbmdPbkNoYW5nZTogKF86IGFueSkgPT4gdW5rbm93bjtcbiAgcGVuZGluZ09uVG91Y2hlZDogKCkgPT4gdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcjogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKSBkZWZhdWx0T3B0aW9ucz86IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX2RlZmF1bHRTdWJzY3JpcHRTaXppbmcgPSBkZWZhdWx0T3B0aW9ucz8uc3Vic2NyaXB0U2l6aW5nIHx8IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IGRlZmF1bHRPcHRpb25zPy5hcHBlYXJhbmNlIHx8IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfQVBQRUFSQU5DRTtcbiAgfVxuXG4gIC8vIERlbGVnYXRlIGNvbnRyb2wgdmFsZSBhY2Nlc3NvclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnBlbmRpbmdWYWx1ZVNldCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0LnJlZ2lzdGVyT25DaGFuZ2UoZm4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdPbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQucmVnaXN0ZXJPblRvdWNoZWQoZm4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdPblRvdWNoZWQgPSBmbjtcbiAgICB9XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0LnNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ0Rpc2FibGVkU3RhdGUgPSBpc0Rpc2FibGVkO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUNvbnRyb2wgPVxuICAgICAgdGhpcy5mb3JtQ29udHJvbCB8fCAodGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5mb3JtR3JvdXBEaXIgJiYgKHRoaXMuZm9ybUdyb3VwRGlyLmZvcm0uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2wpKTtcbiAgICBpZiAoIXRoaXMuZm9ybUNvbnRyb2wpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSAnZm9ybUNvbnRyb2wnIG9yICdmb3JtQ29udHJvbE5hbWUnIGluIDxtYXQtbGF0bG9uZy1maWVsZD4uXCIpO1xuXG4gICAgdGhpcy5tb2JpbGUgPSB0aGlzLm1vYmlsZSA/PyBpc01vYmlsZSh3aW5kb3cpO1xuXG4gICAgLy8gTGlzdGVuIHN0YXR1cyBjaGFuZ2VzICh3aGVuIGRvbmUgb3V0c2lkZSB0aGUgY29tcG9uZW50ICAtIGUuZy4gd2hlbiBzZXRFcnJvcnMoKSBpcyBjYWxsaW5nIG9uIHRoZSBmb3JtQ29udHJvbClcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5yZWFkb25seSkgLy8gU2tpcFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5tYXJrRm9yQ2hlY2soKSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5yZWFkb25seSkge1xuICAgICAgaWYgKHRoaXMucGVuZGluZ09uQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuaW5wdXQucmVnaXN0ZXJPbkNoYW5nZSh0aGlzLnBlbmRpbmdPbkNoYW5nZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wZW5kaW5nT25Ub3VjaGVkKSB7XG4gICAgICAgIHRoaXMuaW5wdXQucmVnaXN0ZXJPblRvdWNoZWQodGhpcy5wZW5kaW5nT25Ub3VjaGVkKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc05vdE5pbCh0aGlzLnBlbmRpbmdEaXNhYmxlZFN0YXRlKSkge1xuICAgICAgICB0aGlzLmlucHV0LnNldERpc2FibGVkU3RhdGUodGhpcy5wZW5kaW5nRGlzYWJsZWRTdGF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5wZW5kaW5nVmFsdWVTZXQpIHtcbiAgICAgICAgdGhpcy5pbnB1dC53cml0ZVZhbHVlKHRoaXMucGVuZGluZ1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWUoZXZlbnQ/OiBFdmVudCkge1xuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICB9XG5cbiAgLyogLS0gcHJpdmF0ZSBtZXRob2QgLS0gKi9cblxuICBwcml2YXRlIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGRcbiAgI2Zvcm1GaWVsZFxuICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICBbc3Vic2NyaXB0U2l6aW5nXT1cInN1YnNjcmlwdFNpemluZ1wiXG4gIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0taW52YWxpZF09XCJmb3JtQ29udHJvbC50b3VjaGVkICYmIGZvcm1Db250cm9sLmludmFsaWRcIlxuICBjbGFzcz1cIm1hdC1sYXRsb25nLWZpZWxkIG1hdC1sYXRsb25nLWZpZWxkLXt7IHR5cGUgfX0ge3sgY2xhc3NMaXN0IH19XCJcbj5cbiAgPGRpdiBtYXRQcmVmaXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIEBpZiAoZmxvYXRMYWJlbCAhPT0gJ25ldmVyJyAmJiBwbGFjZWhvbGRlciB8IGlzTm90TmlsT3JCbGFuaykge1xuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgfVxuXG4gIDxtYXQtbGF0bG9uZy1pbnB1dFxuICAgICNpbnB1dFxuICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtsYXRMb25nUGF0dGVybl09XCJwYXR0ZXJuXCJcbiAgICBbZGVmYXVsdFNpZ25dPVwiZGVmYXVsdFNpZ25cIlxuICAgIFttYXhEZWNpbWFsc109XCJtYXhEZWNpbWFsc1wiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgPjwvbWF0LWxhdGxvbmctaW5wdXQ+XG5cbiAgPGRpdiBtYXRTdWZmaXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9tYXQtZm9ybS1maWVsZD5cblxuPCEtLSBEbyB0aGUgc2FtZSBhcyBNYXRGcm9tRmllbGQgc2luY2UgYW5ndWxhciAxNSAoc2VlIGNvbXBvbmVudCBzb3VyY2UpLS0+XG48ZGl2XG4gIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCJcbiAgW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1ib3R0b20tYWxpZ25dPVwic3Vic2NyaXB0U2l6aW5nID09PSAnZml4ZWQnXCJcbiAgW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtZHluYW1pYy1zaXplXT1cInN1YnNjcmlwdFNpemluZyA9PT0gJ2R5bmFtaWMnXCJcbj5cbiAgQGlmIChmb3JtQ29udHJvbC50b3VjaGVkICYmIGZvcm1Db250cm9sLmludmFsaWQpIHtcbiAgICA8IS0tIGVycm9ycyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWVycm9yLXdyYXBwZXJcIj5cbiAgICAgIEBpZiAoZm9ybUNvbnRyb2wuZXJyb3JzIHwgbWFwS2V5cyB8IGFycmF5Rmlyc3Q7IGFzIGVycm9yS2V5KSB7XG4gICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAge3sgaTE4bkVycm9yS2V5cyB8IG1hcEdldDogZXJyb3JLZXkgfCB0cmFuc2xhdGU6IChmb3JtQ29udHJvbC5lcnJvcnMgfCBtYXBHZXQ6IGVycm9yS2V5KSB9fVxuICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0RXJyb3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICA8IS0tIGhpbnRzIC0tPlxuICAgIDxtYXQtaGludD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRIaW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1oaW50PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtYXRQcmVmaXhUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdFN1ZmZpeFRlbXBsYXRlPlxuICBAaWYgKGNsZWFyYWJsZSAmJiAhcmVhZG9ubHkpIHtcbiAgICA8YnV0dG9uXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKCRldmVudClcIlxuICAgICAgW2hpZGRlbl09XCJmb3JtQ29udHJvbC52YWx1ZSB8IGlzTmlsXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdEVycm9yVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvcixbbWF0RXJyb3JdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRIaW50VGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaGludC13cmFwcGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pLFttYXRIaW50XVwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyXCI+PC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnRbYWxpZ249J2VuZCddXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubGF0bG9uZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbWF0ZXJpYWwubGF0bG9uZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBR2YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTJDLGlCQUFpQixFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBQy9HLE9BQU8sRUFBQyw4QkFBOEIsRUFBc0UsTUFBTSw4QkFBOEIsQ0FBQztBQUNqSixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGlDQUFpQyxFQUFFLHVDQUF1QyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUcsT0FBTyxFQUFDLDJCQUEyQixFQUEyQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRHLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQXVCLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFvQmhGLE1BQU0sT0FBTyxlQUFlO0lBOEVoQjtJQUNZO0lBOUVkLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25DLFdBQVcsR0FBa0MsSUFBSSxDQUFDO0lBQ2xELGdCQUFnQixHQUEyQixJQUFJLENBQUM7SUFDaEQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixTQUFTLENBQVM7SUFDVCxrQkFBa0IsQ0FBeUI7SUFDM0MsdUJBQXVCLENBQWtCO0lBRWhELGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUM7SUFFbEQsV0FBVyxDQUFxQjtJQUNoQyxlQUFlLENBQVM7SUFDeEIsSUFBSSxDQUFjO0lBQ0YsT0FBTyxDQUFpQjtJQUN4QyxXQUFXLEdBQVcsMkJBQTJCLENBQUM7SUFDbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNoRCxVQUFVLEdBQXNCLE1BQU0sQ0FBQztJQUN2QyxXQUFXLENBQVM7SUFDcEIsV0FBVyxDQUFjO0lBQ00sU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNsQixNQUFNLENBQVU7SUFDaEIsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMxQyxTQUFTLENBQVM7SUFFbEMsSUFBMkMsUUFBUSxDQUFDLEtBQWE7UUFDL0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLFVBQVUsQ0FBQyxLQUE2QjtRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFDSSxlQUFlLENBQUMsS0FBc0I7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFbUIsS0FBSyxDQUF1QjtJQUNoRCxZQUFZLENBQU07SUFDbEIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixvQkFBb0IsQ0FBVTtJQUM5QixlQUFlLENBQXNCO0lBQ3JDLGdCQUFnQixDQUFnQjtJQUVoQyxZQUNVLEVBQXFCLEVBQ1QsWUFBZ0MsRUFDWixjQUEyQztRQUYzRSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNULGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUdwRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsY0FBYyxFQUFFLGVBQWUsSUFBSSx1Q0FBdUMsQ0FBQztRQUMxRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsY0FBYyxFQUFFLFVBQVUsSUFBSSxpQ0FBaUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUUsVUFBbUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVztZQUNkLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQXdCLENBQUMsQ0FBQztRQUM5SSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdGQUF3RixDQUFDLENBQUM7UUFFakksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QyxpSEFBaUg7UUFDakgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTthQUMzQixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU87U0FDckM7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3pELENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBc0IsRUFBRSxNQUFvQjtRQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsMEJBQTBCO0lBRWxCLFlBQVk7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQTNLVSxlQUFlLHFHQWdGaEIsOEJBQThCOzRGQWhGN0IsZUFBZSxnT0FnQk4sZ0JBQWdCLDJIQUloQixnQkFBZ0IsZ0NBQ2hCLGdCQUFnQix5Q0FDaEIsZ0JBQWdCLHlFQUdoQixlQUFlLG9HQXRDeEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzthQUMvQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxvQkFBb0I7Z0JBQzdCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2FBQy9DO1NBQ0YsMEhDM0NILGl2RkEwRkE7OzRGRDVDYSxlQUFlO2tCQWpCM0IsU0FBUzsrQkFDRSxtQkFBbUIsYUFHbEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7eUJBQy9DO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDO3lCQUMvQztxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs7MEJBaUY1QyxRQUFROzswQkFDUixNQUFNOzJCQUFDLDhCQUE4Qjt5Q0FyRS9CLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ21CLE9BQU87c0JBQS9CLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNkLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ2tDLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQzdCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNrQyxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLE1BQU07c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDdEIsU0FBUztzQkFBeEIsS0FBSzt1QkFBQyxPQUFPO2dCQUU2QixRQUFRO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFXakMsVUFBVTtzQkFEYixLQUFLO2dCQVNPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBVUYsZUFBZTtzQkFEbEIsS0FBSztnQkFpQmMsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUywgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSwgTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMsIFN1YnNjcmlwdFNpemluZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge2lzTW9iaWxlfSBmcm9tICcuLi8uLi9wbGF0Zm9ybXMnO1xuaW1wb3J0IHtTaGFyZWRWYWxpZGF0b3JzfSBmcm9tICcuLi8uLi92YWxpZGF0b3IvdmFsaWRhdG9ycyc7XG5pbXBvcnQge01BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfQVBQRUFSQU5DRSwgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9TVUJTQ1JJUFRfU0laSU5HfSBmcm9tICcuLi9tYXRlcmlhbC5jb25maWcnO1xuaW1wb3J0IHtMQVRfTE9OR19WQUxVRV9NQVhfREVDSU1BTFMsIExhdExvbmdQYXR0ZXJuLCBMYXRMb25nU2lnbiwgTGF0TG9uZ1R5cGV9IGZyb20gJy4vbGF0bG9uZy51dGlscyc7XG5pbXBvcnQge01hdExhdExvbmdGaWVsZElucHV0fSBmcm9tICcuL21hdGVyaWFsLmxhdGxvbmctaW5wdXQnO1xuaW1wb3J0IHtpc05vdE5pbH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcEZsb2F0TGFiZWxUeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0NvbnRyb2xGaWVsZEFjY2Vzc29yLCBJTlBVVF9GSUVMRF9BQ0NFU1NPUn0gZnJvbSAnLi4vLi4vZmllbGQtYWNjZXNzb3InO1xuaW1wb3J0IHtGb2N1c09yaWdpbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtbGF0bG9uZy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXRlcmlhbC5sYXRsb25nLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tYXRlcmlhbC5sYXRsb25nLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdExhdExvbmdGaWVsZCksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBJTlBVVF9GSUVMRF9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hdExhdExvbmdGaWVsZCksXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TGF0TG9uZ0ZpZWxkIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sRmllbGRBY2Nlc3NvciB7XG4gIHByaXZhdGUgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBfYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9zdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZWFkb25seSA9IGZhbHNlO1xuICBwcml2YXRlIF90YWJpbmRleDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWZhdWx0QXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFN1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nO1xuXG4gIHByb3RlY3RlZCBpMThuRXJyb3JLZXlzID0gU2hhcmVkVmFsaWRhdG9ycy5JMThOX0VSUk9SX0tFWVM7XG5cbiAgQElucHV0KCkgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGU6IExhdExvbmdUeXBlO1xuICBASW5wdXQoJ2xhdExvbmdQYXR0ZXJuJykgcGF0dGVybjogTGF0TG9uZ1BhdHRlcm47XG4gIEBJbnB1dCgpIG1heERlY2ltYWxzOiBudW1iZXIgPSBMQVRfTE9OR19WQUxVRV9NQVhfREVDSU1BTFM7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFNpZ246IExhdExvbmdTaWduO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBtb2JpbGU6IGJvb2xlYW47XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCdjbGFzcycpIGNsYXNzTGlzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHNldCB0YWJpbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3RhYmluZGV4ICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgdGFiaW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiaW5kZXg7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYXBwZWFyYW5jZSh2YWx1ZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSkge1xuICAgIHRoaXMuX2FwcGVhcmFuY2UgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBhcHBlYXJhbmNlKCk6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2Uge1xuICAgIHJldHVybiB0aGlzLl9hcHBlYXJhbmNlIHx8IHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBzdWJzY3JpcHRTaXppbmcodmFsdWU6IFN1YnNjcmlwdFNpemluZykge1xuICAgIHRoaXMuX3N1YnNjcmlwdFNpemluZyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHN1YnNjcmlwdFNpemluZygpOiBTdWJzY3JpcHRTaXppbmcge1xuICAgIHJldHVybiB0aGlzLl9zdWJzY3JpcHRTaXppbmcgfHwgdGhpcy5fZGVmYXVsdFN1YnNjcmlwdFNpemluZztcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5mb2N1c2VkO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogTWF0TGF0TG9uZ0ZpZWxkSW5wdXQ7XG4gIHBlbmRpbmdWYWx1ZTogYW55O1xuICBwZW5kaW5nVmFsdWVTZXQgPSBmYWxzZTtcbiAgcGVuZGluZ0Rpc2FibGVkU3RhdGU6IGJvb2xlYW47XG4gIHBlbmRpbmdPbkNoYW5nZTogKF86IGFueSkgPT4gdW5rbm93bjtcbiAgcGVuZGluZ09uVG91Y2hlZDogKCkgPT4gdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cERpcjogRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKSBkZWZhdWx0T3B0aW9ucz86IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zXG4gICkge1xuICAgIHRoaXMuX2RlZmF1bHRTdWJzY3JpcHRTaXppbmcgPSBkZWZhdWx0T3B0aW9ucz8uc3Vic2NyaXB0U2l6aW5nIHx8IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgICB0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSA9IGRlZmF1bHRPcHRpb25zPy5hcHBlYXJhbmNlIHx8IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfQVBQRUFSQU5DRTtcbiAgfVxuXG4gIC8vIERlbGVnYXRlIGNvbnRyb2wgdmFsZSBhY2Nlc3NvclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnBlbmRpbmdWYWx1ZVNldCA9IHRydWU7XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0LnJlZ2lzdGVyT25DaGFuZ2UoZm4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdPbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC5yZWdpc3Rlck9uVG91Y2hlZChmbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ09uVG91Y2hlZCA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC5zZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdEaXNhYmxlZFN0YXRlID0gaXNEaXNhYmxlZDtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Db250cm9sID1cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgfHwgKHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMuZm9ybUdyb3VwRGlyICYmICh0aGlzLmZvcm1Hcm91cERpci5mb3JtLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sKSk7XG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJ2Zvcm1Db250cm9sJyBvciAnZm9ybUNvbnRyb2xOYW1lJyBpbiA8bWF0LWxhdGxvbmctZmllbGQ+LlwiKTtcblxuICAgIHRoaXMubW9iaWxlID0gdGhpcy5tb2JpbGUgPz8gaXNNb2JpbGUod2luZG93KTtcblxuICAgIC8vIExpc3RlbiBzdGF0dXMgY2hhbmdlcyAod2hlbiBkb25lIG91dHNpZGUgdGhlIGNvbXBvbmVudCAgLSBlLmcuIHdoZW4gc2V0RXJyb3JzKCkgaXMgY2FsbGluZyBvbiB0aGUgZm9ybUNvbnRyb2wpXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMucmVhZG9ubHkpIC8vIFNraXBcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubWFya0ZvckNoZWNrKCkpXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdPbkNoYW5nZSkge1xuICAgICAgICB0aGlzLmlucHV0LnJlZ2lzdGVyT25DaGFuZ2UodGhpcy5wZW5kaW5nT25DaGFuZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGVuZGluZ09uVG91Y2hlZCkge1xuICAgICAgICB0aGlzLmlucHV0LnJlZ2lzdGVyT25Ub3VjaGVkKHRoaXMucGVuZGluZ09uVG91Y2hlZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNOb3ROaWwodGhpcy5wZW5kaW5nRGlzYWJsZWRTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXREaXNhYmxlZFN0YXRlKHRoaXMucGVuZGluZ0Rpc2FibGVkU3RhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGVuZGluZ1ZhbHVlU2V0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQud3JpdGVWYWx1ZSh0aGlzLnBlbmRpbmdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zLCBvcmlnaW4/OiBGb2N1c09yaWdpbikge1xuICAgIHRoaXMuaW5wdXQ/LmZvY3VzKG9wdGlvbnMsIG9yaWdpbik7XG4gIH1cblxuICBjbGVhclZhbHVlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gICNmb3JtRmllbGRcbiAgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbCB8IGFzRmxvYXRMYWJlbFR5cGVcIlxuICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgW3N1YnNjcmlwdFNpemluZ109XCJzdWJzY3JpcHRTaXppbmdcIlxuICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWludmFsaWRdPVwiZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBmb3JtQ29udHJvbC5pbnZhbGlkXCJcbiAgY2xhc3M9XCJtYXQtbGF0bG9uZy1maWVsZCBtYXQtbGF0bG9uZy1maWVsZC17eyB0eXBlIH19IHt7IGNsYXNzTGlzdCB9fVwiXG4+XG4gIDxkaXYgbWF0UHJlZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICBAaWYgKGZsb2F0TGFiZWwgIT09ICduZXZlcicgJiYgcGxhY2Vob2xkZXIgfCBpc05vdE5pbE9yQmxhbmspIHtcbiAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gIH1cblxuICA8bWF0LWxhdGxvbmctaW5wdXRcbiAgICAjaW5wdXRcbiAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBbbGF0TG9uZ1BhdHRlcm5dPVwicGF0dGVyblwiXG4gICAgW2RlZmF1bHRTaWduXT1cImRlZmF1bHRTaWduXCJcbiAgICBbbWF4RGVjaW1hbHNdPVwibWF4RGVjaW1hbHNcIlxuICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gID48L21hdC1sYXRsb25nLWlucHV0PlxuXG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjwhLS0gRG8gdGhlIHNhbWUgYXMgTWF0RnJvbUZpZWxkIHNpbmNlIGFuZ3VsYXIgMTUgKHNlZSBjb21wb25lbnQgc291cmNlKS0tPlxuPGRpdlxuICBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlclwiXG4gIFtjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtYm90dG9tLWFsaWduXT1cInN1YnNjcmlwdFNpemluZyA9PT0gJ2ZpeGVkJ1wiXG4gIFtjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LWR5bmFtaWMtc2l6ZV09XCJzdWJzY3JpcHRTaXppbmcgPT09ICdkeW5hbWljJ1wiXG4+XG4gIEBpZiAoZm9ybUNvbnRyb2wudG91Y2hlZCAmJiBmb3JtQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgPCEtLSBlcnJvcnMgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1lcnJvci13cmFwcGVyXCI+XG4gICAgICBAaWYgKGZvcm1Db250cm9sLmVycm9ycyB8IG1hcEtleXMgfCBhcnJheUZpcnN0OyBhcyBlcnJvcktleSkge1xuICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgIHt7IGkxOG5FcnJvcktleXMgfCBtYXBHZXQ6IGVycm9yS2V5IHwgdHJhbnNsYXRlOiAoZm9ybUNvbnRyb2wuZXJyb3JzIHwgbWFwR2V0OiBlcnJvcktleSkgfX1cbiAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdEVycm9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPCEtLSBoaW50cyAtLT5cbiAgICA8bWF0LWhpbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0SGludFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtaGludD5cbiAgfVxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0UHJlZml4VGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRTdWZmaXhUZW1wbGF0ZT5cbiAgQGlmIChjbGVhcmFibGUgJiYgIXJlYWRvbmx5KSB7XG4gICAgPGJ1dHRvblxuICAgICAgbWF0U3VmZml4XG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZSgkZXZlbnQpXCJcbiAgICAgIFtoaWRkZW5dPVwiZm9ybUNvbnRyb2wudmFsdWUgfCBpc05pbFwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXRFcnJvclRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3IsW21hdEVycm9yXVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0SGludFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSxbbWF0SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXNwYWNlclwiPjwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1oaW50W2FsaWduPSdlbmQnXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19