@skyux/forms 10.0.0-alpha.6 → 10.0.0-rc.0

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.
@@ -289,14 +289,14 @@ export class SkyRadioGroupComponent {
289
289
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: SkyRadioGroupComponent, selector: "sky-radio-group", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", disabled: "disabled", name: "name", required: "required", value: "value", tabIndex: "tabIndex", labelText: "labelText", labelHidden: ["labelHidden", "labelHidden", booleanAttribute] }, providers: [
290
290
  SkyRadioGroupIdService,
291
291
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
292
- ], queries: [{ propertyName: "radios", predicate: SkyRadioComponent, descendants: true }], ngImport: i0, template: "<label *ngIf=\"labelText && !labelHidden\" class=\"sky-control-label\">\n {{ labelText }}\n</label>\n<div\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText || ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <ng-content />\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
292
+ ], queries: [{ propertyName: "radios", predicate: SkyRadioComponent, descendants: true }], ngImport: i0, template: "<fieldset\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText ? undefined : ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{ 'sky-screen-reader-only': labelHidden }\"\n >\n {{ labelText }}\n </legend>\n <ng-content />\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "pipe", type: i5.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
293
293
  }
294
294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SkyRadioGroupComponent, decorators: [{
295
295
  type: Component,
296
296
  args: [{ selector: 'sky-radio-group', providers: [
297
297
  SkyRadioGroupIdService,
298
298
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
299
- ], template: "<label *ngIf=\"labelText && !labelHidden\" class=\"sky-control-label\">\n {{ labelText }}\n</label>\n<div\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText || ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <ng-content />\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n" }]
299
+ ], template: "<fieldset\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText ? undefined : ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{ 'sky-screen-reader-only': labelHidden }\"\n >\n {{ labelText }}\n </legend>\n <ng-content />\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n" }]
300
300
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SkyRadioGroupIdService }, { type: i2.NgControl, decorators: [{
301
301
  type: Self
302
302
  }, {
@@ -324,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
324
324
  type: ContentChildren,
325
325
  args: [SkyRadioComponent, { descendants: true }]
326
326
  }] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFFTCxRQUFRLEVBRVIsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBR3RELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQjs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7Ozs7Ozs7T0FPRztJQUNILElBQ1csY0FBYyxDQUFDLEtBQXlCO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FB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SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0EvVVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsdVFBZ0piLGdCQUFnQixnQkFySnpCO1lBQ1Qsc0JBQXNCO1lBQ3RCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDckQsaURBOEpnQixpQkFBaUIsZ0RDdk1wQyxpNEJBMkJBOzsyRkRnQmEsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLGlCQUFpQixhQUVoQjt3QkFDVCxzQkFBc0I7d0JBQ3RCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7cUJBQ3JEOzswQkE2TEUsSUFBSTs7MEJBQUksUUFBUTt5Q0EvS1IsY0FBYztzQkFEeEIsS0FBSztnQkF3QkssU0FBUztzQkFEbkIsS0FBSztnQkFxQkssUUFBUTtzQkFEbEIsS0FBSztnQkFvQkssSUFBSTtzQkFEZCxLQUFLO2dCQXNCQyxRQUFRO3NCQURkLEtBQUs7Z0JBVUssS0FBSztzQkFEZixLQUFLO2dCQW9CSyxRQUFRO3NCQURsQixLQUFLO2dCQWdCQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsV0FBVztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFhL0IsTUFBTTtzQkFEWixlQUFlO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNreUlkU2VydmljZSwgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCB9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvcnMtZW5hYmxlZC10b2tlbic7XG5pbXBvcnQgeyBTa3lGb3Jtc1V0aWxpdHkgfSBmcm9tICcuLi9zaGFyZWQvZm9ybXMtdXRpbGl0eSc7XG5cbmltcG9ydCB7IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWdyb3VwLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSYWRpb0NoYW5nZSB9IGZyb20gJy4vdHlwZXMvcmFkaW8tY2hhbmdlJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogT3JnYW5pemVzIHJhZGlvIGJ1dHRvbnMgaW50byBhIGdyb3VwLiBJdCBpcyByZXF1aXJlZCBmb3IgcmFkaW9cbiAqIGJ1dHRvbnMgb24gQW5ndWxhciByZWFjdGl2ZSBmb3JtcywgYW5kIHdlIHJlY29tbWVuZCB1c2luZyBpdCB3aXRoIGFsbCByYWRpbyBidXR0b25zLlxuICogT24gQW5ndWxhciBmb3JtcywgdGhlIGNvbXBvbmVudCBtYW5hZ2VzIHRoZSBzZWxlY3RlZCB2YWx1ZXMgYW5kIGtlZXBzIHRoZSBmb3JtcyB1cC10by1kYXRlLlxuICogV2hlbiB1c2VycyBzZWxlY3QgYSByYWRpbyBidXR0b24sIGl0cyB2YWx1ZSBpcyBkcml2ZW4gdGhyb3VnaCBhbiBgbmdNb2RlbGAgYXR0cmlidXRlIHRoYXQgeW91IHNwZWNpZnkgb24gdGhlIGBza3ktcmFkaW8tZ3JvdXBgIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yYWRpby1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVJhZGlvR3JvdXBJZFNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBTS1lfRk9STV9FUlJPUlNfRU5BQkxFRCwgdXNlVmFsdWU6IHRydWUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UmFkaW9Hcm91cENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogVGhlIEhUTUwgZWxlbWVudCBJRCBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwIGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsbGVkYnkpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGxhYmVsVGV4dGAgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJpYUxhYmVsbGVkQnkodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19hcmlhTGFiZWxsZWRCeSA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNsb2dnZXIuZGVwcmVjYXRlZCgnU2t5UmFkaW9Hcm91cENvbXBvbmVudC5hcmlhTGFiZWxsZWRCeScsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19hcmlhTGFiZWxsZWRCeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHJhZGlvIGJ1dHRvbiBncm91cC4gVGhpcyBzZXRzIHRoZVxuICAgKiByYWRpbyBidXR0b24gZ3JvdXAncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSByYWRpbyBidXR0b24gZ3JvdXAgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBsYWJlbFRleHRgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbCA9IHZhbHVlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNsb2dnZXIuZGVwcmVjYXRlZCgnU2t5UmFkaW9Hcm91cENvbXBvbmVudC5hcmlhTGFiZWwnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhcmlhTGFiZWwoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGlucHV0IG9uIHRlbXBsYXRlLWRyaXZlbiBmb3Jtcy4gRG9uJ3QgdXNlIHRoaXMgaW5wdXQgb24gcmVhY3RpdmUgZm9ybXMgYmVjYXVzZSB0aGV5IG1heSBvdmVyd3JpdGUgdGhlIGlucHV0IG9yIGxlYXZlIHRoZSBjb250cm9sIG91dCBvZiBzeW5jLlxuICAgKiBUbyBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHJlYWN0aXZlIGZvcm1zLCB1c2UgdGhlIGBGb3JtQ29udHJvbGAgaW5zdGVhZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBuZXdEaXNhYmxlZFN0YXRlID0gU2t5Rm9ybXNVdGlsaXR5LmNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuI19kaXNhYmxlZCAhPT0gbmV3RGlzYWJsZWRTdGF0ZSkge1xuICAgICAgdGhpcy4jX2Rpc2FibGVkID0gbmV3RGlzYWJsZWRTdGF0ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uRGlzYWJsZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIHJhZGlvIGJ1dHRvbnMgdGhhdCB0aGUgY29tcG9uZW50IGdyb3VwcyB0b2dldGhlci5cbiAgICogVGhpcyBwcm9wZXJ0eSBvdmVyd3JpdGVzIHRoZSBkZXByZWNhdGVkIGBuYW1lYCBwcm9wZXJ0eSBvbiBpbmRpdmlkdWFsIGBza3ktcmFkaW9gIGVsZW1lbnRzLFxuICAgKiBhbmQgaXQgaXMgcmVxdWlyZWQgdW5sZXNzIHRoZSBgbmFtZWAgcHJvcGVydHkgaXMgc2V0IG9uIGluZGl2aWR1YWwgYHNreS1yYWRpb2AgZWxlbWVudHMuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI19uYW1lID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuI19uYW1lID0gdGhpcy4jZGVmYXVsdE5hbWU7XG4gICAgfVxuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTtcbiAgfVxuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jX25hbWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gdmFsaWRhdGlvbi5cbiAgICogV2hlbiB5b3Ugc2V0IHRoaXMgcHJvcGVydHkgdG8gYHRydWVgLCB0aGUgY29tcG9uZW50IGFkZHMgYGFyaWEtcmVxdWlyZWRgIGFuZCBgcmVxdWlyZWRgXG4gICAqIGF0dHJpYnV0ZXMgdG8gdGhlIGlucHV0IGVsZW1lbnQgc28gdGhhdCBmb3JtcyBkaXNwbGF5IGFuIGludmFsaWQgc3RhdGUgdW50aWwgdGhlIGlucHV0IGVsZW1lbnRcbiAgICogaXMgY29tcGxldGUuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtcmVxdWlyZWQpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gYnV0dG9uIHRvIHNlbGVjdCBieSBkZWZhdWx0IHdoZW4gdGhlIGdyb3VwIGxvYWRzLlxuICAgKiBUaGUgdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlIGB2YWx1ZWAgcHJvcGVydHkgb2YgYW4gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50IHdpdGhpbiB0aGVcbiAgICogZ3JvdXAuXG4gICAqL1xuICAvLyBUT0RPOiBMb29rIGludG8gbW9yZSBzdHJvbmdseSB0eXBpbmcgaW4gYSBicmVha2luZyBjaGFuZ2VcbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgaXNOZXdWYWx1ZSA9IHZhbHVlICE9PSB0aGlzLiNjb250cm9sVmFsdWU7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChpc05ld1ZhbHVlKSB7XG4gICAgICB0aGlzLiNjb250cm9sVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZm9yIGFsbCB0aGUgcmFkaW8gYnV0dG9ucyBpbiB0aGUgZ3JvdXAuIElmIHRoZSBpbmRleCBpcyBub3QgZGVmaW5lZCxcbiAgICogdGhlIGluZGljZXMgZm9yIGluZGl2aWR1YWwgcmFkaW8gYnV0dG9ucyBhcmUgc2V0IHRvIHRoZWlyIHBvc2l0aW9ucyBvbiBsb2FkLlxuICAgKiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIGFjY2Vzc2liaWxpdHkgYnkgcGxhY2luZyBmb2N1cyBvbiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHJhZGlvXG4gICAqIGJ1dHRvbi4gSWYgbm8gcmFkaW8gYnV0dG9uIGlzIHNlbGVjdGVkLCBpdCBwbGFjZXMgZm9jdXMgb24gdGhlIGZpcnN0IG9yIGxhc3QgYnV0dG9uXG4gICAqIGRlcGVuZGluZyBvbiBob3cgdXNlcnMgbmF2aWdhdGUgdG8gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLiNfdGFiSW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLiNfdGFiSW5kZXggPSB2YWx1ZTtcbiAgICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSByYWRpbyBncm91cCdzIGxhYmVsLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBoaWRlIHRoZSBgbGFiZWxUZXh0YC5cbiAgICogQHByZXZpZXdcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbGFiZWxIaWRkZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogT3VyIHJhZGlvIGNvbXBvbmVudHMgYXJlIHVzdWFsbHkgaW1wbGVtZW50ZWQgdXNpbmcgYW4gdW5vcmRlcmVkIGxpc3QuIFRoaXMgaXMgYW5cbiAgICogYWNjZXNzaWJpbGl0eSB2aW9sYXRpb24gYmVjYXVzZSB0aGUgdW5vcmRlcmVkIGxpc3QgaGFzIGFuIGltcGxpY2l0IHJvbGUgd2hpY2hcbiAgICogaW50ZXJydXB0cyB0aGUgJ3JhZGlvZ3JvdXAnIGFuZCAncmFkaW8nIHJlbGF0aW9uc2hpcC4gVG8gY29ycmVjdCB0aGlzLCB3ZSBjYW4gc2V0IHRoZVxuICAgKiByYWRpbyBncm91cCdzICdhcmlhLW93bnMnIGF0dHJpYnV0ZSB0byBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHJhZGlvIElEcy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLW93bnNgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLW93bnMpLCBhbmQgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGByYWRpb2Agcm9sZSwgc2VlIFtpdHMgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNyYWRpbykuXG4gICAqL1xuICBwdWJsaWMgYXJpYU93bnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkcmVuKFNreVJhZGlvQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHB1YmxpYyByYWRpb3M6IFF1ZXJ5TGlzdDxTa3lSYWRpb0NvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgI2NvbnRyb2xWYWx1ZTogYW55O1xuXG4gICNkZWZhdWx0TmFtZSA9IGBza3ktcmFkaW8tZ3JvdXAtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI19uYW1lID0gJyc7XG5cbiAgI190YWJJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNfYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19hcmlhTGFiZWxsZWRCeTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNyYWRpb0dyb3VwSWRTdmM6IFNreVJhZGlvR3JvdXBJZFNlcnZpY2U7XG5cbiAgcmVhZG9ubHkgI2xvZ2dlciA9IGluamVjdChTa3lMb2dTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgI2lkU2VydmljZSA9IGluamVjdChTa3lJZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCBlcnJvcklkID0gdGhpcy4jaWRTZXJ2aWNlLmdlbmVyYXRlSWQoKTtcbiAgcHJvdGVjdGVkIG5nQ29udHJvbDogTmdDb250cm9sIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICByYWRpb0dyb3VwSWRTdmM6IFNreVJhZGlvR3JvdXBJZFNlcnZpY2UsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgKSB7XG4gICAgaWYgKG5nQ29udHJvbCkge1xuICAgICAgbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3JhZGlvR3JvdXBJZFN2YyA9IHJhZGlvR3JvdXBJZFN2YztcbiAgICB0aGlzLm5nQ29udHJvbCA9IG5nQ29udHJvbDtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLiNkZWZhdWx0TmFtZTtcblxuICAgIHRoaXMuI3JhZGlvR3JvdXBJZFN2Yy5yYWRpb0lkc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaWRzKSA9PiB7XG4gICAgICAgIHRoaXMuYXJpYU93bnMgPSBpZHMuam9pbignICcpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gTGV0IGNoaWxkIHJhZGlvIGNvbXBvbmVudHMgcmVuZGVyIGJlZm9yZSB1cGRhdGluZy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI3Jlc2V0UmFkaW9CdXR0b25zKCk7XG4gICAgfSk7XG5cbiAgICAvLyBXYXRjaCBmb3IgcmFkaW8gc2VsZWN0aW9ucy5cbiAgICB0aGlzLndhdGNoRm9yU2VsZWN0aW9ucygpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFdhaXQgZm9yIGNoaWxkIHJhZGlvIGNvbXBvbmVudHMgdG8gZmluaXNoIGFueSByZW5kZXJpbmcgdXBkYXRlcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy4jcmVzZXRSYWRpb0J1dHRvbnMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBuZXcgcmFkaW8gYnV0dG9uc1xuICAgICAgICB0aGlzLndhdGNoRm9yU2VsZWN0aW9ucygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGFueW9uZSBzdGlsbCB1c2luZyBWYWxpZGF0b3JzLlJlcXVpcmVkLlxuICAgICAgdGhpcy5yZXF1aXJlZCA9XG4gICAgICAgIHRoaXMucmVxdWlyZWQgfHwgU2t5Rm9ybXNVdGlsaXR5Lmhhc1JlcXVpcmVkVmFsaWRhdGlvbih0aGlzLm5nQ29udHJvbCk7XG5cbiAgICAgIC8vIEF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHdhdGNoRm9yU2VsZWN0aW9ucygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgICAgcmFkaW8uY2hhbmdlXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UmFkaW9DaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGNoYW5nZS52YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmFkaW8uYmx1ci5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNvblRvdWNoZWQoKTtcbiAgICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gdmFsdWUgIT09IHRoaXMuI2NvbnRyb2xWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzTmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2xWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICovXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI29uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuI29uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAjb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiB7fTtcblxuICAjdXBkYXRlUmFkaW9CdXR0b25EaXNhYmxlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PlxuICAgICAgICByYWRpby5zZXRHcm91cERpc2FibGVkU3RhdGUodGhpcy5kaXNhYmxlZCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgICAgcmFkaW8ubmFtZSA9IHRoaXMubmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVSYWRpb0J1dHRvblRhYkluZGV4ZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5ncm91cFRhYkluZGV4ID0gdGhpcy50YWJJbmRleDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJhZGlvcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICByYWRpby5jaGVja2VkID0gdGhpcy4jY29udHJvbFZhbHVlID09PSByYWRpby52YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gICNyZXNldFJhZGlvQnV0dG9ucygpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk7XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25UYWJJbmRleGVzKCk7XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25EaXNhYmxlZCgpO1xuICB9XG59XG4iLCI8bGFiZWwgKm5nSWY9XCJsYWJlbFRleHQgJiYgIWxhYmVsSGlkZGVuXCIgY2xhc3M9XCJza3ktY29udHJvbC1sYWJlbFwiPlxuICB7eyBsYWJlbFRleHQgfX1cbjwvbGFiZWw+XG48ZGl2XG4gIGNsYXNzPVwic2t5LXJhZGlvLWdyb3VwXCJcbiAgcm9sZT1cInJhZGlvZ3JvdXBcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsVGV4dCB8fCBhcmlhTGFiZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxUZXh0ID8gdW5kZWZpbmVkIDogYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkID8gdHJ1ZSA6IG51bGxcIlxuICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICcnIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIW5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgbGFiZWxUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICBcIlxuPlxuICA8bmctY29udGVudCAvPlxuPC9kaXY+XG48c2t5LWZvcm0tZXJyb3JzXG4gICpuZ0lmPVwibGFiZWxUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbZXJyb3JzXT1cIm5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2xhYmVsVGV4dF09XCInc2t5dXhfcmFkaW9fZ3JvdXBfcmVxdWlyZWRfbGFiZWxfdGV4dCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICBbc2hvd0Vycm9yc109XCJuZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbmdDb250cm9sPy5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Zvcm1zL3NyYy9saWIvbW9kdWxlcy9yYWRpby9yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZm9ybXMvc3JjL2xpYi9tb2R1bGVzL3JhZGlvL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFFTCxRQUFRLEVBRVIsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBR3RELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQUVyQjs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7SUFHakM7Ozs7Ozs7T0FPRztJQUNILElBQ1csY0FBYyxDQUFDLEtBQXlCO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FB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SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0EvVVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsdVFBZ0piLGdCQUFnQixnQkFySnpCO1lBQ1Qsc0JBQXNCO1lBQ3RCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDckQsaURBOEpnQixpQkFBaUIsZ0RDdk1wQyx5OUJBK0JBOzsyRkRZYSxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGFBRWhCO3dCQUNULHNCQUFzQjt3QkFDdEIsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQ7OzBCQTZMRSxJQUFJOzswQkFBSSxRQUFRO3lDQS9LUixjQUFjO3NCQUR4QixLQUFLO2dCQXdCSyxTQUFTO3NCQURuQixLQUFLO2dCQXFCSyxRQUFRO3NCQURsQixLQUFLO2dCQW9CSyxJQUFJO3NCQURkLEtBQUs7Z0JBc0JDLFFBQVE7c0JBRGQsS0FBSztnQkFVSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZ0JDLFNBQVM7c0JBRGYsS0FBSztnQkFRQyxXQUFXO3NCQURqQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWEvQixNQUFNO3NCQURaLGVBQWU7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlLCBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVEIH0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9ycy1lbmFibGVkLXRva2VuJztcbmltcG9ydCB7IFNreUZvcm1zVXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9mb3Jtcy11dGlsaXR5JztcblxuaW1wb3J0IHsgU2t5UmFkaW9Hcm91cElkU2VydmljZSB9IGZyb20gJy4vcmFkaW8tZ3JvdXAtaWQuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8uY29tcG9uZW50JztcbmltcG9ydCB7IFNreVJhZGlvQ2hhbmdlIH0gZnJvbSAnLi90eXBlcy9yYWRpby1jaGFuZ2UnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuLyoqXG4gKiBPcmdhbml6ZXMgcmFkaW8gYnV0dG9ucyBpbnRvIGEgZ3JvdXAuIEl0IGlzIHJlcXVpcmVkIGZvciByYWRpb1xuICogYnV0dG9ucyBvbiBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zLCBhbmQgd2UgcmVjb21tZW5kIHVzaW5nIGl0IHdpdGggYWxsIHJhZGlvIGJ1dHRvbnMuXG4gKiBPbiBBbmd1bGFyIGZvcm1zLCB0aGUgY29tcG9uZW50IG1hbmFnZXMgdGhlIHNlbGVjdGVkIHZhbHVlcyBhbmQga2VlcHMgdGhlIGZvcm1zIHVwLXRvLWRhdGUuXG4gKiBXaGVuIHVzZXJzIHNlbGVjdCBhIHJhZGlvIGJ1dHRvbiwgaXRzIHZhbHVlIGlzIGRyaXZlbiB0aHJvdWdoIGFuIGBuZ01vZGVsYCBhdHRyaWJ1dGUgdGhhdCB5b3Ugc3BlY2lmeSBvbiB0aGUgYHNreS1yYWRpby1ncm91cGAgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXJhZGlvLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5UmFkaW9Hcm91cElkU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNLWV9GT1JNX0VSUk9SU19FTkFCTEVELCB1c2VWYWx1ZTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSYWRpb0dyb3VwQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgSFRNTCBlbGVtZW50IElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSByYWRpbyBidXR0b24gZ3JvdXAuIFRoaXMgc2V0cyB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwJ3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSByYWRpbyBidXR0b24gZ3JvdXAgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWxsZWRieSkuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgbGFiZWxUZXh0YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWxsZWRCeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2FyaWFMYWJlbGxlZEJ5ID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0dyb3VwQ29tcG9uZW50LmFyaWFMYWJlbGxlZEJ5Jywge1xuICAgICAgICBkZXByZWNhdGlvbk1ham9yVmVyc2lvbjogOSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJpYUxhYmVsbGVkQnkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2FyaWFMYWJlbGxlZEJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBUaGlzIHNldHMgdGhlXG4gICAqIHJhZGlvIGJ1dHRvbiBncm91cCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHJhZGlvIGJ1dHRvbiBncm91cCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGxhYmVsVGV4dGAgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfYXJpYUxhYmVsID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuI2xvZ2dlci5kZXByZWNhdGVkKCdTa3lSYWRpb0dyb3VwQ29tcG9uZW50LmFyaWFMYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyaWFMYWJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfYXJpYUxhYmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG5ld0Rpc2FibGVkU3RhdGUgPSBTa3lGb3Jtc1V0aWxpdHkuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAodGhpcy4jX2Rpc2FibGVkICE9PSBuZXdEaXNhYmxlZFN0YXRlKSB7XG4gICAgICB0aGlzLiNfZGlzYWJsZWQgPSBuZXdEaXNhYmxlZFN0YXRlO1xuICAgICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25EaXNhYmxlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgcmFkaW8gYnV0dG9ucyB0aGF0IHRoZSBjb21wb25lbnQgZ3JvdXBzIHRvZ2V0aGVyLlxuICAgKiBUaGlzIHByb3BlcnR5IG92ZXJ3cml0ZXMgdGhlIGRlcHJlY2F0ZWQgYG5hbWVgIHByb3BlcnR5IG9uIGluZGl2aWR1YWwgYHNreS1yYWRpb2AgZWxlbWVudHMsXG4gICAqIGFuZCBpdCBpcyByZXF1aXJlZCB1bmxlc3MgdGhlIGBuYW1lYCBwcm9wZXJ0eSBpcyBzZXQgb24gaW5kaXZpZHVhbCBgc2t5LXJhZGlvYCBlbGVtZW50cy5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jX25hbWUgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jX25hbWUgPSB0aGlzLiNkZWZhdWx0TmFtZTtcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25OYW1lcygpO1xuICB9XG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNfbmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZCBmb3IgZm9ybSB2YWxpZGF0aW9uLlxuICAgKiBXaGVuIHlvdSBzZXQgdGhpcyBwcm9wZXJ0eSB0byBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgYWRkcyBgYXJpYS1yZXF1aXJlZGAgYW5kIGByZXF1aXJlZGBcbiAgICogYXR0cmlidXRlcyB0byB0aGUgaW5wdXQgZWxlbWVudCBzbyB0aGF0IGZvcm1zIGRpc3BsYXkgYW4gaW52YWxpZCBzdGF0ZSB1bnRpbCB0aGUgaW5wdXQgZWxlbWVudFxuICAgKiBpcyBjb21wbGV0ZS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLXJlcXVpcmVkYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1yZXF1aXJlZCkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSByYWRpbyBidXR0b24gdG8gc2VsZWN0IGJ5IGRlZmF1bHQgd2hlbiB0aGUgZ3JvdXAgbG9hZHMuXG4gICAqIFRoZSB2YWx1ZSBjb3JyZXNwb25kcyB0byB0aGUgYHZhbHVlYCBwcm9wZXJ0eSBvZiBhbiBpbmRpdmlkdWFsIGBza3ktcmFkaW9gIGVsZW1lbnQgd2l0aGluIHRoZVxuICAgKiBncm91cC5cbiAgICovXG4gIC8vIFRPRE86IExvb2sgaW50byBtb3JlIHN0cm9uZ2x5IHR5cGluZyBpbiBhIGJyZWFraW5nIGNoYW5nZVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBpc05ld1ZhbHVlID0gdmFsdWUgIT09IHRoaXMuI2NvbnRyb2xWYWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzTmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuI2NvbnRyb2xWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy4jb25DaGFuZ2UodmFsdWUpO1xuICAgICAgdGhpcy4jdXBkYXRlQ2hlY2tlZFJhZGlvRnJvbVZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBmb3IgYWxsIHRoZSByYWRpbyBidXR0b25zIGluIHRoZSBncm91cC4gSWYgdGhlIGluZGV4IGlzIG5vdCBkZWZpbmVkLFxuICAgKiB0aGUgaW5kaWNlcyBmb3IgaW5kaXZpZHVhbCByYWRpbyBidXR0b25zIGFyZSBzZXQgdG8gdGhlaXIgcG9zaXRpb25zIG9uIGxvYWQuXG4gICAqIFRoaXMgcHJvcGVydHkgc3VwcG9ydHMgYWNjZXNzaWJpbGl0eSBieSBwbGFjaW5nIGZvY3VzIG9uIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcmFkaW9cbiAgICogYnV0dG9uLiBJZiBubyByYWRpbyBidXR0b24gaXMgc2VsZWN0ZWQsIGl0IHBsYWNlcyBmb2N1cyBvbiB0aGUgZmlyc3Qgb3IgbGFzdCBidXR0b25cbiAgICogZGVwZW5kaW5nIG9uIGhvdyB1c2VycyBuYXZpZ2F0ZSB0byB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuI190YWJJbmRleCAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuI190YWJJbmRleCA9IHZhbHVlO1xuICAgICAgdGhpcy4jdXBkYXRlUmFkaW9CdXR0b25UYWJJbmRleGVzKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdGFiSW5kZXgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIGRpc3BsYXkgYXMgdGhlIHJhZGlvIGdyb3VwJ3MgbGFiZWwuXG4gICAqIEBwcmV2aWV3XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGFiZWxUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGhpZGUgdGhlIGBsYWJlbFRleHRgLlxuICAgKiBAcHJldmlld1xuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBsYWJlbEhpZGRlbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBPdXIgcmFkaW8gY29tcG9uZW50cyBhcmUgdXN1YWxseSBpbXBsZW1lbnRlZCB1c2luZyBhbiB1bm9yZGVyZWQgbGlzdC4gVGhpcyBpcyBhblxuICAgKiBhY2Nlc3NpYmlsaXR5IHZpb2xhdGlvbiBiZWNhdXNlIHRoZSB1bm9yZGVyZWQgbGlzdCBoYXMgYW4gaW1wbGljaXQgcm9sZSB3aGljaFxuICAgKiBpbnRlcnJ1cHRzIHRoZSAncmFkaW9ncm91cCcgYW5kICdyYWRpbycgcmVsYXRpb25zaGlwLiBUbyBjb3JyZWN0IHRoaXMsIHdlIGNhbiBzZXQgdGhlXG4gICAqIHJhZGlvIGdyb3VwJ3MgJ2FyaWEtb3ducycgYXR0cmlidXRlIHRvIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmFkaW8gSURzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtb3duc2AgYXR0cmlidXRlLCBzZWUgdGhlIFtXQUktQVJJQSBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtb3ducyksIGFuZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYHJhZGlvYCByb2xlLCBzZWUgW2l0cyBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI3JhZGlvKS5cbiAgICovXG4gIHB1YmxpYyBhcmlhT3duczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UmFkaW9Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIHJhZGlvczogUXVlcnlMaXN0PFNreVJhZGlvQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcblxuICAjY29udHJvbFZhbHVlOiBhbnk7XG5cbiAgI2RlZmF1bHROYW1lID0gYHNreS1yYWRpby1ncm91cC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAjX25hbWUgPSAnJztcblxuICAjX3RhYkluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI19hcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2FyaWFMYWJlbGxlZEJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3JhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZTtcblxuICByZWFkb25seSAjbG9nZ2VyID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuICByZWFkb25seSAjaWRTZXJ2aWNlID0gaW5qZWN0KFNreUlkU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGVycm9ySWQgPSB0aGlzLiNpZFNlcnZpY2UuZ2VuZXJhdGVJZCgpO1xuICBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHJhZGlvR3JvdXBJZFN2YzogU2t5UmFkaW9Hcm91cElkU2VydmljZSxcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIG5nQ29udHJvbDogTmdDb250cm9sLFxuICApIHtcbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjID0gcmFkaW9Hcm91cElkU3ZjO1xuICAgIHRoaXMubmdDb250cm9sID0gbmdDb250cm9sO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuI2RlZmF1bHROYW1lO1xuXG4gICAgdGhpcy4jcmFkaW9Hcm91cElkU3ZjLnJhZGlvSWRzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpZHMpID0+IHtcbiAgICAgICAgdGhpcy5hcmlhT3ducyA9IGlkcy5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBMZXQgY2hpbGQgcmFkaW8gY29tcG9uZW50cyByZW5kZXIgYmVmb3JlIHVwZGF0aW5nLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jcmVzZXRSYWRpb0J1dHRvbnMoKTtcbiAgICB9KTtcblxuICAgIC8vIFdhdGNoIGZvciByYWRpbyBzZWxlY3Rpb25zLlxuICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgY2hpbGQgcmFkaW8gY29tcG9uZW50cyB0byBmaW5pc2ggYW55IHJlbmRlcmluZyB1cGRhdGVzLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLiNyZXNldFJhZGlvQnV0dG9ucygpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG5ldyByYWRpbyBidXR0b25zXG4gICAgICAgIHRoaXMud2F0Y2hGb3JTZWxlY3Rpb25zKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgYW55b25lIHN0aWxsIHVzaW5nIFZhbGlkYXRvcnMuUmVxdWlyZWQuXG4gICAgICB0aGlzLnJlcXVpcmVkID1cbiAgICAgICAgdGhpcy5yZXF1aXJlZCB8fCBTa3lGb3Jtc1V0aWxpdHkuaGFzUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMubmdDb250cm9sKTtcblxuICAgICAgLy8gQXZvaWQgYW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hGb3JTZWxlY3Rpb25zKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5jaGFuZ2VcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlOiBTa3lSYWRpb0NoYW5nZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy4jb25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gY2hhbmdlLnZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICByYWRpby5ibHVyLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuI29uVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGlzTmV3VmFsdWUgPSB2YWx1ZSAhPT0gdGhpcy4jY29udHJvbFZhbHVlO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoaXNOZXdWYWx1ZSkge1xuICAgICAgdGhpcy4jY29udHJvbFZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLiN1cGRhdGVDaGVja2VkUmFkaW9Gcm9tVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgY29udHJvbC4gSW1wbGVtZW50ZWQgYXMgYSBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy4jb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICNvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJhZGlvcykge1xuICAgICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+XG4gICAgICAgIHJhZGlvLnNldEdyb3VwRGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4ge1xuICAgICAgICByYWRpby5uYW1lID0gdGhpcy5uYW1lO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJhZGlvQnV0dG9uVGFiSW5kZXhlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yYWRpb3MpIHtcbiAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICAgIHJhZGlvLmdyb3VwVGFiSW5kZXggPSB0aGlzLnRhYkluZGV4O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmFkaW9zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yYWRpb3MuZm9yRWFjaCgocmFkaW8pID0+IHtcbiAgICAgIHJhZGlvLmNoZWNrZWQgPSB0aGlzLiNjb250cm9sVmFsdWUgPT09IHJhZGlvLnZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgI3Jlc2V0UmFkaW9CdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZUNoZWNrZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgIHRoaXMuI3VwZGF0ZVJhZGlvQnV0dG9uTmFtZXMoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvblRhYkluZGV4ZXMoKTtcbiAgICB0aGlzLiN1cGRhdGVSYWRpb0J1dHRvbkRpc2FibGVkKCk7XG4gIH1cbn1cbiIsIjxmaWVsZHNldFxuICBjbGFzcz1cInNreS1yYWRpby1ncm91cFwiXG4gIHJvbGU9XCJyYWRpb2dyb3VwXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFRleHQgPyB1bmRlZmluZWQgOiBhcmlhTGFiZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibGFiZWxUZXh0ID8gdW5kZWZpbmVkIDogYXJpYUxhYmVsbGVkQnlcIlxuICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkID8gdHJ1ZSA6IG51bGxcIlxuICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICcnIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtaW52YWxpZF09XCIhIW5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwiXG4gICAgbGFiZWxUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzID8gZXJyb3JJZCA6IHVuZGVmaW5lZFxuICBcIlxuPlxuICA8bGVnZW5kXG4gICAgKm5nSWY9XCJsYWJlbFRleHRcIlxuICAgIGNsYXNzPVwic2t5LWNvbnRyb2wtbGFiZWxcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS1zY3JlZW4tcmVhZGVyLW9ubHknOiBsYWJlbEhpZGRlbiB9XCJcbiAgPlxuICAgIHt7IGxhYmVsVGV4dCB9fVxuICA8L2xlZ2VuZD5cbiAgPG5nLWNvbnRlbnQgLz5cbjwvZmllbGRzZXQ+XG48c2t5LWZvcm0tZXJyb3JzXG4gICpuZ0lmPVwibGFiZWxUZXh0ICYmIG5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2lkXT1cImVycm9ySWRcIlxuICBbZXJyb3JzXT1cIm5nQ29udHJvbD8uZXJyb3JzXCJcbiAgW2xhYmVsVGV4dF09XCInc2t5dXhfcmFkaW9fZ3JvdXBfcmVxdWlyZWRfbGFiZWxfdGV4dCcgfCBza3lMaWJSZXNvdXJjZXNcIlxuICBbc2hvd0Vycm9yc109XCJuZ0NvbnRyb2w/LnRvdWNoZWQgfHwgbmdDb250cm9sPy5kaXJ0eVwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbjwvc2t5LWZvcm0tZXJyb3JzPlxuIl19
@@ -3152,14 +3152,14 @@ class SkyRadioGroupComponent {
3152
3152
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.4", type: SkyRadioGroupComponent, selector: "sky-radio-group", inputs: { ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", disabled: "disabled", name: "name", required: "required", value: "value", tabIndex: "tabIndex", labelText: "labelText", labelHidden: ["labelHidden", "labelHidden", booleanAttribute] }, providers: [
3153
3153
  SkyRadioGroupIdService,
3154
3154
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
3155
- ], queries: [{ propertyName: "radios", predicate: SkyRadioComponent, descendants: true }], ngImport: i0, template: "<label *ngIf=\"labelText && !labelHidden\" class=\"sky-control-label\">\n {{ labelText }}\n</label>\n<div\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText || ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <ng-content />\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
3155
+ ], queries: [{ propertyName: "radios", predicate: SkyRadioComponent, descendants: true }], ngImport: i0, template: "<fieldset\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText ? undefined : ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{ 'sky-screen-reader-only': labelHidden }\"\n >\n {{ labelText }}\n </legend>\n <ng-content />\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkyFormErrorsComponent, selector: "sky-form-errors", inputs: ["errors", "labelText", "showErrors"] }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
3156
3156
  }
3157
3157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: SkyRadioGroupComponent, decorators: [{
3158
3158
  type: Component,
3159
3159
  args: [{ selector: 'sky-radio-group', providers: [
3160
3160
  SkyRadioGroupIdService,
3161
3161
  { provide: SKY_FORM_ERRORS_ENABLED, useValue: true },
3162
- ], template: "<label *ngIf=\"labelText && !labelHidden\" class=\"sky-control-label\">\n {{ labelText }}\n</label>\n<div\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText || ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <ng-content />\n</div>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n" }]
3162
+ ], template: "<fieldset\n class=\"sky-radio-group\"\n role=\"radiogroup\"\n [attr.aria-label]=\"labelText ? undefined : ariaLabel\"\n [attr.aria-labelledby]=\"labelText ? undefined : ariaLabelledBy\"\n [attr.aria-owns]=\"ariaOwns\"\n [attr.aria-required]=\"required ? true : null\"\n [attr.required]=\"required ? '' : null\"\n [attr.aria-invalid]=\"!!ngControl?.errors\"\n [attr.aria-errormessage]=\"\n labelText && ngControl?.errors ? errorId : undefined\n \"\n>\n <legend\n *ngIf=\"labelText\"\n class=\"sky-control-label\"\n [ngClass]=\"{ 'sky-screen-reader-only': labelHidden }\"\n >\n {{ labelText }}\n </legend>\n <ng-content />\n</fieldset>\n<sky-form-errors\n *ngIf=\"labelText && ngControl?.errors\"\n [id]=\"errorId\"\n [errors]=\"ngControl?.errors\"\n [labelText]=\"'skyux_radio_group_required_label_text' | skyLibResources\"\n [showErrors]=\"ngControl?.touched || ngControl?.dirty\"\n>\n <ng-content select=\"sky-form-error\" />\n</sky-form-errors>\n" }]
3163
3163
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: SkyRadioGroupIdService }, { type: i2$1.NgControl, decorators: [{
3164
3164
  type: Self
3165
3165
  }, {