/**
 * Generated bundle index. Do not edit.
 */
export * from './public-api';
export { _MAT_INK_BAR_POSITIONER_FACTORY as ɵangular_material_src_material_tabs_tabs_a } from './ink-bar';
export { MatPaginatedTabHeader as ɵangular_material_src_material_tabs_tabs_d } from './paginated-tab-header';
export { MAT_TAB_CONTENT as ɵangular_material_src_material_tabs_tabs_c } from './tab-content';
export { MAT_TAB_LABEL as ɵangular_material_src_material_tabs_tabs_b } from './tab-label';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvdGFicy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQywrQkFBK0IsSUFBSSwwQ0FBMEMsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUN4RyxPQUFPLEVBQUMscUJBQXFCLElBQUksMENBQTBDLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRyxPQUFPLEVBQUMsZUFBZSxJQUFJLDBDQUEwQyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxhQUFhLElBQUksMENBQTBDLEVBQUMsTUFBTSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7X01BVF9JTktfQkFSX1BPU0lUSU9ORVJfRkFDVE9SWSBhcyDJtWFuZ3VsYXJfbWF0ZXJpYWxfc3JjX21hdGVyaWFsX3RhYnNfdGFic19hfSBmcm9tICcuL2luay1iYXInO1xuZXhwb3J0IHtNYXRQYWdpbmF0ZWRUYWJIZWFkZXIgYXMgybVhbmd1bGFyX21hdGVyaWFsX3NyY19tYXRlcmlhbF90YWJzX3RhYnNfZH0gZnJvbSAnLi9wYWdpbmF0ZWQtdGFiLWhlYWRlcic7XG5leHBvcnQge01BVF9UQUJfQ09OVEVOVCBhcyDJtWFuZ3VsYXJfbWF0ZXJpYWxfc3JjX21hdGVyaWFsX3RhYnNfdGFic19jfSBmcm9tICcuL3RhYi1jb250ZW50JztcbmV4cG9ydCB7TUFUX1RBQl9MQUJFTCBhcyDJtWFuZ3VsYXJfbWF0ZXJpYWxfc3JjX21hdGVyaWFsX3RhYnNfdGFic19ifSBmcm9tICcuL3RhYi1sYWJlbCc7Il19