// this holds all the lit-html modules that we make so they
// can be incorporated into the legacy Polymer pages.

import '../../infra-sk/modules/login-sk';
import '../../infra-sk/modules/paramset-sk';
import '../node_modules/@webcomponents/custom-elements/custom-elements.min';
import '../modules/changelist-controls-sk';
import '../modules/corpus-selector-sk';
import '../modules/digest-details-sk';
import '../modules/dots-legend-sk';
import '../modules/dots-sk';
import '../modules/multi-zoom-sk';
import '../modules/triage-history-sk';
import '../modules/triage-sk';
import 'elements-sk/error-toast-sk';
