function maxContentSize(bytes) {
        return function (control) {
            /** @type {?} */
            var size = control && control.value ? ((/** @type {?} */ (control.value))).files.map(function (f) { return f.size; }).reduce(function (acc, i) { return acc + i; }, 0) : 0;
            /** @type {?} */
            var condition = bytes >= size;
            return condition
                ? null
                : {
                    maxContentSize: {
                        actualSize: size,
                        maxSize: bytes
                    }
                };
        };
    }
/**
     * Function to control content of files
     *
     * @param {?} bytes max number of bytes allowed
     *
     * @return {?}
     */
Function to control content of files
@param {?} bytes max number of bytes allowed


Function to control content of files @param { ? } bytes max number of bytes allowed
function maxContentSize(bytes) {
        return function (control) {
            var size = control && control.value ? (( (control.value))).files.map(function (f) { return f.size; }).reduce(function (acc, i) { return acc + i; }, 0) : 0;
            var condition = bytes >= size;
            return condition
                ? null
                : {
                    maxContentSize: {
                        actualSize: size,
                        maxSize: bytes
                    }
                };
        };
    }
function maxContentSize ( bytes ) { return function ( control ) { var size = control && control . value ? ( ( ( control . value ) ) ) . files . map ( function ( f ) { return f . size ; } ) . reduce ( function ( acc , i ) { return acc + i ; } , 0 ) : 0 ; var condition = bytes >= size ; return condition ? null : { maxContentSize : { actualSize : size , maxSize : bytes } } ; } ; }
Function to control content of files
 @param {?}
Function to control content of files @param { ? }
/** @type {?} */ /** @type {?} */ /** @type {?} */