(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) :
	typeof define === 'function' && define.amd ? define('@angular/cdk', ['exports', '@angular/core'], factory) :
	(global = global || self, factory((global.ng = global.ng || {}, global.ng.cdk = {}), global.ng.core));
}(this, (function (exports, core) { 'use strict';

	/**
	 * @license
	 * Copyright Google LLC All Rights Reserved.
	 *
	 * Use of this source code is governed by an MIT-style license that can be
	 * found in the LICENSE file at https://angular.io/license
	 */
	/** Current version of the Angular Component Development Kit. */
	var VERSION = new core.Version('11.2.13');

	/**
	 * @license
	 * Copyright Google LLC All Rights Reserved.
	 *
	 * Use of this source code is governed by an MIT-style license that can be
	 * found in the LICENSE file at https://angular.io/license
	 */

	/**
	 * @license
	 * Copyright Google LLC All Rights Reserved.
	 *
	 * Use of this source code is governed by an MIT-style license that can be
	 * found in the LICENSE file at https://angular.io/license
	 */

	exports.VERSION = VERSION;

	Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=cdk.umd.js.map
