// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Only look for copyrights and licenses at the top of the file.
// This can be increased as necessary, but the larger the value, the slower the
// script will be, so be judicious.
//
// FWIW, png.h's license statements end near the 7KB mark.
// third_party/boringssl/src/include/openssl/ssl.h has licenses for 7285 bytes
// third_party/boringssl/src/include/openssl/tls1.h has licenses for 7530 bytes
const int kMaxSize = 7530;
