Full Code of openalpr/openalpr for AI

master 736ab0e608cf cached
375 files
2.9 MB
780.8k tokens
2363 symbols
1 requests
Download .txt
Showing preview only (3,116K chars total). Download the full file or copy to clipboard to get everything.
Repository: openalpr/openalpr
Branch: master
Commit: 736ab0e608cf
Files: 375
Total size: 2.9 MB

Directory structure:
gitextract_nywf7dr4/

├── .dockerignore
├── .gitattributes
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── cla.txt
├── config/
│   ├── alprd.conf.defaults
│   ├── alprd.conf.user
│   ├── openalpr.conf.defaults
│   └── openalpr.conf.user
├── distros/
│   ├── centos/
│   │   └── openalpr.spec
│   └── debian/
│       ├── README.source
│       ├── changelog
│       ├── compat
│       ├── control
│       ├── copyright
│       ├── docs
│       ├── libopenalpr-data.install
│       ├── libopenalpr-dev.install
│       ├── libopenalpr2.install
│       ├── openalpr-daemon.default
│       ├── openalpr-daemon.dirs
│       ├── openalpr-daemon.init
│       ├── openalpr-daemon.install
│       ├── openalpr-daemon.postinst
│       ├── openalpr-utils.install
│       ├── openalpr.install
│       ├── openalpr.manpages
│       ├── patches/
│       │   └── series
│       ├── python-openalpr.install
│       ├── rules
│       ├── source/
│       │   ├── format
│       │   └── local-options
│       └── watch
├── doc/
│   ├── .gitignore
│   └── man/
│       └── alpr.1
├── runtime_data/
│   ├── cameras.yaml
│   ├── config/
│   │   ├── au.conf
│   │   ├── auwide.conf
│   │   ├── br.conf
│   │   ├── br2.conf
│   │   ├── eu.conf
│   │   ├── fr.conf
│   │   ├── gb.conf
│   │   ├── in.conf
│   │   ├── kr.conf
│   │   ├── kr2.conf
│   │   ├── mx.conf
│   │   ├── sg.conf
│   │   ├── us.conf
│   │   └── vn2.conf
│   ├── ocr/
│   │   └── tessdata/
│   │       ├── lau.traineddata
│   │       ├── lbr.traineddata
│   │       ├── leu.traineddata
│   │       ├── lfr.traineddata
│   │       ├── lgb.traineddata
│   │       ├── lin.traineddata
│   │       ├── lkr.traineddata
│   │       ├── lkr2.traineddata
│   │       ├── lsg.traineddata
│   │       └── lus.traineddata
│   ├── postprocess/
│   │   ├── au.patterns
│   │   ├── br.patterns
│   │   ├── eu.patterns
│   │   ├── gb.patterns
│   │   ├── in.patterns
│   │   ├── kr.patterns
│   │   ├── mx.patterns
│   │   ├── readme.txt
│   │   ├── sg.patterns
│   │   └── us.patterns
│   └── region/
│       ├── au.xml
│       ├── br.xml
│       ├── br2.xml
│       ├── eu.xml
│       ├── in.xml
│       ├── kr2.xml
│       ├── us.xml
│       └── vn2.xml
└── src/
    ├── CMakeLists.txt
    ├── bindings/
    │   ├── csharp/
    │   │   ├── AlprNetGuiTest/
    │   │   │   ├── AlprNetGuiTest.csproj
    │   │   │   ├── Form1.Designer.cs
    │   │   │   ├── Form1.cs
    │   │   │   ├── Form1.resx
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties/
    │   │   │   │   ├── AssemblyInfo.cs
    │   │   │   │   ├── Resources.Designer.cs
    │   │   │   │   ├── Resources.resx
    │   │   │   │   ├── Settings.Designer.cs
    │   │   │   │   └── Settings.settings
    │   │   │   └── app.config
    │   │   ├── AlprNetTest/
    │   │   │   ├── AlprNetTest.csproj
    │   │   │   ├── App.config
    │   │   │   ├── Program.cs
    │   │   │   └── Properties/
    │   │   │       └── AssemblyInfo.cs
    │   │   ├── alprnet/
    │   │   │   ├── Alpr.cs
    │   │   │   ├── AlprNet.csproj
    │   │   │   ├── Models/
    │   │   │   │   ├── AlprResponse.cs
    │   │   │   │   ├── AlprResult.cs
    │   │   │   │   ├── Candidate.cs
    │   │   │   │   ├── Coordinate.cs
    │   │   │   │   └── RegionOfInterest.cs
    │   │   │   ├── Properties/
    │   │   │   │   └── AssemblyInfo.cs
    │   │   │   ├── alprnet.sln
    │   │   │   └── packages.config
    │   │   └── readme.md
    │   ├── go/
    │   │   ├── CMakeLists.txt
    │   │   ├── main.go
    │   │   ├── make.sh
    │   │   ├── openalpr/
    │   │   │   └── openalpr.go
    │   │   ├── openalprgo.cpp
    │   │   └── openalprgo.h
    │   ├── java/
    │   │   ├── .gitignore
    │   │   ├── CMakeLists.txt
    │   │   ├── com_openalpr_jni_Alpr.h
    │   │   ├── make.sh
    │   │   ├── openalprjni.cpp
    │   │   └── src/
    │   │       ├── Main.java
    │   │       └── com/
    │   │           └── openalpr/
    │   │               └── jni/
    │   │                   ├── Alpr.java
    │   │                   ├── AlprCoordinate.java
    │   │                   ├── AlprException.java
    │   │                   ├── AlprPlate.java
    │   │                   ├── AlprPlateResult.java
    │   │                   ├── AlprRegionOfInterest.java
    │   │                   ├── AlprResults.java
    │   │                   └── json/
    │   │                       ├── JSON.java
    │   │                       ├── JSONArray.java
    │   │                       ├── JSONException.java
    │   │                       ├── JSONObject.java
    │   │                       ├── JSONStringer.java
    │   │                       └── JSONTokener.java
    │   └── python/
    │       ├── .gitignore
    │       ├── CMakeLists.txt
    │       ├── make.sh
    │       ├── openalpr/
    │       │   ├── __init__.py
    │       │   └── openalpr.py
    │       ├── openalprpy.cpp
    │       ├── setup.py
    │       └── test.py
    ├── cmake_modules/
    │   ├── FindTesseract.cmake
    │   ├── Findlog4cplus.cmake
    │   ├── LibFindMacros.cmake
    │   └── templates/
    │       ├── cmake_uninstall.cmake.in
    │       └── openalpr.pc.in
    ├── daemon/
    │   ├── beanstalk.c
    │   ├── beanstalk.cc
    │   ├── beanstalk.h
    │   ├── beanstalk.hpp
    │   ├── daemonconfig.cpp
    │   └── daemonconfig.h
    ├── daemon.cpp
    ├── inc/
    │   └── safequeue.h
    ├── main.cpp
    ├── misc_utilities/
    │   ├── CMakeLists.txt
    │   ├── binarizefontsheet.cpp
    │   ├── calibrate.cpp
    │   ├── classifychars.cpp
    │   ├── prepcharsfortraining.cpp
    │   ├── sortstate.cpp
    │   └── tagplates.cpp
    ├── openalpr/
    │   ├── CMakeLists.txt
    │   ├── TRexpp.h
    │   ├── alpr.cpp
    │   ├── alpr.h
    │   ├── alpr_c.cpp
    │   ├── alpr_c.h
    │   ├── alpr_impl.cpp
    │   ├── alpr_impl.h
    │   ├── binarize_wolf.cpp
    │   ├── binarize_wolf.h
    │   ├── cjson.c
    │   ├── cjson.h
    │   ├── colorfilter.cpp
    │   ├── colorfilter.h
    │   ├── config.cpp
    │   ├── config.h
    │   ├── config_helper.cpp
    │   ├── config_helper.h
    │   ├── constants.h
    │   ├── detection/
    │   │   ├── detector.cpp
    │   │   ├── detector.h
    │   │   ├── detector_types.h
    │   │   ├── detectorcpu.cpp
    │   │   ├── detectorcpu.h
    │   │   ├── detectorcuda.cpp
    │   │   ├── detectorcuda.h
    │   │   ├── detectorfactory.cpp
    │   │   ├── detectorfactory.h
    │   │   ├── detectormask.cpp
    │   │   ├── detectormask.h
    │   │   ├── detectormorph.cpp
    │   │   ├── detectormorph.h
    │   │   ├── detectorocl.cpp
    │   │   └── detectorocl.h
    │   ├── edges/
    │   │   ├── edgefinder.cpp
    │   │   ├── edgefinder.h
    │   │   ├── platecorners.cpp
    │   │   ├── platecorners.h
    │   │   ├── platelines.cpp
    │   │   ├── platelines.h
    │   │   ├── scorekeeper.cpp
    │   │   ├── scorekeeper.h
    │   │   ├── textlinecollection.cpp
    │   │   └── textlinecollection.h
    │   ├── licenseplatecandidate.cpp
    │   ├── licenseplatecandidate.h
    │   ├── motiondetector.cpp
    │   ├── motiondetector.h
    │   ├── ocr/
    │   │   ├── ocr.cpp
    │   │   ├── ocr.h
    │   │   ├── ocrfactory.cpp
    │   │   ├── ocrfactory.h
    │   │   ├── segmentation/
    │   │   │   ├── charactersegmenter.cpp
    │   │   │   ├── charactersegmenter.h
    │   │   │   ├── histogram.cpp
    │   │   │   ├── histogram.h
    │   │   │   ├── histogramhorizontal.cpp
    │   │   │   ├── histogramhorizontal.h
    │   │   │   ├── histogramvertical.cpp
    │   │   │   ├── histogramvertical.h
    │   │   │   ├── segment.cpp
    │   │   │   ├── segment.h
    │   │   │   ├── segmentationgroup.cpp
    │   │   │   └── segmentationgroup.h
    │   │   ├── tesseract_ocr.cpp
    │   │   └── tesseract_ocr.h
    │   ├── pipeline_data.cpp
    │   ├── pipeline_data.h
    │   ├── postprocess/
    │   │   ├── postprocess.cpp
    │   │   ├── postprocess.h
    │   │   ├── regexrule.cpp
    │   │   └── regexrule.h
    │   ├── prewarp.cpp
    │   ├── prewarp.h
    │   ├── result_aggregator.cpp
    │   ├── result_aggregator.h
    │   ├── simpleini/
    │   │   ├── CMakeLists.txt
    │   │   ├── ConvertUTF.c
    │   │   ├── ConvertUTF.h
    │   │   ├── LICENCE.txt
    │   │   ├── README.md
    │   │   ├── ini.syn
    │   │   ├── simpleini.doxy
    │   │   ├── simpleini.h
    │   │   └── snippets.cpp
    │   ├── support/
    │   │   ├── CMakeLists.txt
    │   │   ├── fast_mutex.h
    │   │   ├── filesystem.cpp
    │   │   ├── filesystem.h
    │   │   ├── platform.cpp
    │   │   ├── platform.h
    │   │   ├── re2/
    │   │   │   ├── bitstate.cc
    │   │   │   ├── compile.cc
    │   │   │   ├── dfa.cc
    │   │   │   ├── filtered_re2.cc
    │   │   │   ├── filtered_re2.h
    │   │   │   ├── mimics_pcre.cc
    │   │   │   ├── nfa.cc
    │   │   │   ├── onepass.cc
    │   │   │   ├── parse.cc
    │   │   │   ├── perl_groups.cc
    │   │   │   ├── prefilter.cc
    │   │   │   ├── prefilter.h
    │   │   │   ├── prefilter_tree.cc
    │   │   │   ├── prefilter_tree.h
    │   │   │   ├── prog.cc
    │   │   │   ├── prog.h
    │   │   │   ├── re2.cc
    │   │   │   ├── regexp.cc
    │   │   │   ├── regexp.h
    │   │   │   ├── set.cc
    │   │   │   ├── set.h
    │   │   │   ├── simplify.cc
    │   │   │   ├── stringpiece.cc
    │   │   │   ├── stringpiece.h
    │   │   │   ├── tostring.cc
    │   │   │   ├── unicode_casefold.cc
    │   │   │   ├── unicode_casefold.h
    │   │   │   ├── unicode_groups.cc
    │   │   │   ├── unicode_groups.h
    │   │   │   ├── util/
    │   │   │   │   ├── atomicops.h
    │   │   │   │   ├── benchmark.h
    │   │   │   │   ├── flags.h
    │   │   │   │   ├── hash.cc
    │   │   │   │   ├── logging.h
    │   │   │   │   ├── mutex.h
    │   │   │   │   ├── pcre.h
    │   │   │   │   ├── random.h
    │   │   │   │   ├── rune.cc
    │   │   │   │   ├── sparse_array.h
    │   │   │   │   ├── sparse_set.h
    │   │   │   │   ├── stringprintf.cc
    │   │   │   │   ├── strutil.cc
    │   │   │   │   ├── test.h
    │   │   │   │   ├── thread.h
    │   │   │   │   ├── utf.h
    │   │   │   │   ├── util.h
    │   │   │   │   ├── valgrind.cc
    │   │   │   │   └── valgrind.h
    │   │   │   ├── variadic_function.h
    │   │   │   └── walker-inl.h
    │   │   ├── re2.h
    │   │   ├── timing.cpp
    │   │   ├── timing.h
    │   │   ├── tinydir.h
    │   │   ├── tinythread.cpp
    │   │   ├── tinythread.h
    │   │   ├── utf8/
    │   │   │   ├── checked.h
    │   │   │   ├── core.h
    │   │   │   └── unchecked.h
    │   │   ├── utf8.cpp
    │   │   ├── utf8.h
    │   │   ├── version.cpp
    │   │   └── version.h
    │   ├── textdetection/
    │   │   ├── characteranalysis.cpp
    │   │   ├── characteranalysis.h
    │   │   ├── linefinder.cpp
    │   │   ├── linefinder.h
    │   │   ├── platemask.cpp
    │   │   ├── platemask.h
    │   │   ├── textcontours.cpp
    │   │   ├── textcontours.h
    │   │   ├── textline.cpp
    │   │   └── textline.h
    │   ├── transformation.cpp
    │   ├── transformation.h
    │   ├── utility.cpp
    │   └── utility.h
    ├── plate_push.py
    ├── statedetection/
    │   ├── CMakeLists.txt
    │   ├── featurematcher.cpp
    │   ├── featurematcher.h
    │   ├── line_segment.cpp
    │   ├── line_segment.h
    │   ├── state_detector.cpp
    │   ├── state_detector.h
    │   ├── state_detector_impl.cpp
    │   └── state_detector_impl.h
    ├── tclap/
    │   ├── Arg.h
    │   ├── ArgException.h
    │   ├── ArgTraits.h
    │   ├── CmdLine.h
    │   ├── CmdLineInterface.h
    │   ├── CmdLineOutput.h
    │   ├── Constraint.h
    │   ├── DocBookOutput.h
    │   ├── HelpVisitor.h
    │   ├── IgnoreRestVisitor.h
    │   ├── MultiArg.h
    │   ├── MultiSwitchArg.h
    │   ├── OptionalUnlabeledTracker.h
    │   ├── StandardTraits.h
    │   ├── StdOutput.h
    │   ├── SwitchArg.h
    │   ├── UnlabeledMultiArg.h
    │   ├── UnlabeledValueArg.h
    │   ├── ValueArg.h
    │   ├── ValuesConstraint.h
    │   ├── VersionVisitor.h
    │   ├── Visitor.h
    │   ├── XorHandler.h
    │   └── ZshCompletionOutput.h
    ├── tests/
    │   ├── CMakeLists.txt
    │   ├── catch.hpp
    │   ├── test_api.cpp
    │   ├── test_config.cpp
    │   ├── test_regex.cpp
    │   └── test_utility.cpp
    └── video/
        ├── CMakeLists.txt
        ├── logging_videobuffer.h
        ├── videobuffer.cpp
        └── videobuffer.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
.git
Dockerfile


================================================
FILE: .gitattributes
================================================
.gitattributes export-ignore
.gitignore export-ignore



================================================
FILE: .gitignore
================================================
*~
build/
windows/
scratch/
out/
debian_repo
_CPack_Packages/
/libraries/
CMakeFiles/
CMakeCache.txt
.o
benchmarks/
.kdev/
*.kdev4
src/CPackConfig.cmake
src/CPackSourceConfig.cmake
Makefile
*.conf.local
src/compile_commands.json
website/
utilities/
samples/
nbproject/
runtime_data/keypoints/source.txt
*.deb
*.rpm
openalpr_*.tar.gz
openalpr-*.asc
openalpr-*.sig
openalpr-*.tar.gz
*.orig
.DS_Store

# vim editor files
*.swp

# Visual Studio files
src.sln
*.vcxproj
*.vcxproj.*
*.suo
*.sdf
*.opensdf
*.dir/
*.ipch
Debug/
Release/

# JetBrains IDEA / PyCharm
.idea/


cmake_install.cmake


================================================
FILE: .travis.yml
================================================
before_install:
  - sudo add-apt-repository ppa:yjwong/opencv2 -y
  - sudo apt-get update -q

install: sudo apt-get -y install libopencv-dev libtesseract-dev git cmake build-essential libleptonica-dev liblog4cplus-dev libcurl3-dev beanstalkd

before_script:
  - mkdir -p ./src/build/
  - cd ./src/build/
  - cmake ..
script: 
  - make
  - make openalpr-utils-classifychars openalpr-utils-tagplates openalpr-utils-benchmark openalpr-utils-prepcharsfortraining
  - sudo make install
  - ./tests/unittests





================================================
FILE: CONTRIBUTING.md
================================================
To get started, <a href="https://cla-assistant.io/openalpr/openalpr">sign the Contributor License Agreement</a>.


================================================
FILE: Dockerfile
================================================
from ubuntu:18.04

# Install prerequisites
run apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    build-essential \
    cmake \
    curl \
    git \
    libcurl3-dev \
    libleptonica-dev \
    liblog4cplus-dev \
    libopencv-dev \
    libtesseract-dev \
    wget

# Copy all data
copy . /srv/openalpr

# Setup the build directory
run mkdir /srv/openalpr/src/build
workdir /srv/openalpr/src/build

# Setup the compile environment
run cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc .. && \
    make -j2 && \
    make install

workdir /data

entrypoint ["alpr"]


================================================
FILE: LICENSE
================================================
                    GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.


================================================
FILE: README.md
================================================
openalpr
========

OpenALPR is an open source *Automatic License Plate Recognition* library written in C++ with bindings in C#, Java, Node.js, Go, and Python.  The library analyzes images and video streams to identify license plates.  The output is the text representation of any license plate characters.

Check out a live online demo here: http://www.openalpr.com/demo-image.html

User Guide
-----------


OpenALPR includes a command line utility.  Simply typing "alpr [image file path]" is enough to get started recognizing license plate images.

For example, the following output is created by analyzing this image:
![Plate Image](http://www.openalpr.com/images/demoscreenshots/plate3.png "Input image")



```
user@linux:~/openalpr$ alpr ./samplecar.png

plate0: top 10 results -- Processing Time = 58.1879ms.
    - PE3R2X     confidence: 88.9371
    - PE32X      confidence: 78.1385
    - PE3R2      confidence: 77.5444
    - PE3R2Y     confidence: 76.1448
    - P63R2X     confidence: 72.9016
    - FE3R2X     confidence: 72.1147
    - PE32       confidence: 66.7458
    - PE32Y      confidence: 65.3462
    - P632X      confidence: 62.1031
    - P63R2      confidence: 61.5089

```

Detailed command line usage:

```
user@linux:~/openalpr$ alpr --help

USAGE: 

   alpr  [-c <country_code>] [--config <config_file>] [-n <topN>] [--seek
         <integer_ms>] [-p <pattern code>] [--clock] [-d] [-j] [--]
         [--version] [-h] <image_file_path>


Where: 

   -c <country_code>,  --country <country_code>
     Country code to identify (either us for USA or eu for Europe). 
     Default=us

   --config <config_file>
     Path to the openalpr.conf file

   -n <topN>,  --topn <topN>
     Max number of possible plate numbers to return.  Default=10

   --seek <integer_ms>
     Seek to the specified millisecond in a video file. Default=0

   -p <pattern code>,  --pattern <pattern code>
     Attempt to match the plate number against a plate pattern (e.g., md
     for Maryland, ca for California)

   --clock
     Measure/print the total time to process image and all plates. 
     Default=off

   -d,  --detect_region
     Attempt to detect the region of the plate image.  [Experimental] 
     Default=off

   -j,  --json
     Output recognition results in JSON format.  Default=off

   --,  --ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   --version
     Displays version information and exits.

   -h,  --help
     Displays usage information and exits.

   <image_file_path>
     Image containing license plates


   OpenAlpr Command Line Utility

```


Binaries
----------

Pre-compiled Windows binaries can be downloaded on the [releases page](https://github.com/openalpr/openalpr/releases)

Install OpenALPR on Ubuntu 16.04 with the following commands:

    sudo apt-get update && sudo apt-get install -y openalpr openalpr-daemon openalpr-utils libopenalpr-dev

Documentation
---------------

Detailed documentation is available at [doc.openalpr.com](http://doc.openalpr.com/)

Integrating the Library
-----------------------

OpenALPR is written in C++ and has bindings in C#, Python, Node.js, Go, and Java.  Please see this guide for examples showing how to run OpenALPR in your application: http://doc.openalpr.com/bindings.html

Compiling
-----------

[![Build Status](https://travis-ci.org/openalpr/openalpr.svg?branch=master)](https://travis-ci.org/openalpr/openalpr)

OpenALPR compiles and runs on Linux, Mac OSX and Windows.

OpenALPR requires the following additional libraries:

    - Tesseract OCR v3.0.4 (https://github.com/tesseract-ocr/tesseract)
    - OpenCV v2.4.8+ (http://opencv.org/)

After cloning this GitHub repository, you should download and extract Tesseract and OpenCV source code into their own directories.  Compile both libraries.

Please follow these detailed compilation guides for your respective operating system:

* [Windows](https://github.com/openalpr/openalpr/wiki/Compilation-instructions-(Windows))
* [Ubuntu Linux](https://github.com/openalpr/openalpr/wiki/Compilation-instructions-(Ubuntu-Linux))
* [OS X](https://github.com/openalpr/openalpr/wiki/Compilation-instructions-(OS-X))
* [Android Library](https://github.com/SandroMachado/openalpr-android)
* [Android Application Sample](https://github.com/sujaybhowmick/OpenAlprDroidApp)
* [iOS](https://github.com/twelve17/openalpr-ios)
* [iOS React Native](https://github.com/cardash/react-native-openalpr)
* [Xamarin](https://github.com/kevinjpetersen/openalpr-xamarin)

If all went well, there should be an executable named *alpr* along with *libopenalpr-static.a* and *libopenalpr.so* that can be linked into your project.

Docker
------

``` shell
# Build docker image
docker build -t openalpr https://github.com/openalpr/openalpr.git
# Download test image
wget http://plates.openalpr.com/h786poj.jpg
# Run alpr on image
docker run -it --rm -v $(pwd):/data:ro openalpr -c eu h786poj.jpg
```

Questions
---------
Please post questions or comments to the Google group list: https://groups.google.com/forum/#!forum/openalpr


Contributions
-------------
Improvements to the OpenALPR library are always welcome.  Please review the [OpenALPR design description](https://github.com/openalpr/openalpr/wiki/OpenALPR-Design) and get started.

Code contributions are not the only way to help out.  Do you have a large library of license plate images?  If so, please upload your data to the anonymous FTP located at upload.openalpr.com.  Do you have time to "tag" plate images in an input image or help in other ways?  Please let everyone know by posting a note in the forum.


License
-------

Affero GPLv3
http://www.gnu.org/licenses/agpl-3.0.html

Commercial-friendly licensing available.  Contact: info@openalpr.com


================================================
FILE: cla.txt
================================================
In order to clarify the intellectual property license granted with Contributions from any person or entity, OpenALPR Technology, Inc. ("OpenALPR") must have a Contributor License Agreement ("CLA") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of OpenALPR; it does not change your rights to use your own Contributions for any other purpose.

You accept and agree to the following terms and conditions for Your present and future Contributions submitted to OpenALPR. Except for the license granted herein to OpenALPR and recipients of software distributed by OpenALPR, You reserve all right, title, and interest in and to Your Contributions.

Definitions.

"You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with OpenALPR. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to OpenALPR for inclusion in, or documentation of, any of the products owned or managed by OpenALPR (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to OpenALPR or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, OpenALPR for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby grant to OpenALPR and to recipients of software distributed by OpenALPR a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.

Grant of Patent License. Subject to the terms and conditions of this Agreement, You hereby grant to OpenALPR and to recipients of software distributed by OpenALPR a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.

You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to OpenALPR, or that your employer has executed a separate Corporate CLA with OpenALPR.

You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.

You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.

Should You wish to submit work that is not Your original creation, You may submit it to OpenALPR separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [[]named here]".

You agree to notify OpenALPR of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.


================================================
FILE: config/alprd.conf.defaults
================================================
[daemon]

; country determines the training dataset used for recognizing plates.  
; Valid values are: us, eu, au, auwide, gb, kr, mx, sg
country = us
;pattern = ca

; text name identifier for this location
;   site_id = your-unique-sitename

; Declare each stream on a separate line
; each unique stream should be defined as stream = [url]

; Example stream config:
;   stream = http://127.0.0.1/example_video_stream.mjpeg
;   stream = http://127.0.0.1/example_second_stream.mjpeg
;   stream = webcam

; Number of threads to analyze frames.
analysis_threads = 4

; topn is the number of possible plate character variations to report
topn = 10

; Determines whether images that contain plates should be stored to disk
store_plates = 0
store_plates_location = /var/lib/openalpr/plateimages/

; upload address is the destination to POST to
upload_data = 0
upload_address = http://localhost:9000/push/



================================================
FILE: config/alprd.conf.user
================================================
; This configuration file overrides the default values specified 
; in ${CMAKE_INSTALL_PREFIX}/share/openalpr/config/alprd.defaults.conf
[daemon]



================================================
FILE: config/openalpr.conf.defaults
================================================

; Specify the path to the runtime data directory
runtime_dir = ${CMAKE_INSTALL_PREFIX}/share/openalpr/runtime_data


ocr_img_size_percent = 1.33333333
state_id_img_size_percent = 2.0

; Calibrating your camera improves detection accuracy in cases where vehicle plates are captured at a steep angle
; Use the openalpr-utils-calibrate utility to calibrate your fixed camera to adjust for an angle
; Once done, update the prewarp config with the values obtained from the tool
prewarp =

; detection will ignore plates that are too large.  This is a good efficiency technique to use if the 
; plates are going to be a fixed distance away from the camera (e.g., you will never see plates that fill 
; up the entire image
max_plate_width_percent = 100
max_plate_height_percent = 100

; detection_iteration_increase is the percentage that the LBP frame increases each iteration.
; It must be greater than 1.0.  A value of 1.01 means increase by 1%, 1.10 increases it by 10% each time. 
; So a 1% increase would be ~10x slower than 10% to process, but it has a higher chance of landing 
; directly on the plate and getting a strong detection
detection_iteration_increase = 1.1

; The minimum detection strength determines how sure the detection algorithm must be before signaling that 
; a plate region exists.  Technically this corresponds to LBP nearest neighbors (e.g., how many detections 
; are clustered around the same area).  For example, 2 = very lenient, 9 = very strict.
detection_strictness = 3

; The detection doesn't necessarily need an extremely high resolution image in order to detect plates
; Using a smaller input image should still find the plates and will do it faster
; Tweaking the max_detection_input values will resize the input image if it is larger than these sizes 
; max_detection_input_width/height are specified in pixels
max_detection_input_width = 1280
max_detection_input_height = 720

; detector is the technique used to find license plate regions in an image.  Value can be set to
; lbpcpu    - default LBP-based detector uses the system CPU  
; lbpgpu    - LBP-based detector that uses Nvidia GPU to increase recognition speed.
; lbpopencl - LBP-based detector that uses OpenCL GPU to increase recognition speed.  Requires OpenCV 3.0
; morphcpu  - Experimental detector that detects white rectangles in an image.  Does not require training.
detector = lbpcpu

; If set to true, all results must match a postprocess text pattern if a pattern is available.  
; If not, the result is disqualified. 
must_match_pattern = 0

; Bypasses plate detection.  If this is set to 1, the library assumes that each region provided is a likely plate area.
skip_detection = 0

; Specifies the full path to an image file that constrains the detection area.  Only the plate regions allowed through the mask 
; will be analyzed.  The mask image must match the resolution of your image to be analyzed.  The mask is black and white.  
; Black areas will be ignored, white areas will be searched.  An empty value means no mask (scan the entire image)
detection_mask_image = 

; OpenALPR can scan the same image multiple times with different randomization.  Setting this to a value larger than
; 1 may increase accuracy, but will increase processing time linearly (e.g., analysis_count = 3 is 3x slower)
analysis_count = 1

; OpenALPR detects high-contrast plate crops and uses an alternative edge detection technique.  Setting this to 0.0 
; would classify  ALL images as high-contrast, setting it to 1.0 would classify no images as high-contrast. 
contrast_detection_threshold = 0.3

max_plate_angle_degrees = 15

ocr_min_font_point = 6

; Minimum OCR confidence percent to consider.
postprocess_min_confidence = 65

; Any OCR character lower than this will also add an equally likely
; chance that the character is incorrect and will be skipped.  Value is a confidence percent
postprocess_confidence_skip_level = 80


debug_general         = 0
debug_timing          = 0
debug_detector        = 0
debug_prewarp         = 0
debug_state_id        = 0
debug_plate_lines     = 0
debug_plate_corners   = 0
debug_char_segment    = 0
debug_char_analysis   = 0
debug_color_filter    = 0
debug_ocr             = 0
debug_postprocess     = 0
debug_show_images     = 0
debug_pause_on_frame  = 0






================================================
FILE: config/openalpr.conf.user
================================================
; This configuration file overrides the default values specified 
; in ${CMAKE_INSTALL_PREFIX}/share/openalpr/config/openalpr.defaults.conf


================================================
FILE: distros/centos/openalpr.spec
================================================
Name:     openalpr
Version:  2.2.0
Release:  1%{?dist}
Summary:  OpenALPR
License:  AGPLv3
URL:      https://github.com/openalpr/openalpr  
source:   openalpr.tar.gz
requires: tesseract, log4cplus
 
%package utils
Summary:  OpenALPR miscellaneous utilities
%description utils
OpenALPR miscellaneous utilities

%package daemon
Summary:  OpenALPR Daemon
%description daemon
OpenALPR daemon runs license plate recognition in the background

%package -n libopenalpr-devel
Summary:  OpenALPR Development headers
%description -n libopenalpr-devel
OpenALPR Development headers

%package -n libopenalpr2-data
Summary:  OpenALPR runtime data
%description -n libopenalpr2-data
OpenALPR runtime data

%package -n libopenalpr2
Summary:  OpenALPR libs
%description -n libopenalpr2
OpenALPR libs

%package -n python-openalpr
Summary:  OpenALPR Python bindings
%description -n python-openalpr
OpenALPR Python bindings


%description
OpenALPR is an open source Automatic License Plate Recognition library written in C++ 
with bindings in C#, Java, Node.js, Go, and Python. The library analyzes images and 
video streams to identify license plates. The output is the text representation of 
any license plate characters

%changelog
* Sun Feb 28 2016 mhill
  First spec release


%prep

# Extract the Source0 tar
%setup -n openalpr/src


%build

# Manually set all paths
cmake -DCMAKE_INSTALL_PREFIX=/usr .

make %{?_smp_mflags}

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT


mv $RPM_BUILD_ROOT/usr/lib/python2.7/dist-packages $RPM_BUILD_ROOT/usr/lib/python2.7/site-packages 



%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
   
  /etc/openalpr/openalpr.conf 
  /usr/bin/alpr
  /usr/share/man/man1/alpr.1.gz


   %exclude /usr/lib/python2.7/site-packages/openalpr/*.pyc
   %exclude /usr/lib/python2.7/site-packages/openalpr/*.pyo
   %exclude /usr/lib/pkgconfig/openalpr.pc
   %exclude /usr/include/openalprgo.h
   %exclude /usr/include/state_detector.h


%files utils
%defattr(-,root,root,-)
  /usr/bin/openalpr-utils-*

%files daemon
%defattr(-,root,root,-)
  /etc/openalpr/alprd.conf
  /usr/bin/alprd

%files -n libopenalpr-devel
%defattr(-,root,root,-)
  /usr/include/alpr.h
  /usr/lib/libopenalpr-static.a

%files -n libopenalpr2-data
%defattr(-,root,root,-)
  /usr/share/openalpr/runtime_data/

%files -n libopenalpr2
%defattr(-,root,root,-)
  /usr/lib/*.so*

%files -n python-openalpr
%defattr(-,root,root,-)
  /usr/lib/python2.7/site-packages/openalpr/*.py


================================================
FILE: distros/debian/README.source
================================================
This package uses quilt to manage all modifications to the upstream source.
Changes are stored in the source package as diffs in debian/patches and applied
during the build.

See /usr/share/doc/quilt/README.source for a detailed explanation.


This package uses the version 3.0 of the debian source package; An upstream
tarball is required to build it. This tarball can be generated automagically by
downloading the sources from the github repository with the following command:

fakeroot debian/rules get-orig-source


================================================
FILE: distros/debian/changelog
================================================
openalpr (2.3.0-2) unstable; urgency=low

  * Add python3-distutils to build requirements (Closes: #896793)
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Tue, 1 May 2018 11:22:25 -0500

openalpr (2.3.0-1) unstable; urgency=low

  * Added plate detection mask and prewarp config changes via API
  * Improved plate patterns
  * Improved accuracy
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Sat, 17 Sep 2016 11:27:25 -0500

openalpr (2.2.4-1) unstable; urgency=low

  * Added Python3 bindings (Closes: #815961)
  * Remove frame number from JSON output (Closes: #813290)
  * Use dh-python to generate proper depends for python-openalpr (Closes:
    #815960)
  * Change python-openalpr from arch any to arch all (Closes: #815959)
  * Fixed build failure on Hurd (Closes: #812738)
  * Add bindings package for python3, python3-openalpr
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Sun, 28 Feb 2016 09:51:25 -0500

openalpr (2.2.3-1) unstable; urgency=low

  * Changed Debian config to build on all architectures
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Sun, 24 Jan 2016 15:33:25 -0500

openalpr (2.2.2-1) unstable; urgency=low

  * Minor bug fixes
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Wed, 6 Jan 2016 06:48:05 -0500

openalpr (2.2.1-1) unstable; urgency=low

  * Initial upload to Debian (Closes: #747509)
  * Debian Packaging enhancements
  * Added binding for Go
  * Upload sponsored by Petter Reinholdtsen

 -- Matthew Hill <matthill@openalpr.com>  Thu, 17 Dec 2015 18:10:05 -0500

openalpr (2.2.0-0.1) experimental; urgency=low

  * Non-maintainer upload
  * Added training data for Singapore and Great Britain
  * Improved accuracy and reduced false positives for US plate detector
  * Improved support for 2-line plates (requires training data)
  * Supports analyzing multiple training datasets in one pass
  * Added OpenCL GPU support (works with Nvidia, AMD, and Intel GPUs)
  * Upgraded to OpenCV 3.0
  * Support Tesseract 3.04
  * .NET library API improvements
  * Bug Fixes

 -- Matthew Hill <matthill@openalpr.com>  Mon, 19 Oct 2015 18:15:00 -0500

openalpr (2.1.0-0.1) experimental; urgency=low

  * Non-maintainer upload
  * Added per-character details to API output
  * Bug fixes
  * Added camera calibration utility
  * Motion detector for video frames
  * Full UTF-8 character support
  * Support for South Korean and Australian plates
  * Experimental morphological plate detector
  * Pattern matching for European countries

 -- Matthew Hill <matthill@openalpr.com>  Thu, 18 Jun 2015 20:31:00 -0500

openalpr (2.0.1-0.1) experimental; urgency=low

  * Non-maintainer upload
  * Bindings for Java, C#, and Python
  * API changes/simplification
  * CUDA support
  * Bug fixes
  * Faster initial load time
  * Additional Config options
  * Library supports multi-line plates

 -- Matthew Hill <matthill@openalpr.com>  Thu, 12 Mar 2015 23:46:00 -0500

openalpr (2.0.0-0.1) experimental; urgency=low

  * Non-maintainer upload
  * Upstream release with several fixes:
    - Compilation of utilities enabled
    - installation of static library
    - alpr build against shared library

 -- Emmanuel Papin <manupap01@gmail.com>  Sun, 14 Dec 2014 19:39:07 +0200


================================================
FILE: distros/debian/compat
================================================
9


================================================
FILE: distros/debian/control
================================================
Source: openalpr
Section: video
Priority: optional
Maintainer: Matthew Hill <matthill@openalpr.com>
Build-Depends: debhelper (>= 9), cmake, quilt,
 libtesseract-dev, libleptonica-dev, liblog4cplus-dev,
 libcurl3-dev, libopencv-dev, default-jdk,
 python, python3, python3-distutils, dh-python
Standards-Version: 4.1.4
Homepage: https://github.com/openalpr/openalpr
Vcs-Browser: https://github.com/openalpr/openalpr
Vcs-Git: https://github.com/openalpr/openalpr.git

Package: libopenalpr2
Section: libs
Architecture: any
Depends: libopenalpr-data (= ${source:Version}), ${shlibs:Depends},
 ${misc:Depends}
Description: Automated License Plate Recognition library (OpenALPR)
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 This package contains the runtime libraries used to interface with OpenALPR.

Package: libopenalpr-dev
Section: libdevel
Architecture: any
Depends: libopenalpr2 (= ${binary:Version}), ${misc:Depends}
Description: Development files for the OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 This package contains the header files and static libraries used to link
 OpenALPR into another program.

Package: libopenalpr-data
Section: misc
Architecture: all
Depends: ${misc:Depends}
Description: Runtime data for the OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 This package contains the runtime training data used by OpenALPR to recognize
 license plates from various countries.

Package: openalpr
Architecture: any
Depends: libopenalpr2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Command line program to operate the OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 This package contains a command-line program to analyze images for license
 plates.

Package: openalpr-daemon
Architecture: any
Depends: libopenalpr2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends},
 adduser,
 beanstalkd
Description: Daemon to run OpenALPR in the background
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 The OpenALPR daemon allows you to monitor a camera stream for license plate
 numbers in the background. Alprd runs as a daemon process on Linux.
 .
 The plate numbers can be streamed to another server (via HTTP posts) or can be
 consumed programmatically via a beanstalkd queue.

Package: openalpr-utils
Section: utils
Architecture: any
Depends: libopenalpr2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Utilities for the OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 The OpenALPR utils package contains a collection of binaries that help with
 training new data.  The following binaries are included:
 .
 openalpr-utils-calibrate - Calibrates the software for cameras capturing plate
 images at an angle
 .
 openalpr-utils-benchmark - Benchmarks accuracy/speed against a testing dataset
 .
 openalpr-utils-tagplates - Utility to tag the location and plate number for
 testing and training
 .
 openalpr-utils-classifychars - Extracts character images from cropped plate
 images for OCR training
 .
 openalpr-utils-prepcharsfortraining - Reformates character images into a format
 that Tesseract can use for OCR training

Package: python-openalpr
Section: python
Architecture: all
Depends: libopenalpr-dev (>= ${binary:Version}),
 ${python:Depends}, ${misc:Depends}
Description: Python binding for OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 The Python package allows Python code to interface with OpenALPR directly via
 native Python bindings.

Package: python3-openalpr
Section: python
Architecture: all
Depends: libopenalpr-dev (>= ${source:Version}),
 ${python3:Depends}, ${misc:Depends}
Description: Python 3 binding for OpenALPR library
 OpenALPR is an open source Automatic License Plate Recognition library written
 in C++. The library analyzes images and identifies license plates. The output
 is the text representation of any license plate characters found in the image.
 .
 The Python 3 package allows Python 3 code to interface with OpenALPR directly
 via native Python 3 bindings.


================================================
FILE: distros/debian/copyright
================================================
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: openalpr
Source: https://github.com/openalpr/openalpr

Files: *
Copyright: 2013-2016 Matt Hill <matthill@openalpr.com>
License: AGPL-3+
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as
  published by the Free Software Foundation, either version 3 of the
  License, or (at your option) any later version.
  .
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.
  .
  You should have received a copy of the GNU Affero General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.

Files: src/openalpr/support/re2.h src/openalpr/support/re2/*
Copyright: 2008 The RE2 Authors. 
License: BSD-3-clause
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are
  met:
  .
     * Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.
     * Redistributions in binary form must reproduce the above
  copyright notice, this list of conditions and the following disclaimer
  in the documentation and/or other materials provided with the
  distribution.
     * Neither the name of Google Inc. nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.
  .
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Files: src/openalpr/support/re2/util/rune.cc
Copyright: 2002 by Lucent Technologies
License: Expat-Lucent
  Permission to use, copy, modify, and distribute this software for any
  purpose without fee is hereby granted, provided that this entire notice
  is included in all copies of any software which is or includes a copy
  or modification of this software and in all copies of the supporting
  documentation for such software.
  .
  THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
  WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
  REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
  OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.

Files: src/openalpr/support/tinydir.h
Copyright: 2013, Cong Xu
License: BSD-2-clause
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:
  .
  1. Redistributions of source code must retain the above copyright notice, this
     list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation
     and/or other materials provided with the distribution.
  .
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License: Expat
  Permission is hereby granted, free of charge, to any person obtaining a copy of
  this software and associated documentation files (the "Software"), to deal in
  the Software without restriction, including without limitation the rights to
  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  the Software, and to permit persons to whom the Software is furnished to do so,
  subject to the following conditions:
  .
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
  .
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Files: src/tclap/*
Copyright: 2004 Michael E. Smoot, Daniel Aarno.
 2004 Michael E. Smoot, Daniel Aarno. All rights reverved.
 2003 Michael E. Smoot. All rights reverved.
 2006 Oliver Kiddle All rights reverved.
 2005 Michael E. Smoot, Daniel Aarno, Erik Zeek. All rights reverved.
 2003-2005 Michael E. Smoot . All rights reverved.
 2004-2005 Michael E. Smoot All rights reverved.
 2003 Michael E. Smoot .
 2007 Daniel Aarno, Michael E. Smoot . All rights reverved.
 2004 Michael E. Smoot, Daniel Aarno . All rights reverved.
License: Expat

Files: src/openalpr/simpleini/*
Copyright: 2006-2013 Brodie Thiesfield
License: Expat

License: Zlib
  This software is provided 'as-is', without any express
  or implied warranty. In no event will the authors be held
  liable for any damages arising from the use of this software.
  .
  Permission is granted to anyone to use this software for
  any purpose, including commercial applications, and to alter
  it and redistribute it freely, subject to the following restrictions:
  .
    1. The origin of this software must not be misrepresented;
    you must not claim that you wrote the original software.
    If you use this software in a product, an acknowledgment
    in the product documentation would be appreciated but
    is not required.
  .
    2. Altered source versions must be plainly marked as such,
    and must not be misrepresented as being the original software.
  .
    3. This notice may not be removed or altered from any
    source distribution.

Files: src/openalpr/TRexpp.h
Copyright: 2003-2004 Alberto Demichelis
License: Zlib

Files: src/openalpr/support/tinythread.* src/openalpr/support/fast_mutex.h
Copyright: 2010-2012 Marcus Geelnard
License: Zlib

Files: src/openalpr/support/utf8.h src/openalpr/support/utf8.cpp src/openalpr/support/utf8/*
Copyright: 2006 Nemanja Trifunovic
License: Boost
  Permission is hereby granted, free of charge, to any person or organization
  obtaining a copy of the software and accompanying documentation covered by
  this license (the "Software") to use, reproduce, display, distribute,
  execute, and transmit the Software, and to prepare derivative works of the
  Software, and to permit third-parties to whom the Software is furnished to
  do so, all subject to the following:
  .
  The copyright notices in the Software and this entire statement, including
  the above license grant, this restriction and the following disclaimer,
  must be included in all copies of the Software, in whole or in part, and
  all derivative works of the Software, unless such copies or derivative
  works are solely in the form of machine-executable object code generated by
  a source language processor.
  .
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
  SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
  FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  DEALINGS IN THE SOFTWARE.

Files: src/openalpr/support/re2/util/valgrind.h
Copyright: 2000-2009 Julian Seward.  All rights reserved.
License: BSD-4-clause
  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions
  are met:
  .
  1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
  .
  2. The origin of this software must not be misrepresented; you must 
    not claim that you wrote the original software.  If you use this 
    software in a product, an acknowledgment in the product 
    documentation would be appreciated but is not required.
  .
  3. Altered source versions must be plainly marked as such, and must
    not be misrepresented as being the original software.
  .
  4. The name of the author may not be used to endorse or promote 
    products derived from this software without specific prior written 
    permission.
  .
  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Files: src/bindings/java/src/com/openalpr/jni/json/*
Copyright: 2010 The Android Open Source Project
License: Apache-2.0
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  .
       http://www.apache.org/licenses/LICENSE-2.0
       /usr/share/common-licenses/Apache-2.0 (on Debian systems)
  .
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

Files: src/tests/catch.hpp
Copyright: Two Blue Cubes Ltd. All rights reserved.
License: Boost-1.0
  Permission is hereby granted, free of charge, to any person obtaining a
  copy of this software and/or associated documentation files (the
  "Materials"), to deal in the Materials without restriction, including
  without limitation the rights to use, copy, modify, merge, publish,
  distribute, sublicense, and/or sell copies of the Materials, and to
  permit persons to whom the Materials are furnished to do so, subject to
  the following conditions:
  .
  The above copyright notice and this permission notice shall be included
  in all copies or substantial portions of the Materials.
  .
  THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.

Files: src/openalpr/cjson.*
Copyright: 2009 Dave Gamble
License: Expat

Files: src/openalpr/support/windows/dirent.h
Copyright: 2006-2012 Toni Ronkko
License: Expat

Files: src/openalpr/simpleini/ConvertUTF.*
Copyright: 2001-2004 Unicode, Inc.
License: Unicode
  This source code is provided as is by Unicode, Inc. No claims are
  made as to fitness for any particular purpose. No warranties of any
  kind are expressed or implied. The recipient agrees to determine
  applicability of information provided. If this file has been
  purchased on magnetic or optical media from Unicode, Inc., the
  sole remedy for any claim will be exchange of defective media
  within 90 days of receipt.
  .
  Limitations on Rights to Redistribute This Code
  .
  Unicode, Inc. hereby grants the right to freely use the information
  supplied in this file in the creation of products supporting the
  Unicode Standard, and to make copies of this file in any form
  for internal or external distribution as long as this notice
  remains attached.


================================================
FILE: distros/debian/docs
================================================
cla.txt
README.md


================================================
FILE: distros/debian/libopenalpr-data.install
================================================
etc/openalpr/openalpr.conf
usr/share/openalpr/config/openalpr.defaults.conf
usr/share/openalpr/runtime_data

================================================
FILE: distros/debian/libopenalpr-dev.install
================================================
usr/include/alpr.h
usr/include/alpr_c.h
usr/lib/lib*.a
usr/lib/lib*so


================================================
FILE: distros/debian/libopenalpr2.install
================================================
usr/lib/lib*.so.*


================================================
FILE: distros/debian/openalpr-daemon.default
================================================
# Defaults for alprd initscript
# sourced by /etc/init.d/openalpr-daemon
# installed at /etc/default/openalpr-daemon by the maintainer scripts
#
# This is a POSIX shell fragment
#
# These options can be set to modify the behavior of the openalr-daemon init script.
# The options commented out show the default values.

# Start the daemon if set to "yes"
START_DAEMON="yes"

# Path to the log file
#LOGFILE="/var/log/alpr.log"

# User and group the daemon should run as
#USER="daemon"
#GROUP="daemon"

# Additional options that are passed to the daemon
#DAEMON_OPTS=



================================================
FILE: distros/debian/openalpr-daemon.dirs
================================================
var/lib/openalpr/plateimages/


================================================
FILE: distros/debian/openalpr-daemon.init
================================================
#!/bin/sh
### BEGIN INIT INFO
# Provides:          openalpr-daemon
# Required-Start:    $local_fs $network $remote_fs $syslog
# Required-Stop:     $local_fs $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: OpenALPR daemon for license plate recognition
# Description:       OpenALPR daemon detects license plate in the background
### END INIT INFO

# Author: Emmanuel Papin <manupap01@gmail.com>

unset USER

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="OpenALPR daemon"
NAME=openalpr-daemon
DAEMON=/usr/bin/alprd
PIDFILE=/var/run/alprd.pid
SCRIPTNAME=/etc/init.d/$NAME
DEFAULT=/etc/default/$NAME
USER=openalpr

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r $DEFAULT ] && . $DEFAULT

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

# Do not start the daemon if NO_START is enabled in DEFAULT
if [ "$START_DAEMON" != "yes" ] && [ "$1" != "stop" ]; then
	log_warning_msg "$NAME: Not starting $DESC."
	log_warning_msg "$NAME: Disabled in $DEFAULT."
	exit 0
fi

# Set the default log file
if [ -z $LOGFILE ]; then
	LOGFILE=/var/log/alpr.log
fi

# Run as `daemon' if USER is not specified or is `root'
if [ -z $USER ]; then
	USER=daemon
fi

# If no group is specified, use USER
if [ -z $GROUP ]; then
	GROUP=$USER
fi

DAEMON_ARGS="-l $LOGFILE $DAEMON_OPTS"

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	[ ! -f $LOGFILE ] && touch $LOGFILE && chown $USER:$GROUP $LOGFILE

	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--chuid $USER:$GROUP --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--chuid $USER:$GROUP --exec $DAEMON -- \
		$DAEMON_ARGS \
		|| return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	#
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac

:


================================================
FILE: distros/debian/openalpr-daemon.install
================================================
etc/openalpr/alprd.conf
usr/share/openalpr/config/alprd.defaults.conf
usr/bin/alprd


================================================
FILE: distros/debian/openalpr-daemon.postinst
================================================
#!/bin/bash
set -e

# Source debconf library.
. /usr/share/debconf/confmodule

# Create openalpr:openalpr if it doesn't already exist
USER=openalpr
GROUP=openalpr
getent group $GROUP >/dev/null || addgroup $GROUP >/dev/null
getent passwd $USER >/dev/null || adduser --system --no-create-home --home /nonexistent $USER >/dev/null

chown openalpr:openalpr /var/lib/openalpr/plateimages

#DEBHELPER#

db_stop


================================================
FILE: distros/debian/openalpr-utils.install
================================================
usr/bin/openalpr-utils-classifychars
usr/bin/openalpr-utils-benchmark
usr/bin/openalpr-utils-prepcharsfortraining
usr/bin/openalpr-utils-tagplates
usr/bin/openalpr-utils-calibrate

================================================
FILE: distros/debian/openalpr.install
================================================
usr/bin/alpr


================================================
FILE: distros/debian/openalpr.manpages
================================================
doc/man/alpr.1


================================================
FILE: distros/debian/patches/series
================================================


================================================
FILE: distros/debian/python-openalpr.install
================================================
usr/lib/python2.7/dist-packages/openalpr

================================================
FILE: distros/debian/rules
================================================
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#DH_VERBOSE = 1

# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
# DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
#

# These are used to get the most recent version of the original sources from github
UURL = $(shell git config --get remote.origin.url)
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
HEAD = $(shell git rev-parse HEAD)
PKD  = $(shell pwd)/debian
PKG  = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\-\d+.*)};')
DTYPE =
TARBALL = ../$(PKG)_$(VER)$(DTYPE).orig.tar.xz

# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

# main packaging script based on dh7 syntax
%:
	dh $@ --sourcedirectory=src --parallel --with python2,python3

override_dh_auto_configure:
	dh_auto_configure -- \
	  -DCMAKE_INSTALL_PREFIX=/usr \
	  -DCMAKE_INSTALL_SYSCONFDIR=/etc \
	  -DCMAKE_VERBOSE_MAKEFILE=OFF \
	  -DCMAKE_COLOR_MAKEFILE=ON

override_dh_auto_install:
	dh_auto_install
	cd $(CURDIR)/src/bindings/python ; python3 ./setup.py install --install-layout=deb --root $(CURDIR)/debian/python3-openalpr

override_dh_auto_clean:
	dh_auto_clean
	rm -rf $(CURDIR)/src/bindings/python/build

# Inspired by https://wiki.debian.org/onlyjob/get-orig-source
.PHONY: get-orig-source
get-orig-source: $(TARBALL) $(info I: $(PKG)_$(VER)$(DTYPE))
	@

$(TARBALL):
	$(if $(wildcard $(PKG)-$(VER)),$(error folder '$(PKG)-$(VER)' exists, aborting...))
	@echo "# Cloning origin repository..."; \
	if ! git clone $(UURL) $(PKG)-$(VER); then \
	  $(RM) -r $(PKG)-$(VER); \
	  echo "failed to clone repository, aborting..."; \
	  false; \
	fi
	@if [ $(BRANCH) != "master" ]; then \
	  cd $(PKG)-$(VER); \
	  echo "# Not on master branch, fetching origin branch '$(BRANCH)'..."; \
	  git fetch origin $(BRANCH):$(BRANCH) || false; \
	  echo "# Switching to branch '$(BRANCH)'..."; \
	  git checkout $(BRANCH) || false; \
	fi
	@echo "# Checking local source..."
	@if [ $$(cd $(PKG)-$(VER) && git rev-parse HEAD) = $(HEAD) ]; then \
	  echo "even with origin, ok"; \
	  true; \
	else \
	  echo "not even with origin, aborting..."; \
	  false; \
	fi
	@echo "# Setting times..."
	@cd $(PKG)-$(VER) \
	&& for F in $$(git ls-tree -r --name-only HEAD | sed -e "s/\s/\*/g"); do \
	  touch --no-dereference -d "$$(git log -1 --format="%ai" -- $$F)" "$$F"; \
	done
	@echo "# Cleaning-up..."
	cd $(PKG)-$(VER) && $(RM) -r .git
	@echo "# Packing file '$(TARBALL)'..."
	@find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
	| XZ_OPT="-6v" tar -caf "$(TARBALL)" -T- --owner=root --group=root --mode=a+rX \
	&& $(RM) -r "$(PKG)-$(VER)"


================================================
FILE: distros/debian/source/format
================================================
3.0 (quilt)


================================================
FILE: distros/debian/source/local-options
================================================
unapply-patches
abort-on-upstream-changes


================================================
FILE: distros/debian/watch
================================================
  version=3
  https://github.com/openalpr/openalpr/tags .*/v?(\d.*)\.(?:tgz|tbz2|tar\.(?:gz|bz2|xz))


================================================
FILE: doc/.gitignore
================================================
build/
venv/
swagger/
swagger-ui/


================================================
FILE: doc/man/alpr.1
================================================
.TH "openalpr" "1" "10 May 2014" "" ""
.SH "NAME"
OpenALPR \- Automatic License Plate Recognition Library
.SH "SYNOPSIS"

.PP 
.nf 
Plate detection:  alpr [OPTION...] [IMAGE_PATH]

.fi 

.SH "DESCRIPTION"

.PP 
OpenALPR is an open source Automatic License Plate Recognition library written 
in C++. The library analyzes images and identifies license plates. The output 
is the text representation of any license plate characters found in the image.
.PP
Check out a live online demo here: http://www.openalpr.com/demo.html
.PP 
OpenALPR supports license plates from the USA as well as number plates from Europe.
The library can also be used to identify plates from other countries.  By training 
the library, the accuracy for these other countries can be increased.


.SH "USAGE"
.PP 

   alpr  [\-c <country_code>] [\-\-config <config_file>] [\-n <topN>] [\-\-seek
         <integer_ms>] [\-p <pattern code>] [\-\-clock] [\-d] [\-j] [\-\-]
         [\-\-version] [\-h] <image_file_path>


Where: 

   \-c <country_code>,  \-\-country <country_code>
     Country code to identify (either us for USA or eu for Europe). Can pass
     multiple country codes separated by a comma. For example au,us,eu.
     Default=us

   \-\-config <config_file>
     Path to the openalpr.conf file

   \-n <topN>,  \-\-topn <topN>
     Max number of possible plate numbers to return.  Default=10

   \-\-seek <integer_ms>
     Seek to the specified millisecond in a video file. Default=0

   \-p <pattern code>,  \-\-pattern <pattern code>
     Attempt to match the plate number against a plate pattern (e.g., md
     for Maryland, ca for California)

   \-\-clock
     Measure/print the total time to process image and all plates. 
     Default=off

   \-d,  \-\-detect_region
     Attempt to detect the region of the plate image.  [Experimental] 
     Default=off

   \-j,  \-\-json
     Output recognition results in JSON format.  Default=off

   \-\-,  \-\-ignore_rest
     Ignores the rest of the labeled arguments following this flag.

   \-\-version
     Displays version information and exits.

   \-h,  \-\-help
     Displays usage information and exits.

   <image_file_path>
     Image containing license plates



.SH "EXAMPLES"
.PP 
.RS
.PP
\f(CW$ alpr \-c eu /source/image.jpg
.RE
.PP
This command will attempt to recognize number plates in the /source/image.jpg
image using the European\-style recognition data.
The config file is not provided on the CLI, so it will use the value in 
the environment variable 'OPENALPR_CONFIG_FILE' if provided, or the default location.
.PP
.RS
\f(CW$ alpr \-\-config /tmp/openalpr.conf /source/image.png
.RE
.PP
This command will attempt to recognize number plates in the /source/image.png
image using the default USA\-style recognition data.
The config file is not provided on the CLI, so it will read the configuration data
from /tmp/openalpr.conf
.PP
.RS
\f(CW$ alpr -c us *.jpg
.RE
.PP
This command will attempt to recognize number plates in all jpeg images in the current directory
image using the USA\-style recognition data.
.PP
.RS
\f(CW$ alpr \-j /source/video.mp4
.RE
.PP
This command reads data from an input video (/source/video.mp4) and outputs
recognition data as JSON.
.PP
.RS
\f(CW$ alpr \-j stdin < /source/imagefilelist.txt > /out/recognitionresults.txt
.RE
.PP
This command processes a list of image files provided in /source/imagefilelist.txt
and writes JSON results to /out/recognitionresults.txt.
.PP
.RS
\f(CW$ alpr webcam
.RE
.PP
This command processes video from your webcam.  You can also use /dev/video0, /dev/video1, etc. 
if you have multiple webcams.
.PP
.RE


.SH "DIAGNOSTICS"

.PP 
License plate recognition software can never achieve 100% accuracy.  In cases where the 
plate is not recognized correctly, there is diagnostic information available.  You 
can modify the openalpr.conf file to turn "debug" information on.
.PP
In the [debug] section toggle the various debug options to enabled by changing the '0' 
value to a '1'.  Some of these options will output text to the CLI and others may output 
images to the GUI.

.SH "BUGS"
.PP 
Please report bugs! See the web site at
https://github.com/openalpr/openalpr/issues
.PP 

.SH "CREDITS"

.PP 
OpenALPR is distributed under the GNU Affero General Public License version 3.
See the file LICENSE for details.
.PP 
The OpenALPR site is available at: http://www.openalpr.com/.
.PP 
We would be delighted to hear about the creative ways that you are using this program.
Please contact the mailing\-list at openalpr@googlegroups.com.
.PP 
This program uses the following libraries:

.IP * 
OpenCV \- Computer vision (http://www.opencv.org)
.IP * 
Tesseract \- Optical Character Recognition (https://code.google.com/p/tesseract\-ocr)
.IP * 
T\-Rex \- Regular Expression processing (http://tiny\-rex.sourceforge.net)
.IP * 
TinyThread++ \- Multi\-threaded analysis (http://tinythreadpp.bitsnbites.eu)
.IP * 
TClap \- CLI Argument parsing (http://tclap.sourceforge.net)
.IP * 
SimpleINI \- INI file configuration (https://github.com/brofield/simpleini)

.PP 
.SH "THANKS"

.PP 
Special thanks go out to: Stefan Bauer, Philippe Vaucher, Kristians Vebers, and 
all contributors to the project.

.SH "AUTHOR"

.PP 
OpenALPR is written and maintained by Matthew Hill (matthill@openalpr.com)
and contributors from the open source community.
.PP 
Mailing lists for support and development are available at
https://groups.google.com/forum/#!forum/openalpr


================================================
FILE: runtime_data/cameras.yaml
================================================
--- 
version: 1
manufacturers:
  A-Linking: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/GetData.cgi"
  Airlink: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
      - "http://[username]:[password]@[ip_address]/cgi/mjpg/mjpeg.cgi"
      - "http://[username]:[password]@[ip_address]/cgi/jpg/image.cgi"
  Airlive: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/video.mjpg"
      - "http://[username]:[password]@[ip_address]/mjpg/video.mjpg"
  Airwave: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/pusher.cgi"
  Arecont: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg?res=full&x0=0&y0=0&x1=100%&y1=100%&quality=12&doublescan=0&fps=15&ver=HTTP/1.1"
      - "http://[username]:[password]@[ip_address]/image?res=half&x0=0&y0=0&x1=1600&y1=1200&quality=15&doublescan=0"
  Avigilon:
    mjpeg:
      - "http://[username]:[password]@[ip_address]/media/still.jpg"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/defaultPrimary?streamType=u"
  Aviosys: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/GetData.cgi"
      - "http://[username]:[password]@[ip_address]/cgi-bin/Stream?Video?Authorization="
  Axis: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/axis-cgi/mjpg/video.cgi?fps=15"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/axis-media/media.amp"
      - "rtsp://[username]:[password]@[ip_address]/mpeg4/media.amp"
  Bosch: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/rtsp_tunnel?h26x=4&line=1&inst=2"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/rtsp_tunnel"
  Bowya: 
    mjpeg:
      - "http://[username]:[password]@[ip_address]/video.cgi"
  Canon: 
    mjpeg:
      - "http://[username]:[password]@[ip_address]/-wvhttp-01-/"
      - "http://[username]:[password]@[ip_address]/-wvhttp-01-/GetOneShot"
      - "http://[username]:[password]@[ip_address]/-wvhttp-01-/GetOneShot?frame_count=no_limit"
      - "http://[username]:[password]@[ip_address]/-wvhttp-01-/GetStillImage"
  Cisco:
    h264:
      - "rtsp://[username]:[password]@[ip_address]/"
  Convision: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/fullsize.push?camera=1&sleep=15"
  CNB:
    h264:
      - "rtsp://[username]:[password]@[ip_address]/"
  Dahua:
    h264:
      - "rtsp://[username]:[password]@[ip_address]:554/cam/realmonitor?channel=1&subtype=1"
  D-Link: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/video/mjpg.cgi"
      - "http://[username]:[password]@[ip_address]/video.cgi"
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
      - "http://[username]:[password]@[ip_address]/cgi-bin/video.jpg"
      - "http://[username]:[password]@[ip_address]/IMAGE.jpg"
      - "http://[username]:[password]@[ip_address]/cgi-bin/video.vam"
      - "http://[username]:[password]@[ip_address]/_gCVimage.jpg"
  Digicom: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
  Easyn: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/videostream.cgi?user=username&pwd=password"
  Edimax: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/jpg/image.jpg"
      - "http://[username]:[password]@[ip_address]/mjpg/video.mjpg"
      - "http://[username]:[password]@[ip_address]/snapshot.cgi"
  Ego: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/sf.cgi"
  Foscam: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/videostream.cgi"
      - "http://[username]:[password]@[ip_address]/snapshot.cgi"
  Fulicom: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/sf.cgi"
  Gadspot: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/Jpeg/CamImg.jpg"
      - "http://[username]:[password]@[ip_address]/GetData.cgi?Status=0"
  Goscam: 
    mjpeg: 
      - "http://[ip_address]/cgi-bin/Stream?Video?Acc=[username]?Pwd=[password]?webcamPWD=RootCookies00000"
  Hamlet: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
  Hikvision:
    mjpeg:
      - "http://[username]:[password]@[ip_address]/cgi-bin/video.jpg?cam=1&quality=3&size=2"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/h264/ch1/sub/"
      - "rtsp://[username]:[password]@[ip_address]:554/Streaming/Channels/1"
      - "rtsp://[username]:[password]@[ip_address]:554/ch0_0.h264"
  IQeye: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/now.jpg?snap=spush"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/stream1"
      - "rtsp://[username]:[password]@[ip_address]/now.mp4&res=high"
  Intellinet: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/jpg/image.jpg"
  JVC: 
    mjpeg:
      - "http://[username]:[password]@[ip_address]/api/video?encode=jpeg&framerate=15&boundary=on"
  Kingnow: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/sf.cgi"
  Linksys: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/img/video.mjpeg"
      - "http://[username]:[password]@[ip_address]/img/mjpeg.cgi"
      - "http://[username]:[password]@[ip_address]/img/snapshot.cgi?size=2"
      - "http://[username]:[password]@[ip_address]/adm/file.cgi?h_videotype=mjpeg&todo=save"
  Linudix: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/nph-update_4ch.cgi?ch=1"
  Lumenera: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/nph-video"
  Lumens: 
    h264: 
      - "rtsp://[username]:[password]@[ip_address]:8557/h264"
  Marmitek: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi/mjpg/mjpeg.cgi"
  Mobotix: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/record/current.jpg"
      - "http://[username]:[password]@[ip_address]/control/faststream.jpg?stream=full"
      - "http://[username]:[password]@[ip_address]/faststream.jpg?stream=full&fps=1.0 (1 fps)"
      - "http://[username]:[password]@[ip_address]/faststream.jpg?stream=full&fps=3.0 (1 fps)"
      - "http://[username]:[password]@[ip_address]/faststream.jpg?stream=full&fps=0 (max frame rate)"
  Moxa: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/video.jpg"
  PLANET: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/jpg/image.jpg"
  Panasonic: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/nphMotionJpeg?Resolution=640x480&Quality=Clarity"
      - "http://[username]:[password]@[ip_address]/cgi-bin/nphContinuousServerPush"
      - "http://[username]:[password]@[ip_address]/SnapshotJPEG?mode=Refresh"
      - "http://[username]:[password]@[ip_address]/cgi-bin/camera"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/MediaInput/h264/stream_1"
  Pixord: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/Getimage.cgi"
      - "http://[username]:[password]@[ip_address]/Getimage?camera=1&fmt=full"
      - "http://[username]:[password]@[ip_address]/Getimage?camera=1&fmt=qsif"
  Qnap: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi/mjpg/mjpeg.cgi"
  Samsung: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/video?submenu=mjpg"
      - "http://[username]:[password]@[ip_address]/video?submenu=jpg"
    h264: 
      - "rtsp://[ip_address]/profile1/media.smp"
  Sanyo: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/liveimg.cgi?serverpush=1"
  Sharkx: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/stream.jpg"
  Shenzen_Sunsky: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/sf.cgi"
  Skyway_Security: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/GetData.cgi?Status=0"
      - "http://[username]:[password]@[ip_address]/Jpeg/CamImg.jpg"
  Sony: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/image"
      - "http://[username]:[password]@[ip_address]/image?speed=0"
      - "http://[username]:[password]@[ip_address]/oneshotimage.jpg"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/media/video1"
  Surecom: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
  Swann: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi/jpg/image.cgi"
  TP-Link: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/jpg/image.jpg"
      - "http://[username]:[password]@[ip_address]/video.mjpg"
  Topcom: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/mjpeg.cgi"
  Toshiba: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/__live.jpg?&&&"
      - "http://[username]:[password]@[ip_address]getstream.cgi?10&10&&&10&0&0&0&0"
  Trendnet: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/goform/video"
      - "http://[username]:[password]@[ip_address]/goform/video2"
      - "http://[username]:[password]@[ip_address]/cgi/mjpg/mjpg.cgi"
      - "http://[username]:[password]@[ip_address]/GetData.cgi"
      - "http://[username]:[password]@[ip_address]/image.jpg"
  Vilar: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/cgi-bin/sf.cgi"
  Vivotek: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/video.mjpg"
      - "http://[username]:[password]@[ip_address]/cgi-bin/video.jpg"
      - "http://[username]:[password]@[ip_address]/cgi-bin/viewer/video.jpg"
    h264:
      - "rtsp://[username]:[password]@[ip_address]/live.sdp"
  Y-Cam: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/stream.jpg"
  Zavio: 
    mjpeg: 
      - "http://[username]:[password]@[ip_address]/jpg/image.jpg"


================================================
FILE: runtime_data/config/au.conf
================================================
; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.3
segmentation_min_box_width_px = 4
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 1.6;

plate_width_mm = 372
plate_height_mm = 135

multiline = 0

char_height_mm = 82
char_width_mm = 45
char_whitespace_top_mm = 18
char_whitespace_bot_mm = 30

template_max_width_px = 165
template_max_height_px = 60

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 22
plateline_sensitivity_horizontal = 50

; Regions smaller than this will be disqualified
min_plate_size_width_px = 85
min_plate_size_height_px = 28

; Results with fewer or more characters will be discarded
postprocess_min_characters = 4
postprocess_max_characters = 8

ocr_language = lau

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

================================================
FILE: runtime_data/config/auwide.conf
================================================

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 80
char_width_mm = 53
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 184
template_max_height_px = 46

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 100
min_plate_size_height_px = 20

; Results with fewer or more characters will be discarded
postprocess_min_characters = 4
postprocess_max_characters = 8

detector_file = eu.xml

ocr_language = lau

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

================================================
FILE: runtime_data/config/br.conf
================================================
; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.4
segmentation_min_box_width_px = 2
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 400
plate_height_mm = 130

multiline = 0

char_height_mm = 70
char_width_mm = 50
char_whitespace_top_mm = 45
char_whitespace_bot_mm = 20

template_max_width_px = 150
template_max_height_px = 49

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 65
min_plate_size_height_px = 21

; Results with fewer or more characters will be discarded
postprocess_min_characters = 7
postprocess_max_characters = 7

ocr_language = lbr

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/br2.conf
================================================
char_analysis_min_pct =0.15
char_analysis_height_range =0.30
char_analysis_height_step_size =0.20
char_analysis_height_num_steps =6
segmentation_min_box_width_px =6
segmentation_min_charheight_percent =0.4;
segmentation_max_segment_width_percent_vs_average =2.0;
plate_width_mm =200
plate_height_mm =170
multiline =1
char_height_mm =53
char_width_mm =29
char_height_mm =53
char_width_mm =29
char_whitespace_top_mm =10
char_whitespace_bot_mm =10
char_whitespace_between_lines_mm =10
template_max_width_px =118
template_max_height_px =100
plateline_sensitivity_vertical =50
plateline_sensitivity_horizontal =50
min_plate_size_width_px =59
min_plate_size_height_px =50
postprocess_min_characters =5
postprocess_max_characters =7
detector_file =br2.xml
ocr_language =lbr
postprocess_regex_letters =[A-Z]
postprocess_regex_numbers =[0-9]
invert =auto


================================================
FILE: runtime_data/config/eu.conf
================================================
; One-line European style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.2
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 80
char_width_mm = 53
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 184
template_max_height_px = 46

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 65
min_plate_size_height_px = 18

; Results with fewer or more characters will be discarded
postprocess_min_characters = 5
postprocess_max_characters = 8

ocr_language = leu

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

================================================
FILE: runtime_data/config/fr.conf
================================================
; One-line European style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.2
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 80
char_width_mm = 53
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 184
template_max_height_px = 46

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 65
min_plate_size_height_px = 18

; Results with fewer or more characters will be discarded
postprocess_min_characters = 5
postprocess_max_characters = 8

detector_file = eu.xml

ocr_language = lfr

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/gb.conf
================================================
; One-line European style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.2
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 80
char_width_mm = 53
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 184
template_max_height_px = 46

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 65
min_plate_size_height_px = 18

; Results with fewer or more characters will be discarded
postprocess_min_characters = 5
postprocess_max_characters = 8

detector_file = eu.xml

ocr_language = lgb

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/in.conf
================================================
; One-line indian style style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.2
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 600
plate_height_mm = 130

multiline = 0

char_height_mm = 70
char_width_mm = 40
char_whitespace_top_mm = 25
char_whitespace_bot_mm = 25

template_max_width_px = 184
template_max_height_px = 45

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 95
min_plate_size_height_px = 20

; Results with fewer or more characters will be discarded
postprocess_min_characters = 10
postprocess_max_characters = 20

;ocr_language = lin
ocr_language = lus

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/kr.conf
================================================

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.15
segmentation_min_box_width_px = 4
segmentation_min_charheight_percent = 0.2
segmentation_max_segment_width_percent_vs_average = 2.0

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 80
char_width_mm = 43
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 184
template_max_height_px = 46

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 18
plateline_sensitivity_horizontal = 55

; Regions smaller than this will be disqualified
min_plate_size_width_px = 100
min_plate_size_height_px = 20

; Results with fewer or more characters will be discarded
postprocess_min_characters = 7
postprocess_max_characters = 7

detector_file = eu.xml

ocr_language = lkr

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = \pL
postprocess_regex_numbers = [0-9]

; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

================================================
FILE: runtime_data/config/kr2.conf
================================================
; 30-50, 40-60, 50-70, 60-80
char_analysis_min_pct = 0.30
char_analysis_height_range = 0.20
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_speckle_height_percent = 0.15
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.2   ;0.5;
segmentation_max_segment_width_percent_vs_average = 1.65    ;1.35;

plate_width_mm = 335
plate_height_mm = 170

multiline = 1

char_height_mm = 48
char_width_mm = 38

char_height_mm = 92
char_width_mm = 62

char_whitespace_top_mm = 5
char_whitespace_bot_mm = 5

char_whitespace_between_lines_mm = 13

template_max_width_px = 258
template_max_height_px = 131

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 55     ;25
plateline_sensitivity_horizontal = 85   ;45

; Regions smaller than this will be disqualified
min_plate_size_width_px = 100   ;70
min_plate_size_height_px = 50   ;35

; Results with fewer characters will be discarded
postprocess_min_characters = 7
postprocess_max_characters = 9

ocr_language = lkr

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = \pL
postprocess_regex_numbers = [0-9]

; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = always

================================================
FILE: runtime_data/config/mx.conf
================================================
; 30-50, 40-60, 50-70, 60-80
char_analysis_min_pct = 0.30
char_analysis_height_range = 0.20
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 4

segmentation_min_speckle_height_percent = 0.3
segmentation_min_box_width_px = 4
segmentation_min_charheight_percent = 0.5;
segmentation_max_segment_width_percent_vs_average = 1.35;

plate_width_mm = 304.8
plate_height_mm = 152.4

multiline = 0

char_height_mm = 70
char_width_mm = 35
char_whitespace_top_mm = 38
char_whitespace_bot_mm = 38

template_max_width_px = 120
template_max_height_px = 60

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 25
plateline_sensitivity_horizontal = 45

; Regions smaller than this will be disqualified
min_plate_size_width_px = 70
min_plate_size_height_px = 35

; Results with fewer or more characters will be discarded
postprocess_min_characters = 5
postprocess_max_characters = 7

detector_file = us.xml

ocr_language = lus

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]

; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/sg.conf
================================================
; One-line European style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.35
char_analysis_height_range = 0.15
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 5

segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.4;
segmentation_max_segment_width_percent_vs_average = 2.0;

plate_width_mm = 520
plate_height_mm = 110

multiline = 0

char_height_mm = 70
char_width_mm = 52
char_whitespace_top_mm = 10
char_whitespace_bot_mm = 10

template_max_width_px = 226
template_max_height_px = 48

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 25
plateline_sensitivity_horizontal = 70

; Regions smaller than this will be disqualified
min_plate_size_width_px = 65
min_plate_size_height_px = 18

detector_file = eu.xml

ocr_language = lsg

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-HJ-NP-Z]
postprocess_regex_numbers = [0-9]


; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto


================================================
FILE: runtime_data/config/us.conf
================================================
; 30-50, 40-60, 50-70, 60-80
char_analysis_min_pct = 0.30
char_analysis_height_range = 0.20
char_analysis_height_step_size = 0.10
char_analysis_height_num_steps = 4

segmentation_min_speckle_height_percent = 0.3
segmentation_min_box_width_px = 4
segmentation_min_charheight_percent = 0.5;
segmentation_max_segment_width_percent_vs_average = 1.35;

plate_width_mm = 304.8
plate_height_mm = 152.4

multiline = 0

char_height_mm = 70
char_width_mm = 35
char_whitespace_top_mm = 38
char_whitespace_bot_mm = 38

template_max_width_px = 120
template_max_height_px = 60

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 25
plateline_sensitivity_horizontal = 45

; Regions smaller than this will be disqualified
min_plate_size_width_px = 70
min_plate_size_height_px = 35

; Results with fewer or more characters will be discarded
postprocess_min_characters = 4
postprocess_max_characters = 8

ocr_language = lus

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]

; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto

================================================
FILE: runtime_data/config/vn2.conf
================================================
; Two-line Vietnam style plates

; 35-50; 45-60, 55-70, 65-80, 75-90
char_analysis_min_pct = 0.05 
char_analysis_height_range = 0.25
char_analysis_height_step_size = 0.05  
char_analysis_height_num_steps = 6

;segmentation_min_speckle_height_percent = 0.15
segmentation_min_box_width_px = 5
segmentation_min_charheight_percent = 0.1 
segmentation_max_segment_width_percent_vs_average = 2.0

plate_width_mm = 287
plate_height_mm = 209

multiline = 1

char_height_mm = 80
char_width_mm = 40
char_height_mm = 80
char_width_mm = 40


char_whitespace_top_mm = 13
char_whitespace_bot_mm = 13

char_whitespace_between_lines_mm = 13

template_max_width_px = 287
template_max_height_px = 209

; Higher sensitivity means less lines
plateline_sensitivity_vertical = 100
plateline_sensitivity_horizontal = 80

; Regions smaller than this will be disqualified
min_plate_size_width_px = 60
min_plate_size_height_px = 45

detector_file = vn2.xml

ocr_language = leu

; Override for postprocess letters/numbers regex. 
postprocess_regex_letters = [A-Z]
postprocess_regex_numbers = [0-9]

; Whether the plate is always dark letters on light background, light letters on dark background, or both
; value can be either always, never, or auto
invert = auto




================================================
FILE: runtime_data/postprocess/au.patterns
================================================
act	[Y]@@##@
act	[T]#####
nsw	@@##@@
nsw	@@@##@
nsw	[T][AR]##@@
nt	@@##@@
nt	[T]@####
qld	###@@@
sa	[S]###@@@
tas	@##@@
vic	@@@###
vic	#@@#@@
vic	@#####
wa	[1]@@@###

================================================
FILE: runtime_data/postprocess/br.patterns
================================================
ac MZ[N-Z]####
ac NA[A-G]####
ac NX[R-T]####
ac OVG####
ac OXP####
ac QL[U-Z]####

al MU@####
al MV[A-K]####
al NL[V-Z]####
al NM[A-O]####
al OH[B-K]####
al OR[D-M]####
al OXN####
al QL[A-M]####

ap JW[F-Z]####
ap JX[A-Y]####
ap QL[N-T]####

ba JK[S-Z]####
ba J[L-S]@####
ba NT[D-W]####
ba NY[H-Z]####
ba NZ@####
ba OK[I-Z]####
ba OL[A-G]####
ba OU[F-Z]####
ba OV[A-D]####
ba OZ[C-V]####
ba P[J-L]@####

ce HT[X-Z]####
ce H[U-Y]@####
ce HZA####
ce NQ[L-Z]####
ce NR[A-E]####
ce NU[M-Z]####
ce NV[A-F]####
ce OC[B-U]####
ce OH[X-Z]####
ce OI[A-Q]####
ce OR[N-Z]####
ce OS[A-V]####
ce OZA####
ce P[M-O]@####

df JD[P-Z]####
df J[E-J]@####
df JK[A-R]####
df OV[M-V]####
df OZ[W-Z]####
df P[A-B]@####

es MO[X-Z]####
es M[P-T]@####
es OC[V-Z]####
es OD[A-T]####
es OV[EFH-L]####
es OY[D-K]####
es PP@####

go KA[V-Z]####
go K[B-E]@####
go KF[A-C]####
go NF[C-Z]####
go NG@####
go NJ[X-Z]####
go NK@####
go NL[A-U]####
go NV[O-Z]####
go NW[A-R]####
go OG[H-Z]####
go OHA####
go OM[I-Z]####
go ON@####
go OO[A-F]####
go P[QR]@####
go QR[C-Z]####
go QS@####
go QT[A-X]####

ma HO[L-Z]####
ma HP@####
ma HQ[A-E]####
ma NH[A-T]####
ma NM[P-Z]####
ma NN[A-I]####
ma NW[S-Z]####
ma NX[A-Q]####
ma OI[R-Z]####
ma OJ[A-Q]####
ma OX[Q-Z]####
ma P[ST]@####

mt JXZ####
mt J[YZ]@####
mt KA[A-U]####
mt NI[YZ]####
mt NJ[A-W]####
mt NP[C-Q]####
mt NT[X-Z]####
mt NU[A-G]####
mt OA[A-P]####
mt OB[A-S]####
mt Q[BC]@####

ms HQ[F-Z]####
ms H[RS]@####
ms HT[A-W]####
ms NR[F-Z]####
ms NS[A-D]####
ms OO[G-U]####
ms QA@####

mg GK[J-Z]####
mg G[L-Z]@####
mg H[A-N]@####
mg HO[A-K]####
mg NX[X-Z]####
mg NY[A-G]####
mg OL[O-Z]####
mg OM[A-G]####
mg OO[V-Z]####
mg OR[A-C]####
mg OW[H-Z]####
mg OX[A-K]####
mg P[U-Z]@####
mg QM[Q-Z]####
mg Q[N-Q]@####

pa J[T-V]@####
pa JW[A-E]####
pa NS[E-Z]####
pa NT[A-C]####
pa OB[T-Z]####
pa OCA####
pa OF[I-W]####
pa OS[W-Z]####
pa OTZ####
pa Q[DE]@####
pa R[LM]@####

pb MM[N-Z]####
pb MN@####
pb MO[A-W]####
pb NP[R-Z]####
pb NQ[A-K]####
pb OE[T-Z]####
pb OF[A-H]####
pb OF[X-Z]####
pb OG[A-G]####
pb OXO####
pb QF@####
pb 

pr A@@####
pr B[A-E]@####

pe KF[D-Z]####
pe K[G-L]@####
pe KM[A-E]####
pe NX[U-W]####
pe PE[E-Z]####
pe PF[A-Q]####
pe PF[R-Z]####
pe PG@####
pe OY[L-Z]####

pi LV[F-Z]####
pi LW[A-Q]####
pi NH[U-Z]####
pi NI[A-X]####
pi OD[I-Z]####
pi OE[A-I]####
pi OU[A-E]####
pi OV[W-Y]####
pi PI@####

rj KM[F-Z]####
rj K[N-Z]@####
rj L[A-U]@####
rj LV[A-E]####
rj RI[O-Z]####
rj R[JK]@####

rn MX[H-Z]####
rn MY@####
rn MZ[A-M]####
rn NN[J-Z]####
rn NO[A-H]####
rn OJ[R-Z]####
rn OK[A-C]####
rn OVZ####
rn OW[A-G]####
rn QG@####

rs IA[Q-Z]####
rs I[B-Z]@####
rs J[A-C]@####
rs JD[A-O]####

ro NB[B-Z]####
ro N[CD]@####
ro NE[A-H]####
ro OH[L-W]####
ro OXL####
ro QRA####

rr NA[H-Z]####
rr NBA####
rr NU[H-L]####
rr QRB####

sc LW[R-Z]####
sc L[X-Z]@####
sc M[A-L]@####
sc MM[A-M]####
sc OK[D-H]
sc Q[H-J]@####

sp B[F-Z]@####
sp [C-F]@@####
sp G[A-J]@####
sp GK[A-I]####
sp SAV####

se HZ[B-Z]####
se IA[A-P]####
se NV[G-N]####
se OE[J-S]####
se OZB####
se QK[N-Z]####
se QM[A-P]####

to MV[L-Z]####
to MW@####
to MX[A-G]####
to OL[H-N]####
to OY[A-C]####
to QK[A-M]####


================================================
FILE: runtime_data/postprocess/eu.patterns
================================================
ad	@####

al	@@###@@

am	###@@###
am	##@@###
am	###@@##
am	##@@##

at	@@???
at	@@????
at	@@?????
at	@@??????
at	@???
at	@????
at	@?????
at	@??????

az	##@@###

ba	[AEJKMOT]##[AEJKMOT]###
ba	[T][A]######
ba	[T][T]######
ba	######[AEJKT]

be	@@@@###
be	#@@@###
be	###@@@
be	@@@###

bg	@@####@@
bg	@####@@

by	####@@#

ch	@@######
ch	@@#####
ch	@@####
ch	@@###
ch	@@##
ch	@@#
ch	[APM]######
ch	[APM]#####
ch	[APM]####
ch	[APM]###
ch	[APM]##
ch	[APM]#

cy	@@@###

cz	#@#####
cz	#@@####

de  @@@@####
de  @@@@###
de  @@@@##
de  @@@@#
de  @@@####
de  @@@###
de  @@@##
de  @@@#
de  @@@@####[HE]
de  @@@@###[HE]
de  @@@@##[HE]
de  @@@####[HE]
de  @@@###[HE]
de  @@@##[HE]
de  @@@#[HE]

dk	@@#####

ee	###@@@

es	####@@@
es	@####@@@

fi	@@@###

fr	@@###@@
fr	###@@@##
fr	####@@##

gb	@@##@@@

ge	@@###@@

gi	[G]####@

gr	@@@####

hr	@@###@@
hr	@@####@@
hr	@@###@
hr	@@####@

hu	@@@###

ie	##[12][CDGLTW]######
ie	##[12][CDGKLMORSTW][DEHKLMNOSWXY]######
ie	##[12][CDGLTW]#####
ie	##[12][CDGKLMORSTW][DEHKLMNOSWXY]#####
ie	##[12][CDGLTW]####
ie	##[12][CDGKLMORSTW][DEHKLMNOSWXY]####
ie	##[12][CDGLTW]###
ie	##[12][CDGKLMORSTW][DEHKLMNOSWXY]###
ie	##[CDGLTW]######
ie	##[CDGKLMORSTW][DEHKLMNOSWXY]######
ie	##[CDGLTW]#####
ie	##[CDGKLMORSTW][DEHKLMNOSWXY]#####
ie	##[CDGLTW]####
ie	##[CDGKLMORSTW][DEHKLMNOSWXY]####
ie	##[CDGLTW]###
ie	##[CDGKLMORSTW][DEHKLMNOSWXY]###

is	@@@##

it	@@###@@

kz	###@@@

li	@@#####
li	@@####
li	@@###

lt	@@@###

lu	####
lu	#####
lu	@@###
lu	@####
lu	@@####

lv	@@####
lv	@@###
lv	@####
lv	@###

mc	????

md	@@@@###
md	[CK]@@###
md	@@@@##
md	[CK]@@##
md	@@@@#
md	[CK]@@#

me	@@@@###

mk	@@####@@
mk  @@###@@

mt	@@@###

nl	@@####
nl	####@@
nl	##@@##
nl	@@##@@
nl	@@@@##
nl	##@@@@
nl	##@@@#
nl	#@@@##
nl	@@###@
nl	@###@@
nl	@@@##@
nl	@##@@@
nl	#@@###
nl	###@@#

no	@@#####
no	#####

pl	@@#####
pl	@@####@
pl	@@###@@
pl	@@#@###
pl	@@#@@##
pl	@@@@###
pl	@@@##@@
pl	@@@#@##
pl	@@@##@#
pl	@@@#@@#
pl	@@@@@##
pl	@@@#####
pl	@@@####@
pl	@@@###@@

pt	@@####
pt	####@@
pt	##@@##

ro	@@##@@@
ro	[B]###@@@
ro	[B]##@@@

rs	@@###@@

ru	@###@@##
ru	@###@@###

se	@@@###

si	@@@@###

sk	@@###@@

sm	@####
sm	@###

tr	##@####
tr	##@#####
tr	##@@###
tr	##@@####
tr	##@@@##

ua	@@####@@

va	[S][C][V]#####
va	[C][V]#####


================================================
FILE: runtime_data/postprocess/gb.patterns
================================================
gb	@@##@@@


================================================
FILE: runtime_data/postprocess/in.patterns
================================================
in	@@##@@####
in	@@##@####
in	@@#@@####
in	@@#@####


================================================
FILE: runtime_data/postprocess/kr.patterns
================================================
kr	##@####

================================================
FILE: runtime_data/postprocess/mx.patterns
================================================
mx	@@@####
mx	@##@@@
mx	@@@###@
mx	@@#####
mx	####@@


================================================
FILE: runtime_data/postprocess/readme.txt
================================================
Each line is a possible lp pattern organized by region/state and then likelihood.

The parser goes through each line and tries to match
@ = any letter
# = any number
? = a skip position (can be anything, but remove it if encountered)
[A-FGZ] is just a single char position with specific letter requirements.  In this example, the regex defines characters ABCDEFGZ


================================================
FILE: runtime_data/postprocess/sg.patterns
================================================
sg	@[A-HJ-NP-Z][A-HJ-NP-Z]####[A-EGHJ-MPR-UX-Z]


================================================
FILE: runtime_data/postprocess/us.patterns
================================================
base		@@@####
base		@@@###
base		###@@@
al		#@@####
al		##@@###
al		#@##@##
al		##@##@#
al		@@#####
al		#####@@
al		#@####@
al		##@###@
al		##@#@#@
ak		@@@###
as		####
az		@@@####
az		###@@@
ar		###@@@
ar		@@@###
ca		#@@@###
ca		#@@@###
ca		#@#####
ca		#####@#
ca		###@@@
co		###@@@
co		@@####
co		@@@###
co		@@@####
ct		#@@@@#
ct		###@@@
ct		#####
ct		######
ct		@###
ct		@@###
ct		@@####
de		######
de		#####
de		####
de		###
dc		@@####
dc		######
fl		@@@@##
fl		####[GH]@
fl		###[H-Y]@@
fl		@###@@
fl		@##@@@
fl		@###@@
fl		@@@@##
fl		####[GH]@
fl		###[H-Y]@@
fl		@###@@
fl		@##@@@
fl		@###@@
ga		@@@####
ga		####@@@
ga		####@@
ga		#####[Q]@
ga		###@@@
gu		@@####
gu		@@@####
gu		@@@###@
hi		[A-HJKNMPR-Z]@@###
id		@######
id		#@#####
id		#@@####
id		#@@@###
id		[A]#####[T]
id		[A]@####[T]
id		#[A]####[T]
id		#[A]@###[T]
id		[BU]####
id		####[BEFGHIJKLMNPRSTUXYZ]
id		##[S][A][S]
id		#@@#[S]
id		[J]@###
id		#####[BCS]
id		###@[E]
id		##@@[E]
id		#####
il		@######
il		#####
il		######
il		@@####
il		@@@###
il		@#####
il		#######
il		####@
il		#####@
in		###@
in		###@@
in		###@@@
in		####
ia		@@@###
ia		###@@@
ia		####@@
ks		###@@@
ks		@@@###
ky		###@@@
la		@@@###
me		####@@
me		###@@
me		##@@
me		###@@@
ms		@@@@@#
ms		@@@###
ms		##[W]##
md		#@@@##
md		#[AB]####
md		@@@###
md		[A]######
md		#####
md		###[AB][A-N][A-MY]
md		[AB][A-E][A-Y]##@
md		@#####
ma		###@@#
ma		#@@###
ma		#@@@##
ma		######
ma		###@@@
ma		####@@
ma		##@@##
mi		@@@####
mi		#@@@##
mn		###@@@
mn		@@@###
mo		@@#@#@
mo		###@@@
mo		#@@##@
mt		######[A]
mt		#####@
mt		####@
ne		#@####
ne		#@@###
ne		##@###
ne		##@@##
nv		###@@@
nv		@#####
nv		@@####
nv		@@@###
nh		######
nh		#######
nh		@@@###
nj		@##@@@
nj		@@@##@
nj		@@###@
nj		@@@####
nm		@@@###
nm		###@@@
nm		@@@###
nm		@@###
nm		@###
ny		@@@####
ny		@@@###
ny		#@@###
ny		@#@###
ny		@###@@
ny		@@###@
nc		@@@####
nd		@@@###
mp		@@@###
oh		@@@####
oh		@@##@@
ok		###@@@
or		###@@@
or		@@@###
pa		@@@####
pr		@@@###
ri		@@###
ri		######
ri		#####
sc		@@@###
sc		####@@
sd		#@@###
sd		##@###
sd		##@@##
sd		##@@@#
tn		###@@@
tx		@@@####
tx		@##@@@
tx		###@@@
tx		@@@###
tx		@@#@###
ut		@###@@
ut		###@#
ut		###@@@
ut		@@@###
vt		@@@###
vt		###@###
vt		##[B]##
vi		@@@###
va		@@@####
va		[J-Z]@@####
va		@@@###
va		@@####
va		####@@
va		#####[JY]
wa		###@@@
wa		@@@####
wa    @#####@
wi		###@@@
wi		@@@###
wv		[1-9DON]@@###
wv		[1-9DON]@####
wy		######
wy		#######
wy		#####
wy		####@
wy		###@@
wy		##@@@
ab		@@@####
ab		@@@###
bc		@@###@
bc		@@####
bc		@@@###
bc		####@@
bc		###@@@
mb		@@@###
nl		@@@###
ns		@@@###
nt		@@@###
nu		[M][L][A]###
nu		@@@###
on		@@@@###
on		@@#####
on		[G][V]@@###
on		@@@###
on		###@@@
pe		@@###
qc		@##@@@
qc		###@###
qc		@@@###
qc		###@@@
sk		###@@@
sk		@@@###
yt		@@@##


================================================
FILE: runtime_data/region/au.xml
================================================
<?xml version="1.0"?>
<opencv_storage>
<cascade>
  <stageType>BOOST</stageType>
  <featureType>LBP</featureType>
  <height>16</height>
  <width>44</width>
  <stageParams>
    <boostType>GAB</boostType>
    <minHitRate>9.9500000476837158e-01</minHitRate>
    <maxFalseAlarm>4.4999998807907104e-01</maxFalseAlarm>
    <weightTrimRate>9.4999999999999996e-01</weightTrimRate>
    <maxDepth>1</maxDepth>
    <maxWeakCount>100</maxWeakCount></stageParams>
  <featureParams>
    <maxCatCount>256</maxCatCount>
    <featSize>1</featSize></featureParams>
  <stageNum>12</stageNum>
  <stages>
    <!-- stage 0 -->
    <_>
      <maxWeakCount>3</maxWeakCount>
      <stageThreshold>-8.9822268486022949e-01</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 49 -611788592 -573485032 -117253679 1594429461
            -1971287878 -22527862 -1979021157 -1626733427</internalNodes>
          <leafValues>
            -7.5738126039505005e-01 7.0481771230697632e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 67 -6294750 -244874989 -2130526208 1938772839
            -148114893 268845060 855894827 1937767359</internalNodes>
          <leafValues>
            -8.3813470602035522e-01 5.8474522829055786e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 11 -1677699056 -36618160 403725789 1595490577
            -1207940968 -7794569 -1911899905 -1154826022</internalNodes>
          <leafValues>
            -6.8870306015014648e-01 6.9729328155517578e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 1 -->
    <_>
      <maxWeakCount>5</maxWeakCount>
      <stageThreshold>-1.1421134471893311e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 57 -1119506 -708121466 -612065092 -743202 -1193508626
            -23197524 -2118161 -2098177</internalNodes>
          <leafValues>
            -7.4267381429672241e-01 5.3053784370422363e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 7 -1677572080 -1074181040 506615293 1597720656
            -1640363268 -1077966123 436928508 -1088695875</internalNodes>
          <leafValues>
            -7.4100035429000854e-01 4.8635581135749817e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 23 -84414770 583066006 -931127296 575594756 54857728
            23068739 1263612160 -134220801</internalNodes>
          <leafValues>
            -6.7841631174087524e-01 5.1256632804870605e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 44 -787854184 -573318064 789683645 488446228
            -1155351302 -2439010 -1375170676 -552942435</internalNodes>
          <leafValues>
            -6.5471035242080688e-01 5.3409981727600098e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 53 -800595898 -621366522 -620510633 -749743337
            -1034952182 -928062974 6801775 1074262595</internalNodes>
          <leafValues>
            -7.0143872499465942e-01 4.8587721586227417e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 2 -->
    <_>
      <maxWeakCount>5</maxWeakCount>
      <stageThreshold>-9.6150821447372437e-01</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 40 -541371172 -589667 1602442749 -43619 -124991250
            2008760573 -123154482 -72627255</internalNodes>
          <leafValues>
            -6.7388784885406494e-01 5.1606619358062744e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 8 -72646400 -80015225 394858760 -14727777 -1145332839
            -1145335621 992677307 -1077936129</internalNodes>
          <leafValues>
            -6.5934449434280396e-01 4.8057270050048828e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 41 -1060918 -12000442 453118984 -549920786 1542418820
            352678917 1610051308 -2098177</internalNodes>
          <leafValues>
            -6.0796922445297241e-01 5.1345926523208618e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 34 -1749417744 1364332732 1493720573 1595610484
            -1700261638 1970278583 1040904142 -74943796</internalNodes>
          <leafValues>
            -6.7741453647613525e-01 4.4649848341941833e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 24 -1089741678 -6597552 1090668753 -1626320880
            -548872518 -5633400 184583099 -636825123</internalNodes>
          <leafValues>
            -5.6575518846511841e-01 5.3567945957183838e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 3 -->
    <_>
      <maxWeakCount>6</maxWeakCount>
      <stageThreshold>-1.7560020685195923e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 22 -167773201 -2360353 -541076993 -10289 -251920405
            1082327050 -529793297 1083171531</internalNodes>
          <leafValues>
            -6.7891544103622437e-01 4.0690261125564575e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 76 -2 998962142 -1148940788 1070267870 2035936504
            958419688 1975383548 2147483647</internalNodes>
          <leafValues>
            -6.8827730417251587e-01 4.0660688281059265e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 16 4276 1431657684 1035952127 1571231228 -1733272834
            -15402508 446622687 -1163383595</internalNodes>
          <leafValues>
            -7.0099341869354248e-01 4.0688174962997437e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 61 1195896586 2145385823 -2129967732 1339936015
            1338232714 1627381991 -82321841 2144329695</internalNodes>
          <leafValues>
            -6.2260180711746216e-01 4.3509158492088318e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 26 -285737074 580841251 -2006785528 584047371
            1502441728 577284943 2135905038 1677721599</internalNodes>
          <leafValues>
            -6.5793162584304810e-01 3.7901020050048828e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 52 -676619022 -573206503 453763057 487281681 -276129030
            -5726556 -1970630945 -1742028395</internalNodes>
          <leafValues>
            -5.5209952592849731e-01 4.6138554811477661e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 4 -->
    <_>
      <maxWeakCount>7</maxWeakCount>
      <stageThreshold>-1.2151374816894531e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 66 -85 -211815617 -268444926 -739289265 -134221270
            1082119455 -208666710 1476395007</internalNodes>
          <leafValues>
            -7.2162574529647827e-01 3.6626848578453064e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 1 -286265718 -999299098 -391593396 -523769430
            -404792576 1157058627 -244452604 -167772161</internalNodes>
          <leafValues>
            -6.0357534885406494e-01 4.5322033762931824e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 60 -255793462 -70257709 -254351630 -70320397 1909288463
            -45121 -721424433 -754984085</internalNodes>
          <leafValues>
            -5.4790908098220825e-01 4.7318786382675171e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 71 -33554436 -1812277562 2119891740 334164958
            2147349968 287338979 1936016656 2139095039</internalNodes>
          <leafValues>
            -7.0448672771453857e-01 3.6576277017593384e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 78 -828176 -604415011 -1717332707 463297429 -361047880
            -623162369 -1433736440 -1163985015</internalNodes>
          <leafValues>
            -5.1334244012832642e-01 5.0787007808685303e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 83 -68161830 799997919 -1356582888 -1113522566
            734945480 364392665 1400706424 -1</internalNodes>
          <leafValues>
            -5.3373581171035767e-01 4.6751043200492859e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 20 -1103673124 -548322284 1074454045 1360249113
            1310589182 1429537920 -1979578680 1932215757</internalNodes>
          <leafValues>
            -6.9125539064407349e-01 3.8719448447227478e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 5 -->
    <_>
      <maxWeakCount>7</maxWeakCount>
      <stageThreshold>-1.3708573579788208e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 70 -524289 1431323989 -39460867 1437687765 -45228340
            990927545 -270731060 -1</internalNodes>
          <leafValues>
            -5.7995080947875977e-01 4.9767187237739563e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 9 655623184 -10511395 -4259843 -34268773 -540755556
            -1078503171 -604497410 -4583798</internalNodes>
          <leafValues>
            -6.1646574735641479e-01 3.9822673797607422e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 48 -538188118 1608358907 1025101263 1604179967
            -597894689 224255963 1576926959 1574829791</internalNodes>
          <leafValues>
            -6.2925642728805542e-01 3.6492335796356201e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 21 -939276798 -257753089 -489952064 -169349429
            1858071503 -94705729 -213130489 1088938791</internalNodes>
          <leafValues>
            -6.5357398986816406e-01 3.3915162086486816e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 19 -552936270 523391216 -100696577 -543732683 -11891462
            523689429 -6100737 184703099</internalNodes>
          <leafValues>
            -6.0573673248291016e-01 3.5936927795410156e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 28 -422589434 -423691488 -938504690 -490755185
            -318770933 1647010671 1467924480 1132459647</internalNodes>
          <leafValues>
            -6.4206576347351074e-01 3.4757497906684875e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 69 -783944702 -214179085 1931721521 858993458
            -404040966 -17077 1668546218 -11028208</internalNodes>
          <leafValues>
            -5.5039256811141968e-01 3.7237152457237244e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 6 -->
    <_>
      <maxWeakCount>7</maxWeakCount>
      <stageThreshold>-1.1579054594039917e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 13 -4272908 -571236 -1696923651 456132792 -83965188
            -12545 -1363481468 -318769923</internalNodes>
          <leafValues>
            -6.9065040349960327e-01 2.7564468979835510e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 31 -581968114 -540299265 -1727069430 2142976778
            -287318193 -1055025 -22282321 -32965</internalNodes>
          <leafValues>
            -5.8724719285964966e-01 3.7282180786132812e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 50 -6038341 -640165672 463208439 421485845 -269825286
            -33620748 -1708470305 -620048939</internalNodes>
          <leafValues>
            -4.1684821248054504e-01 5.3800636529922485e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 3 -6430 -286266012 -287322898 -319895826 1606896711
            1948587903 1467434225 -184549377</internalNodes>
          <leafValues>
            -5.9499925374984741e-01 3.7343171238899231e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 75 -1071192570 1138221878 -46664013 2005367587
            -352330769 -97783513 -905969969 1075299911</internalNodes>
          <leafValues>
            -6.4896816015243530e-01 3.2506215572357178e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 85 -7340034 -1549099046 843056536 1000387532 1341479372
            730346793 2110204140 -68421681</internalNodes>
          <leafValues>
            -4.5823952555656433e-01 4.5764750242233276e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 46 -402653794 -782245121 314947160 398323455 1436373236
            293425369 372627928 1946156991</internalNodes>
          <leafValues>
            -5.9321647882461548e-01 3.5472938418388367e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 7 -->
    <_>
      <maxWeakCount>8</maxWeakCount>
      <stageThreshold>-1.6782619953155518e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 10 873553151 2004180213 -2228225 -58913 -1125475105
            -983116 -1090846721 -1157632065</internalNodes>
          <leafValues>
            -5.4920834302902222e-01 4.2633989453315735e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 80 -681844738 1056975922 561003192 2146500470 214478076
            202376324 767075576 -131073</internalNodes>
          <leafValues>
            -5.7025521993637085e-01 3.7582042813301086e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 55 -125150774 -8730 -545267713 -10494133 720038827
            1610612715 -270345237 -344997758</internalNodes>
          <leafValues>
            -5.1887893676757812e-01 4.0973290801048279e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 38 -584001028 489741808 -42207235 503252372 -1657349640
            -1723926019 -1680196609 153796781</internalNodes>
          <leafValues>
            -6.3692367076873779e-01 3.1177058815956116e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 82 -286265654 547679875 -1400445950 -1059936821
            930072066 1180585997 -258477310 1941960687</internalNodes>
          <leafValues>
            -6.5258508920669556e-01 3.1520101428031921e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 30 -542221264 -64290 -115418115 -542109068 -1884628452
            -6644857 782818812 -1205688280</internalNodes>
          <leafValues>
            -5.6938469409942627e-01 3.5461488366127014e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 18 -15734801 1032825246 -687726584 297774843
            -1498729557 66534254 1715609562 1946157055</internalNodes>
          <leafValues>
            -5.5432200431823730e-01 3.2321223616600037e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 35 -1065096062 -84943881 -570294785 -1045448925
            -353914625 -128196145 -273751377 -2113150457</internalNodes>
          <leafValues>
            -4.6718406677246094e-01 4.1839256882667542e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 8 -->
    <_>
      <maxWeakCount>9</maxWeakCount>
      <stageThreshold>-1.8586442470550537e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 62 -1039938489 -36489 -348127361 -513 -88084689
            -3411553 -285475073 -230950913</internalNodes>
          <leafValues>
            -5.2433896064758301e-01 4.3869677186012268e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 47 -68160017 -67112461 -269750015 -1576601 -69209890
            289042673 -271590433 2012741631</internalNodes>
          <leafValues>
            -5.0064951181411743e-01 4.2426300048828125e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 74 -1 2003850580 -1108279300 389044597 2136800716
            1027633524 517520350 -4194305</internalNodes>
          <leafValues>
            -4.2682534456253052e-01 4.7421252727508545e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 58 -1213068112 -536915939 -1080057863 1595874817
            -433959436 -5054980 -341144337 -550875515</internalNodes>
          <leafValues>
            -5.4924941062927246e-01 3.6996433138847351e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 17 -570425850 991534916 855818035 2063621960 1785546766
            1062771928 -32834882 -11535521</internalNodes>
          <leafValues>
            -5.3338468074798584e-01 3.7742823362350464e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 65 1755451637 -1953609758 -4228609 -37791274
            -1466384897 -1348535297 -1161896257 -1549632026</internalNodes>
          <leafValues>
            -4.7544640302658081e-01 3.8450938463211060e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 6 -232593430 -1307839544 -1343531197 1094448996
            -90448405 -299175006 -348390929 1076097603</internalNodes>
          <leafValues>
            -6.0394722223281860e-01 3.0843117833137512e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 29 -8394754 1073531900 196423260 755082090 2111333900
            2034519740 836572127 -9</internalNodes>
          <leafValues>
            -4.8120620846748352e-01 3.7419813871383667e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 25 -137374758 319557367 -568726642 64821167 861795555
            14684406 -1354713171 464377851</internalNodes>
          <leafValues>
            -5.6392318010330200e-01 3.4628465771675110e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 9 -->
    <_>
      <maxWeakCount>9</maxWeakCount>
      <stageThreshold>-1.1646637916564941e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 14 -1 -76292 -857749057 -593901347 -290799697 -1090401
            -1999699413 -1963987201</internalNodes>
          <leafValues>
            -5.4174631834030151e-01 3.7251868844032288e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 64 -8705 -537207489 -4239937 -541254337 1531993580
            -4956764 -269291571 -12884219</internalNodes>
          <leafValues>
            -3.9605358242988586e-01 5.0030308961868286e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 59 -1073495033 -76581641 -171966465 -8396801 -117455345
            -67108865 -1062207745 -803473873</internalNodes>
          <leafValues>
            -3.6505150794982910e-01 4.9429062008857727e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 73 -514 1071182842 -269553700 196673532 -539004706
            942702557 2138922334 2147483647</internalNodes>
          <leafValues>
            -5.8632147312164307e-01 2.8380626440048218e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 42 -168165409 956350580 1433794553 335084340
            -1997487890 134781876 -841695318 226286586</internalNodes>
          <leafValues>
            -5.1184880733489990e-01 3.7335854768753052e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 36 -8417330 -201338881 -1615940728 254748635 -54790209
            348076479 638561215 2013248319</internalNodes>
          <leafValues>
            -5.6350380182266235e-01 2.8398692607879639e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 81 -587260784 -576749575 -1669606123 453170521
            -83953252 -623125537 -90477824 -1706049971</internalNodes>
          <leafValues>
            -4.9625855684280396e-01 3.4869700670242310e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 84 -9938 696398318 1070208736 967486022 670776829
            434662137 872353116 1811674871</internalNodes>
          <leafValues>
            -5.8320373296737671e-01 2.6583945751190186e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 5 -363141622 -239875254 -1432323398 464676619
            -656156600 -655048034 -391188993 -84412465</internalNodes>
          <leafValues>
            -5.2150756120681763e-01 3.4631469845771790e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 10 -->
    <_>
      <maxWeakCount>10</maxWeakCount>
      <stageThreshold>-1.2043844461441040e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 43 -571488022 -570436133 -281030916 -583199483
            -641536514 -1615143425 -116326401 -550844145</internalNodes>
          <leafValues>
            -6.6361653804779053e-01 1.9604672491550446e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 12 -262145 -705568772 -175415297 -178392083 -1437799681
            -1258629332 1000844015 21979147</internalNodes>
          <leafValues>
            -5.6519657373428345e-01 3.0456781387329102e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 51 -1342172400 -191617 -643 -36603918 -91291650
            -17053217 -1577783044 -1260963209</internalNodes>
          <leafValues>
            -5.8604788780212402e-01 2.9618346691131592e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 54 -806359297 -4121 -1513370873 736620259 196577104
            -405277098 -34120841 -1048973</internalNodes>
          <leafValues>
            -3.6587005853652954e-01 4.7734427452087402e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 63 1967936212 -71692 -14222346 -1345844538 -11780
            -1077960993 -1615157796 791500233</internalNodes>
          <leafValues>
            -6.5954190492630005e-01 2.5595691800117493e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 68 -531634558 865068942 -214445902 2138308467 81786719
            -5247442 -1057227777 1080554471</internalNodes>
          <leafValues>
            -5.7511496543884277e-01 2.8192704916000366e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 4 -1042088222 -285753242 2012049383 -245161914
            -314395669 -213939586 621805471 1114071675</internalNodes>
          <leafValues>
            -6.1220860481262207e-01 2.3731665313243866e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 56 -1443145485 1988102498 534740469 1327645410
            -342172998 -1145315953 2064154367 -232077321</internalNodes>
          <leafValues>
            -3.7831282615661621e-01 4.3669494986534119e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 32 -10553354 1878801516 166209754 799550440 1033640828
            757621993 206579948 1610612567</internalNodes>
          <leafValues>
            -5.7260602712631226e-01 2.6549491286277771e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 2 -335546834 -552104052 -158802433 1929566028 180870239
            1601293336 -366221073 -2892043</internalNodes>
          <leafValues>
            -4.6849688887596130e-01 3.5707718133926392e-01</leafValues></_></weakClassifiers></_>
    <!-- stage 11 -->
    <_>
      <maxWeakCount>10</maxWeakCount>
      <stageThreshold>-1.7368365526199341e+00</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 72 -113 -817 -140552306 -3145873 1732237303 1981281703
            -134750257 -134217729</internalNodes>
          <leafValues>
            -5.4474252462387085e-01 3.1632161140441895e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 39 -72655696 2013224444 -1111523331 1606092792
            -341115654 2146036667 -1129779250 -4456739</internalNodes>
          <leafValues>
            -5.3460186719894409e-01 3.2928371429443359e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 0 -2097169 -825229530 -269562298 -831523257 -301990081
            1082130175 1937224823 -134219785</internalNodes>
          <leafValues>
            -4.0298810601234436e-01 4.2096018791198730e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 77 -30158608 -571467276 -1168352803 429370257
            -631056196 -16855555 719990476 -1968224636</internalNodes>
          <leafValues>
            -4.8689436912536621e-01 3.4727278351783752e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 33 1433925623 354472528 1433785845 87126399 -570561537
            186816912 1572383037 229432799</internalNodes>
          <leafValues>
            -5.1943379640579224e-01 3.3485844731330872e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 27 -1112651588 -1109424130 1597931517 825755554 -90440
            -7087629 -553719032 -659554565</internalNodes>
          <leafValues>
            -5.0690883398056030e-01 3.0206778645515442e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 45 -537308019 401852740 2137390506 1474785670
            1724184559 1733253107 -119477265 1942486011</internalNodes>
          <leafValues>
            -4.7200435400009155e-01 3.4845206141471863e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 15 -827403230 1380898820 -1171928688 1594721160
            1794931804 142497885 -626327570 -88430851</internalNodes>
          <leafValues>
            -6.2450623512268066e-01 2.4470937252044678e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 37 1998842498 -639640488 1392994901 1600123220
            -771092838 -51660481 176868063 -636760815</internalNodes>
          <leafValues>
            -4.9276769161224365e-01 3.0157554149627686e-01</leafValues></_>
        <_>
          <internalNodes>
            0 -1 79 -1060970492 -201327841 -1883509605 -2049 -941883442
            -90457258 1188654255 1096937603</internalNodes>
          <leafValues>
            -6.1707288026809692e-01 2.6061785221099854e-01</leafValues></_></weakClassifiers></_></stages>
  <features>
    <_>
      <rect>
        0 2 1 1</rect></_>
    <_>
      <rect>
        0 2 1 3</rect></_>
    <_>
      <rect>
        0 3 14 1</rect></_>
    <_>
      <rect>
        0 5 2 3</rect></_>
    <_>
      <rect>
        1 0 2 2</rect></_>
    <_>
      <rect>
        1 8 12 1</rect></_>
    <_>
      <rect>
        2 0 2 3</rect></_>
    <_>
      <rect>
        2 0 9 1</rect></_>
    <_>
      <rect>
        2 7 14 2</rect></_>
    <_>
      <rect>
        3 0 3 1</rect></_>
    <_>
      <rect>
        3 0 5 1</rect></_>
    <_>
      <rect>
        3 0 9 1</rect></_>
    <_>
      <rect>
        3 1 5 2</rect></_>
    <_>
      <rect>
        3 1 9 1</rect></_>
    <_>
      <rect>
        3 1 9 2</rect></_>
    <_>
      <rect>
        3 4 11 1</rect></_>
    <_>
      <rect>
        4 0 5 1</rect></_>
    <_>
      <rect>
        4 3 13 1</rect></_>
    <_>
      <rect>
        4 6 2 2</rect></_>
    <_>
      <rect>
        4 13 7 1</rect></_>
    <_>
      <rect>
        5 1 11 1</rect></_>
    <_>
      <rect>
        6 0 1 3</rect></_>
    <_>
      <rect>
        6 0 3 3</rect></_>
    <_>
      <rect>
        6 6 1 3</rect></_>
    <_>
      <rect>
        6 13 10 1</rect></_>
    <_>
      <rect>
        7 1 3 5</rect></_>
    <_>
      <rect>
        7 3 1 4</rect></_>
    <_>
      <rect>
        8 1 6 1</rect></_>
    <_>
      <rect>
        8 2 1 3</rect></_>
    <_>
      <rect>
        8 7 1 3</rect></_>
    <_>
      <rect>
        9 0 6 1</rect></_>
    <_>
      <rect>
        9 2 11 4</rect></_>
    <_>
      <rect>
        9 7 1 3</rect></_>
    <_>
      <rect>
        9 10 5 2</rect></_>
    <_>
      <rect>
        10 0 8 1</rect></_>
    <_>
      <rect>
        11 0 1 2</rect></_>
    <_>
      <rect>
        11 2 3 4</rect></_>
    <_>
      <rect>
        11 12 10 1</rect></_>
    <_>
      <rect>
        11 13 5 1</rect></_>
    <_>
      <rect>
        12 0 7 1</rect></_>
    <_>
      <rect>
        12 1 7 1</rect></_>
    <_>
      <rect>
        12 4 2 4</rect></_>
    <_>
      <rect>
        12 10 4 2</rect></_>
    <_>
      <rect>
        12 12 7 1</rect></_>
    <_>
      <rect>
        12 13 8 1</rect></_>
    <_>
      <rect>
        13 2 6 1</rect></_>
    <_>
      <rect>
        13 3 3 4</rect></_>
    <_>
      <rect>
        13 4 6 3</rect></_>
    <_>
      <rect>
        13 6 6 3</rect></_>
    <_>
      <rect>
        13 13 8 1</rect></_>
    <_>
      <rect>
        13 13 9 1</rect></_>
    <_>
      <rect>
        14 0 2 1</rect></_>
    <_>
      <rect>
        14 13 8 1</rect></_>
    <_>
      <rect>
        15 0 2 3</rect></_>
    <_>
      <rect>
        15 3 4 3</rect></_>
    <_>
      <rect>
        16 0 4 2</rect></_>
    <_>
      <rect>
        16 0 8 1</rect></_>
    <_>
      <rect>
        17 7 3 3</rect></_>
    <_>
      <rect>
        17 13 6 1</rect></_>
    <_>
      <rect>
        18 0 1 2</rect></_>
    <_>
      <rect>
        18 0 2 3</rect></_>
    <_>
      <rect>
        18 1 3 4</rect></_>
    <_>
      <rect>
        19 0 1 2</rect></_>
    <_>
      <rect>
        20 1 1 5</rect></_>
    <_>
      <rect>
        20 13 4 1</rect></_>
    <_>
      <rect>
        21 0 3 1</rect></_>
    <_>
      <rect>
        21 3 3 3</rect></_>
    <_>
      <rect>
        21 4 3 3</rect></_>
    <_>
      <rect>
        23 0 2 3</rect></_>
    <_>
      <rect>
        23 0 4 3</rect></_>
    <_>
      <rect>
        23 10 2 2</rect></_>
    <_>
      <rect>
        24 4 2 4</rect></_>
    <_>
      <rect>
        24 6 3 2</rect></_>
    <_>
      <rect>
        24 7 2 3</rect></_>
    <_>
      <rect>
        24 10 2 2</rect></_>
    <_>
      <rect>
        25 0 2 3</rect></_>
    <_>
      <rect>
        26 7 2 3</rect></_>
    <_>
      <rect>
        26 13 5 1</rect></_>
    <_>
      <rect>
        26 13 6 1</rect></_>
    <_>
      <rect>
        27 0 2 3</rect></_>
    <_>
      <rect>
        27 10 2 2</rect></_>
    <_>
      <rect>
        29 13 5 1</rect></_>
    <_>
      <rect>
        30 5 1 2</rect></_>
    <_>
      <rect>
        30 7 1 3</rect></_>
    <_>
      <rect>
        34 7 1 3</rect></_>
    <_>
      <rect>
        35 7 1 3</rect></_></features></cascade>
</opencv_storage>


================================================
FILE: runtime_data/region/br.xml
================================================
<?xml version="1.0"?>
<opencv_storage>
<cascade>
  <stageType>BOOST</stageType>
  <featureType>LBP</featureType>
  <height>13</height>
  <width>40</width>
  <stageParams>
    <boostType>GAB</boostType>
    <minHitRate>9.9500000476837158e-001</minHitRate>
    <maxFalseAlarm>4.4999998807907104e-001</maxFalseAlarm>
    <weightTrimRate>9.4999999999999996e-001</weightTrimRate>
    <maxDepth>1</maxDepth>
    <maxWeakCount>100</maxWeakCount></stageParams>
  <featureParams>
    <maxCatCount>256</maxCatCount>
    <featSize>1</featSize></featureParams>
  <stageNum>18</stageNum>
  <stages>
    <!-- stage 0 -->
    <_>
      <maxWeakCount>5</maxWeakCount>
      <stageThreshold>-2.2059321403503418e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 85 1561351388 -33728004 -537332225 -2158083 -1665606402
            -4261126 -1197948929 -1079371380</internalNodes>
          <leafValues>
            -8.2558047771453857e-001 6.4892250299453735e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 28 352326908 -4710940 -1124549123 -1076226996
            -1095180802 -500483 -1145372673 -1146483474</internalNodes>
          <leafValues>
            -7.1161091327667236e-001 5.5507826805114746e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 98 -167907442 -235088961 -1355896056 -135296089
            -174864474 1880437965 -150302833 -138416145</internalNodes>
          <leafValues>
            -5.3800177574157715e-001 6.7141634225845337e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 104 268439888 -36363 -8929293 -33606147 -1229389829
            -99457 -1078018305 -1078459992</internalNodes>
          <leafValues>
            -6.3097971677780151e-001 5.5359894037246704e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 5 -422582750 720301799 -219155866 -1494224282
            1173844807 1157620175 1977996615 1206117703</internalNodes>
          <leafValues>
            -7.0917737483978271e-001 4.5936250686645508e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 1 -->
    <_>
      <maxWeakCount>6</maxWeakCount>
      <stageThreshold>-1.4644955396652222e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 62 1433460221 -34244611 -2228225 -163843 -196609
            -475137 -196609 -1078326017</internalNodes>
          <leafValues>
            -7.1215671300888062e-001 6.8203002214431763e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 96 286266869 -174593 -1 -188417 -1092813057 -131073
            -1145372673 -1078448707</internalNodes>
          <leafValues>
            -5.9869700670242310e-001 6.2674057483673096e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 16 -285217042 -420492305 -286331358 -285282326
            2147448679 1190622199 -2239 -134217729</internalNodes>
          <leafValues>
            -5.8786678314208984e-001 5.7215690612792969e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 115 2108710352 -426529 -2490881 -2155075 -1078436612
            -268566531 -1611072513 -1078457928</internalNodes>
          <leafValues>
            -5.9803569316864014e-001 5.3530043363571167e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 135 -529537534 -1062210289 -488375578 -490738757
            -85202330 -616569597 -228076761 1076356515</internalNodes>
          <leafValues>
            -6.1870849132537842e-001 4.6477171778678894e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 34 201326796 -6270248 608447869 936445547 -802109188
            -53425956 -90644481 -553123441</internalNodes>
          <leafValues>
            -5.5705696344375610e-001 5.1763296127319336e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 2 -->
    <_>
      <maxWeakCount>6</maxWeakCount>
      <stageThreshold>-1.5516430139541626e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 100 -1048593 -100663297 -810569841 -536870929 -524289
            -239077889 -2097201 -1</internalNodes>
          <leafValues>
            -6.5842545032501221e-001 7.5478929281234741e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 27 -571417092 -237571 -459265 -1076347716 -1108803585
            -206339 -1141317633 -1078326086</internalNodes>
          <leafValues>
            -5.9410470724105835e-001 5.8537662029266357e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 181 -246 -391127314 -30410240 -1023410257 -37748973
            16252399 -256 -134217729</internalNodes>
          <leafValues>
            -5.4639428853988647e-001 6.0828882455825806e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 125 268440784 -164364 -3 -4227331 -1079328773 -71434242
            -1095303169 -1147660232</internalNodes>
          <leafValues>
            -6.3400131464004517e-001 4.2709890007972717e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 10 -420483546 -487658770 -291508702 -865145654
            1392473157 854979431 2146957172 -219154457</internalNodes>
          <leafValues>
            -5.6688904762268066e-001 5.2953493595123291e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 81 766019832 -12821008 1069201919 2142910973
            -1346699525 -1075175559 -1074610193 715787336</internalNodes>
          <leafValues>
            -6.8458378314971924e-001 3.8707160949707031e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 3 -->
    <_>
      <maxWeakCount>6</maxWeakCount>
      <stageThreshold>-1.4123144149780273e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 113 -1048661 -754990401 1258621185 -806368625 -3934301
            1883762871 -83373301 -1</internalNodes>
          <leafValues>
            -7.1403747797012329e-001 6.2246745824813843e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 174 -487595262 -1026893077 -838025174 -491786354
            -478153978 34361967 -362025470 -1029963797</internalNodes>
          <leafValues>
            -6.1794960498809814e-001 5.5281740427017212e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 128 1498471932 1574248413 -143363 -33539 -1921458756
            -1078190083 -21053512 -1079296256</internalNodes>
          <leafValues>
            -5.1443111896514893e-001 5.5010509490966797e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 91 -276828658 -493885850 -957701632 -252974354
            -135314430 24343879 -214968830 -205522945</internalNodes>
          <leafValues>
            -4.8749122023582458e-001 5.7354146242141724e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 83 268439704 -38334246 2010460639 -541115685
            -1165837585 -1080047400 747680443 436797608</internalNodes>
          <leafValues>
            -5.9777128696441650e-001 4.3888664245605469e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 149 -1033387518 -516972413 1083175434 -152317497
            -525932885 1852809762 -502881233 1073997323</internalNodes>
          <leafValues>
            -5.4353684186935425e-001 4.8270839452743530e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 4 -->
    <_>
      <maxWeakCount>8</maxWeakCount>
      <stageThreshold>-2.0970504283905029e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 100 -1 -71304193 -15741041 -1048577 -5 -235145217
            -545259617 -1</internalNodes>
          <leafValues>
            -6.0631048679351807e-001 7.2640037536621094e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 182 -5243222 -2036154710 -810419072 -1347485790
            -4457040 128253886 -4048 -1048581</internalNodes>
          <leafValues>
            -5.1800543069839478e-001 5.6827902793884277e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 68 452989072 -541254319 487330585 1065164701
            -1747411206 -1074525700 456661951 530128184</internalNodes>
          <leafValues>
            -6.0343402624130249e-001 4.6828967332839966e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 42 -521935358 15192806 -283519958 -1695547698
            -1034950969 -2135047505 -999820989 -1023948985</internalNodes>
          <leafValues>
            -5.7293874025344849e-001 4.5507067441940308e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 57 1102885560 1572117968 420423995 1608190903 451865339
            -1672431883 302713771 524222473</internalNodes>
          <leafValues>
            -4.8377829790115356e-001 5.2814304828643799e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 89 -520101374 -143932414 -416306389 -210508026
            -428345878 1802363906 -671090769 -1034427901</internalNodes>
          <leafValues>
            -4.4041708111763000e-001 5.5660778284072876e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 122 -1653287463 -131075 1442594813 -35709443
            -1078416135 -1080050451 -558301185 -1078326987</internalNodes>
          <leafValues>
            -4.2181575298309326e-001 5.8730918169021606e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 167 -291314688 -460397696 -292673024 -488053018
            -674766528 1180517 -214699518 -205525009</internalNodes>
          <leafValues>
            -5.3458100557327271e-001 4.6336498856544495e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 5 -->
    <_>
      <maxWeakCount>8</maxWeakCount>
      <stageThreshold>-1.4894635677337646e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 59 -784271363 -2171683 -6848513 -6353009 -215942146
            -1528084 -1416982593 -1358297078</internalNodes>
          <leafValues>
            -6.4323192834854126e-001 5.5662912130355835e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 152 -6 -1146568712 -1619482440 -1088931592 -4653060
            822088156 1073004476 -4194305</internalNodes>
          <leafValues>
            -5.0202572345733643e-001 5.4142653942108154e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 147 75497968 -194691 -133121 -53539 -1078280449 -1
            -275058689 -1346690897</internalNodes>
          <leafValues>
            -5.0791001319885254e-001 5.0952428579330444e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 17 -332150 -17498377 -824539510 -83956002 1399937796
            1090839597 -145663988 -201326593</internalNodes>
          <leafValues>
            -5.0033283233642578e-001 4.8059618473052979e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 55 488639640 -576902168 492572159 -1111670851
            -547865091 -4710404 800604063 -1358414403</internalNodes>
          <leafValues>
            -6.0949635505676270e-001 3.9852270483970642e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 158 -940838878 -1028469592 -1668767744 11453452
            1694553360 3183363 1259635074 2009071375</internalNodes>
          <leafValues>
            -6.0897284746170044e-001 3.6162802577018738e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 47 -352656442 82488494 -1460764502 552378594 -134774956
            562055942 -67232844 1996487615</internalNodes>
          <leafValues>
            -6.1084610223770142e-001 3.3747026324272156e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 51 491075519 -2245665 -2017182753 -10641593 -1177752129
            -2818356 -456003909 -108156352</internalNodes>
          <leafValues>
            -4.0351900458335876e-001 5.1473224163055420e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 6 -->
    <_>
      <maxWeakCount>8</maxWeakCount>
      <stageThreshold>-1.6725406646728516e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 134 -521673209 -201328641 -124000257 -136314913
            -17045505 -85204509 -201327617 -489951505</internalNodes>
          <leafValues>
            -6.3230335712432861e-001 5.1736354827880859e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 170 -84 1057292204 -4508256 1059717030 -68 705458860
            -1540 1069547519</internalNodes>
          <leafValues>
            -6.6297966241836548e-001 3.4861809015274048e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 75 -717422595 2113723645 -570621953 -172675 -67305473
            -71499847 -1073775617 -1079374599</internalNodes>
          <leafValues>
            -4.8819395899772644e-001 4.7195026278495789e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 3 -957356510 -420548949 -288634206 -286331360
            1191142919 1104666401 1392506179 -455084281</internalNodes>
          <leafValues>
            -5.5349969863891602e-001 4.1086035966873169e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 93 -22018 -1556484 1073486008 1004060668 368846300
            417881853 535564524 -17</internalNodes>
          <leafValues>
            -4.1352465748786926e-001 4.8219370841979980e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 151 -151001342 -1067194846 -492092926 -741347377
            -222366013 7763807 -201984331 -201326593</internalNodes>
          <leafValues>
            -4.0152969956398010e-001 4.5363888144493103e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 133 355734748 -13353988 -1074249735 2147048829
            -1111998984 -16946185 -1078452225 178261260</internalNodes>
          <leafValues>
            -7.2032541036605835e-001 3.1326821446418762e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 43 -16777794 283163134 -950237954 284752862 1744662493
            1049717736 -2151720 2113927167</internalNodes>
          <leafValues>
            -5.4231750965118408e-001 3.3973744511604309e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 7 -->
    <_>
      <maxWeakCount>8</maxWeakCount>
      <stageThreshold>-1.4416458606719971e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 118 -981997773 -524297 -4194305 -786433 -524289 -524289
            -524293 -76286189</internalNodes>
          <leafValues>
            -6.3837432861328125e-001 5.8197933435440063e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 131 -16385 1073545215 1073495548 -1073824018 2080190461
            519863805 1065163772 -1</internalNodes>
          <leafValues>
            -4.4101983308792114e-001 5.5826210975646973e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 26 -823242754 -1143016453 -1098973441 1073233584
            1333022207 -67585 -66049 -18710570</internalNodes>
          <leafValues>
            -5.0551694631576538e-001 4.5312264561653137e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 180 -268439801 15400943 -276902400 -1058021397
            -209715449 1107295229 -252 -134217729</internalNodes>
          <leafValues>
            -5.2299499511718750e-001 3.7318477034568787e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 39 1075052699 -9064767 -1391091777 -44230102 -925040641
            -537067555 -572661761 -582637398</internalNodes>
          <leafValues>
            -3.9277845621109009e-001 5.2537852525711060e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 20 -69634 -1728520194 -16847106 -1159005954 32525212
            1240751612 -4302855 -18808833</internalNodes>
          <leafValues>
            -4.7312712669372559e-001 3.9182522892951965e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 160 -2113602 801914812 -1074517380 1073626616
            1073491964 228358101 1039413756 2147483580</internalNodes>
          <leafValues>
            -5.5665540695190430e-001 3.2366693019866943e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 50 10617856 -139267 -593923 -524289 -335649298 -5123
            -1141453845 -1947238400</internalNodes>
          <leafValues>
            -5.1571136713027954e-001 3.4354647994041443e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 8 -->
    <_>
      <maxWeakCount>10</maxWeakCount>
      <stageThreshold>-1.6534610986709595e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 100 -81 -67108865 -275796209 -67108865 -144705537
            -234883073 -33 -1</internalNodes>
          <leafValues>
            -6.6397964954376221e-001 5.7575756311416626e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 37 1165237758 1072434454 -1073938433 -1078059682
            1568210943 -4424707 -65537 -1431654482</internalNodes>
          <leafValues>
            -6.4136123657226563e-001 3.1682160496711731e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 12 -353374609 -823203866 -328274206 -286331350
            1987540855 1448572277 2004318199 -150997129</internalNodes>
          <leafValues>
            -5.5081850290298462e-001 4.0213811397552490e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 97 -1070612473 -35652161 -139067459 -173158225
            -194515793 -125831781 -302003026 -1060651001</internalNodes>
          <leafValues>
            -3.9085510373115540e-001 4.6990257501602173e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 173 83492869 1610039295 2143289279 -6324227 -2129
            -67637267 -17842433 -1430382533</internalNodes>
          <leafValues>
            -4.4559049606323242e-001 4.3264123797416687e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 183 -100667477 615514111 -805310720 -860889169
            -671088889 33554159 -3840 -137363457</internalNodes>
          <leafValues>
            -4.5740145444869995e-001 3.7074878811836243e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 108 212 -8429699 -1073741825 -57345 -4444673 -74241
            -1141572097 958401980</internalNodes>
          <leafValues>
            -7.0837682485580444e-001 2.6604530215263367e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 73 -16386 -1073951300 939278076 1073233916 1742485960
            536640876 2139893756 -65538</internalNodes>
          <leafValues>
            -4.2629688978195190e-001 3.6537826061248779e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 56 1499282399 -2867241 730413917 1609867231 -574032897
            -11214916 -544419891 -591338622</internalNodes>
          <leafValues>
            -3.2917565107345581e-001 4.6441465616226196e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 42 -1058543837 552599279 -301990023 -1736446177
            -941637643 -1191182689 -1546275036 -260577417</internalNodes>
          <leafValues>
            -4.1120386123657227e-001 3.7657707929611206e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 9 -->
    <_>
      <maxWeakCount>11</maxWeakCount>
      <stageThreshold>-2.0716788768768311e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 113 -2097153 -220204289 -821047537 -806891569 -67635205
            -788795137 -145754353 -1</internalNodes>
          <leafValues>
            -6.3591754436492920e-001 5.3186190128326416e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 1 -1058610185 -1025 -176193537 -136843281 -141033473
            -2113 -136314881 -403712137</internalNodes>
          <leafValues>
            -3.6152586340904236e-001 5.8020901679992676e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 140 1433666044 -537053703 1605910399 -165377 427317503
            -255047 -38469633 -1346888696</internalNodes>
          <leafValues>
            -5.8524936437606812e-001 3.0378106236457825e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 139 -673206338 448573438 -738447364 -1075310648
            536363004 485244924 1073557244 2147483647</internalNodes>
          <leafValues>
            -5.1090979576110840e-001 3.2787251472473145e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 86 1080287234 -172623034 -799017549 -178788505
            -1072959828 -925045114 -1041505873 -1057495410</internalNodes>
          <leafValues>
            -4.2160958051681519e-001 3.9181047677993774e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 179 -335548634 15716327 -17039840 -2131046662
            1878523138 1089994737 -269486336 -520622353</internalNodes>
          <leafValues>
            -5.4490488767623901e-001 2.7775236964225769e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 153 -1970797296 1509847677 -1524695425 -1075376705
            2145001471 -33793 -1682526723 -1440218325</internalNodes>
          <leafValues>
            -5.1685762405395508e-001 2.9982602596282959e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 54 -69634 1035777535 -1208172546 872200958 1862115324
            435705840 -1411563524 -69633</internalNodes>
          <leafValues>
            -4.0428158640861511e-001 3.6875179409980774e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 77 1964504751 1375207407 -305673425 2008022955
            -520118130 -202939393 -38821142 -269497686</internalNodes>
          <leafValues>
            -3.1806364655494690e-001 4.8525118827819824e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 15 -419434642 -387027281 -352860122 -354489138
            1734866758 1711234877 -202116283 1995700223</internalNodes>
          <leafValues>
            -5.9747940301895142e-001 2.2811535000801086e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 99 -696203326 -136259759 -722504462 -17313860
            -267061560 -798994392 -1032605768 857829674</internalNodes>
          <leafValues>
            -5.1942723989486694e-001 2.5452747941017151e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 10 -->
    <_>
      <maxWeakCount>10</maxWeakCount>
      <stageThreshold>-1.7257841825485229e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 127 1576861181 -131073 -81923 -16387 1610407933 -214019
            -81921 -81921</internalNodes>
          <leafValues>
            -6.8091350793838501e-001 3.4414958953857422e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 64 -537526791 -570564611 1039866815 -574636097
            1610534911 1565843453 535440319 536806318</internalNodes>
          <leafValues>
            -4.6496266126632690e-001 4.2407321929931641e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 130 -2147482155 -188929 -536870913 -163843 -1074085889
            -1025 -65537 -1079497796</internalNodes>
          <leafValues>
            -4.8651787638664246e-001 3.6669605970382690e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 49 -1087372136 -4448360 1035738679 2145328955
            -1076355073 -1078453249 -1091944449 -5759490</internalNodes>
          <leafValues>
            -5.0146460533142090e-001 3.2934013009071350e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 18 -286527762 -1394020353 -269488146 -286327041
            2004309767 1635122167 -134217913 -134217729</internalNodes>
          <leafValues>
            -4.7354671359062195e-001 3.6931258440017700e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 162 -1128 824228543 -537968872 530689787 -4194896
            842068661 -8389328 991427575</internalNodes>
          <leafValues>
            -5.7790082693099976e-001 2.3575535416603088e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 124 1074110978 -482082897 2144982975 -8527873
            -135790597 -16783377 -195625729 1145431622</internalNodes>
          <leafValues>
            -5.9902256727218628e-001 2.6036697626113892e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 123 -268413611 -50496515 -1 -32769 -1073825795 -1
            -65537 -1073795765</internalNodes>
          <leafValues>
            -3.4895190596580505e-001 4.1869163513183594e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 70 1659888162 -1241514837 -286261365 -754980061
            -486817857 -1358968833 -134217777 1080288034</internalNodes>
          <leafValues>
            -4.3774437904357910e-001 3.2316094636917114e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 178 -989864177 1086324703 -10504668 -788529409
            -704677054 1040186295 -34078976 -52428801</internalNodes>
          <leafValues>
            -4.0298467874526978e-001 3.5668191313743591e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 11 -->
    <_>
      <maxWeakCount>12</maxWeakCount>
      <stageThreshold>-1.6008259057998657e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 78 1468006399 -1 2013265919 -1 -4114 -4178 -536871169
            -1054038</internalNodes>
          <leafValues>
            -5.6673562526702881e-001 6.0633486509323120e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 36 -11247619 -1074495491 -537330179 -1074118659
            2143064062 -537355270 -16875521 -1074118657</internalNodes>
          <leafValues>
            -4.5532488822937012e-001 4.3594542145729065e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 2 -353423377 -269490177 -268481537 -1063185 1986490359
            -117710985 -8912897 -2049</internalNodes>
          <leafValues>
            -3.0179327726364136e-001 5.4179322719573975e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 132 286265528 494213629 1062738749 1072242141 532422076
            -33932626 1043864575 1001929116</internalNodes>
          <leafValues>
            -7.0045799016952515e-001 1.9997505843639374e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 156 -1069357041 -205521425 -84426785 -103940129
            -294391877 -84938833 -134479905 -805117173</internalNodes>
          <leafValues>
            -3.1163915991783142e-001 4.4845655560493469e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 148 -16386 1066188728 1056190392 -1079230532 -70434836
            991196381 1073492984 -1</internalNodes>
          <leafValues>
            -4.1121381521224976e-001 3.2420134544372559e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 109 -185576360 -1645650840 1040186621 -46402291
            -119623492 -13075909 809291946 951540320</internalNodes>
          <leafValues>
            -4.5703861117362976e-001 2.9347121715545654e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 142 -1071185406 -71307313 -289682565 1476376503
            -621024593 -3147573 1869868927 1917304835</internalNodes>
          <leafValues>
            -4.7164782881736755e-001 2.3968656361103058e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 185 -4194383 -1356267524 -146834128 1035992484
            -1074266699 -1614807202 -541622860 -843055875</internalNodes>
          <leafValues>
            -3.1201976537704468e-001 3.9286631345748901e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 33 1232438266 -550129666 26740739 156444166 1313627385
            -1674514016 -2131349585 226430638</internalNodes>
          <leafValues>
            -4.3718740344047546e-001 2.8047958016395569e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 0 -269490841 200273647 -18361865 -136971038 -1048055331
            -268439603 -170027101 1693972212</internalNodes>
          <leafValues>
            -3.7469965219497681e-001 3.0717009305953979e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 80 -5198150 -1088811012 -1951134572 2105126033
            -1090679704 -1661199105 533900527 498401023</internalNodes>
          <leafValues>
            -5.2905166149139404e-001 2.2012051939964294e-001</leafValues></_></weakClassifiers></_>
    <!-- stage 12 -->
    <_>
      <maxWeakCount>13</maxWeakCount>
      <stageThreshold>-1.9205129146575928e+000</stageThreshold>
      <weakClassifiers>
        <_>
          <internalNodes>
            0 -1 87 -50342883 -8865 -37748737 -8422081 -184746755
            -33554945 -50529025 -50332225</internalNodes>
          <leafValues>
            -6.0000002384185791e-001 4.5359525084495544e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 24 -66305 -98313 -1095074053 1018706424 1610506236
            -98313 -200705 2134015999</internalNodes>
          <leafValues>
            -4.8690414428710938e-001 3.6150613427162170e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 166 2102357 -131585 -8388617 -9 -285212673 -147553
            -1094726401 1035472878</internalNodes>
          <leafValues>
            -6.0755223035812378e-001 2.5850912928581238e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 121 -229891 2147287039 1069072317 972818389 532422140
            -98307 -196612 -1346732035</internalNodes>
          <leafValues>
            -4.5246949791908264e-001 3.1187608838081360e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 161 -764942525 -204734609 -1343239670 -184555609
            -20453395 323876582 -235407457 -487602450</internalNodes>
          <leafValues>
            -2.7629959583282471e-001 4.5853719115257263e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 184 -85 -1884749844 -303039712 -1582694406 -1076101196
            440663751 -1082263792 -771752481</internalNodes>
          <leafValues>
            -3.7864053249359131e-001 3.0783155560493469e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 74 288887673 489955233 503058653 1039990901 888943615
            -1355007300 1039939583 -1074218308</internalNodes>
          <leafValues>
            -4.2957478761672974e-001 2.9841592907905579e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 89 -494934526 -135166975 -1480856977 1937236770
            -352330334 -269556698 -975445205 1097327363</internalNodes>
          <leafValues>
            -4.2543512582778931e-001 2.8419882059097290e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 30 -459024521 -202375169 -8388673 -576192523 -51134721
            -8193 -1241522177 -320611277</internalNodes>
          <leafValues>
            -2.2042599320411682e-001 5.5913400650024414e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 8 1564748511 -143288340 -270260497 132394664 -25102596
            -8585508 -848001031 -2758455</internalNodes>
          <leafValues>
            -3.4897232055664063e-001 3.3536911010742188e-001</leafValues></_>
        <_>
          <internalNodes>
            0 -1 35 -28
Download .txt
gitextract_nywf7dr4/

├── .dockerignore
├── .gitattributes
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── cla.txt
├── config/
│   ├── alprd.conf.defaults
│   ├── alprd.conf.user
│   ├── openalpr.conf.defaults
│   └── openalpr.conf.user
├── distros/
│   ├── centos/
│   │   └── openalpr.spec
│   └── debian/
│       ├── README.source
│       ├── changelog
│       ├── compat
│       ├── control
│       ├── copyright
│       ├── docs
│       ├── libopenalpr-data.install
│       ├── libopenalpr-dev.install
│       ├── libopenalpr2.install
│       ├── openalpr-daemon.default
│       ├── openalpr-daemon.dirs
│       ├── openalpr-daemon.init
│       ├── openalpr-daemon.install
│       ├── openalpr-daemon.postinst
│       ├── openalpr-utils.install
│       ├── openalpr.install
│       ├── openalpr.manpages
│       ├── patches/
│       │   └── series
│       ├── python-openalpr.install
│       ├── rules
│       ├── source/
│       │   ├── format
│       │   └── local-options
│       └── watch
├── doc/
│   ├── .gitignore
│   └── man/
│       └── alpr.1
├── runtime_data/
│   ├── cameras.yaml
│   ├── config/
│   │   ├── au.conf
│   │   ├── auwide.conf
│   │   ├── br.conf
│   │   ├── br2.conf
│   │   ├── eu.conf
│   │   ├── fr.conf
│   │   ├── gb.conf
│   │   ├── in.conf
│   │   ├── kr.conf
│   │   ├── kr2.conf
│   │   ├── mx.conf
│   │   ├── sg.conf
│   │   ├── us.conf
│   │   └── vn2.conf
│   ├── ocr/
│   │   └── tessdata/
│   │       ├── lau.traineddata
│   │       ├── lbr.traineddata
│   │       ├── leu.traineddata
│   │       ├── lfr.traineddata
│   │       ├── lgb.traineddata
│   │       ├── lin.traineddata
│   │       ├── lkr.traineddata
│   │       ├── lkr2.traineddata
│   │       ├── lsg.traineddata
│   │       └── lus.traineddata
│   ├── postprocess/
│   │   ├── au.patterns
│   │   ├── br.patterns
│   │   ├── eu.patterns
│   │   ├── gb.patterns
│   │   ├── in.patterns
│   │   ├── kr.patterns
│   │   ├── mx.patterns
│   │   ├── readme.txt
│   │   ├── sg.patterns
│   │   └── us.patterns
│   └── region/
│       ├── au.xml
│       ├── br.xml
│       ├── br2.xml
│       ├── eu.xml
│       ├── in.xml
│       ├── kr2.xml
│       ├── us.xml
│       └── vn2.xml
└── src/
    ├── CMakeLists.txt
    ├── bindings/
    │   ├── csharp/
    │   │   ├── AlprNetGuiTest/
    │   │   │   ├── AlprNetGuiTest.csproj
    │   │   │   ├── Form1.Designer.cs
    │   │   │   ├── Form1.cs
    │   │   │   ├── Form1.resx
    │   │   │   ├── Program.cs
    │   │   │   ├── Properties/
    │   │   │   │   ├── AssemblyInfo.cs
    │   │   │   │   ├── Resources.Designer.cs
    │   │   │   │   ├── Resources.resx
    │   │   │   │   ├── Settings.Designer.cs
    │   │   │   │   └── Settings.settings
    │   │   │   └── app.config
    │   │   ├── AlprNetTest/
    │   │   │   ├── AlprNetTest.csproj
    │   │   │   ├── App.config
    │   │   │   ├── Program.cs
    │   │   │   └── Properties/
    │   │   │       └── AssemblyInfo.cs
    │   │   ├── alprnet/
    │   │   │   ├── Alpr.cs
    │   │   │   ├── AlprNet.csproj
    │   │   │   ├── Models/
    │   │   │   │   ├── AlprResponse.cs
    │   │   │   │   ├── AlprResult.cs
    │   │   │   │   ├── Candidate.cs
    │   │   │   │   ├── Coordinate.cs
    │   │   │   │   └── RegionOfInterest.cs
    │   │   │   ├── Properties/
    │   │   │   │   └── AssemblyInfo.cs
    │   │   │   ├── alprnet.sln
    │   │   │   └── packages.config
    │   │   └── readme.md
    │   ├── go/
    │   │   ├── CMakeLists.txt
    │   │   ├── main.go
    │   │   ├── make.sh
    │   │   ├── openalpr/
    │   │   │   └── openalpr.go
    │   │   ├── openalprgo.cpp
    │   │   └── openalprgo.h
    │   ├── java/
    │   │   ├── .gitignore
    │   │   ├── CMakeLists.txt
    │   │   ├── com_openalpr_jni_Alpr.h
    │   │   ├── make.sh
    │   │   ├── openalprjni.cpp
    │   │   └── src/
    │   │       ├── Main.java
    │   │       └── com/
    │   │           └── openalpr/
    │   │               └── jni/
    │   │                   ├── Alpr.java
    │   │                   ├── AlprCoordinate.java
    │   │                   ├── AlprException.java
    │   │                   ├── AlprPlate.java
    │   │                   ├── AlprPlateResult.java
    │   │                   ├── AlprRegionOfInterest.java
    │   │                   ├── AlprResults.java
    │   │                   └── json/
    │   │                       ├── JSON.java
    │   │                       ├── JSONArray.java
    │   │                       ├── JSONException.java
    │   │                       ├── JSONObject.java
    │   │                       ├── JSONStringer.java
    │   │                       └── JSONTokener.java
    │   └── python/
    │       ├── .gitignore
    │       ├── CMakeLists.txt
    │       ├── make.sh
    │       ├── openalpr/
    │       │   ├── __init__.py
    │       │   └── openalpr.py
    │       ├── openalprpy.cpp
    │       ├── setup.py
    │       └── test.py
    ├── cmake_modules/
    │   ├── FindTesseract.cmake
    │   ├── Findlog4cplus.cmake
    │   ├── LibFindMacros.cmake
    │   └── templates/
    │       ├── cmake_uninstall.cmake.in
    │       └── openalpr.pc.in
    ├── daemon/
    │   ├── beanstalk.c
    │   ├── beanstalk.cc
    │   ├── beanstalk.h
    │   ├── beanstalk.hpp
    │   ├── daemonconfig.cpp
    │   └── daemonconfig.h
    ├── daemon.cpp
    ├── inc/
    │   └── safequeue.h
    ├── main.cpp
    ├── misc_utilities/
    │   ├── CMakeLists.txt
    │   ├── binarizefontsheet.cpp
    │   ├── calibrate.cpp
    │   ├── classifychars.cpp
    │   ├── prepcharsfortraining.cpp
    │   ├── sortstate.cpp
    │   └── tagplates.cpp
    ├── openalpr/
    │   ├── CMakeLists.txt
    │   ├── TRexpp.h
    │   ├── alpr.cpp
    │   ├── alpr.h
    │   ├── alpr_c.cpp
    │   ├── alpr_c.h
    │   ├── alpr_impl.cpp
    │   ├── alpr_impl.h
    │   ├── binarize_wolf.cpp
    │   ├── binarize_wolf.h
    │   ├── cjson.c
    │   ├── cjson.h
    │   ├── colorfilter.cpp
    │   ├── colorfilter.h
    │   ├── config.cpp
    │   ├── config.h
    │   ├── config_helper.cpp
    │   ├── config_helper.h
    │   ├── constants.h
    │   ├── detection/
    │   │   ├── detector.cpp
    │   │   ├── detector.h
    │   │   ├── detector_types.h
    │   │   ├── detectorcpu.cpp
    │   │   ├── detectorcpu.h
    │   │   ├── detectorcuda.cpp
    │   │   ├── detectorcuda.h
    │   │   ├── detectorfactory.cpp
    │   │   ├── detectorfactory.h
    │   │   ├── detectormask.cpp
    │   │   ├── detectormask.h
    │   │   ├── detectormorph.cpp
    │   │   ├── detectormorph.h
    │   │   ├── detectorocl.cpp
    │   │   └── detectorocl.h
    │   ├── edges/
    │   │   ├── edgefinder.cpp
    │   │   ├── edgefinder.h
    │   │   ├── platecorners.cpp
    │   │   ├── platecorners.h
    │   │   ├── platelines.cpp
    │   │   ├── platelines.h
    │   │   ├── scorekeeper.cpp
    │   │   ├── scorekeeper.h
    │   │   ├── textlinecollection.cpp
    │   │   └── textlinecollection.h
    │   ├── licenseplatecandidate.cpp
    │   ├── licenseplatecandidate.h
    │   ├── motiondetector.cpp
    │   ├── motiondetector.h
    │   ├── ocr/
    │   │   ├── ocr.cpp
    │   │   ├── ocr.h
    │   │   ├── ocrfactory.cpp
    │   │   ├── ocrfactory.h
    │   │   ├── segmentation/
    │   │   │   ├── charactersegmenter.cpp
    │   │   │   ├── charactersegmenter.h
    │   │   │   ├── histogram.cpp
    │   │   │   ├── histogram.h
    │   │   │   ├── histogramhorizontal.cpp
    │   │   │   ├── histogramhorizontal.h
    │   │   │   ├── histogramvertical.cpp
    │   │   │   ├── histogramvertical.h
    │   │   │   ├── segment.cpp
    │   │   │   ├── segment.h
    │   │   │   ├── segmentationgroup.cpp
    │   │   │   └── segmentationgroup.h
    │   │   ├── tesseract_ocr.cpp
    │   │   └── tesseract_ocr.h
    │   ├── pipeline_data.cpp
    │   ├── pipeline_data.h
    │   ├── postprocess/
    │   │   ├── postprocess.cpp
    │   │   ├── postprocess.h
    │   │   ├── regexrule.cpp
    │   │   └── regexrule.h
    │   ├── prewarp.cpp
    │   ├── prewarp.h
    │   ├── result_aggregator.cpp
    │   ├── result_aggregator.h
    │   ├── simpleini/
    │   │   ├── CMakeLists.txt
    │   │   ├── ConvertUTF.c
    │   │   ├── ConvertUTF.h
    │   │   ├── LICENCE.txt
    │   │   ├── README.md
    │   │   ├── ini.syn
    │   │   ├── simpleini.doxy
    │   │   ├── simpleini.h
    │   │   └── snippets.cpp
    │   ├── support/
    │   │   ├── CMakeLists.txt
    │   │   ├── fast_mutex.h
    │   │   ├── filesystem.cpp
    │   │   ├── filesystem.h
    │   │   ├── platform.cpp
    │   │   ├── platform.h
    │   │   ├── re2/
    │   │   │   ├── bitstate.cc
    │   │   │   ├── compile.cc
    │   │   │   ├── dfa.cc
    │   │   │   ├── filtered_re2.cc
    │   │   │   ├── filtered_re2.h
    │   │   │   ├── mimics_pcre.cc
    │   │   │   ├── nfa.cc
    │   │   │   ├── onepass.cc
    │   │   │   ├── parse.cc
    │   │   │   ├── perl_groups.cc
    │   │   │   ├── prefilter.cc
    │   │   │   ├── prefilter.h
    │   │   │   ├── prefilter_tree.cc
    │   │   │   ├── prefilter_tree.h
    │   │   │   ├── prog.cc
    │   │   │   ├── prog.h
    │   │   │   ├── re2.cc
    │   │   │   ├── regexp.cc
    │   │   │   ├── regexp.h
    │   │   │   ├── set.cc
    │   │   │   ├── set.h
    │   │   │   ├── simplify.cc
    │   │   │   ├── stringpiece.cc
    │   │   │   ├── stringpiece.h
    │   │   │   ├── tostring.cc
    │   │   │   ├── unicode_casefold.cc
    │   │   │   ├── unicode_casefold.h
    │   │   │   ├── unicode_groups.cc
    │   │   │   ├── unicode_groups.h
    │   │   │   ├── util/
    │   │   │   │   ├── atomicops.h
    │   │   │   │   ├── benchmark.h
    │   │   │   │   ├── flags.h
    │   │   │   │   ├── hash.cc
    │   │   │   │   ├── logging.h
    │   │   │   │   ├── mutex.h
    │   │   │   │   ├── pcre.h
    │   │   │   │   ├── random.h
    │   │   │   │   ├── rune.cc
    │   │   │   │   ├── sparse_array.h
    │   │   │   │   ├── sparse_set.h
    │   │   │   │   ├── stringprintf.cc
    │   │   │   │   ├── strutil.cc
    │   │   │   │   ├── test.h
    │   │   │   │   ├── thread.h
    │   │   │   │   ├── utf.h
    │   │   │   │   ├── util.h
    │   │   │   │   ├── valgrind.cc
    │   │   │   │   └── valgrind.h
    │   │   │   ├── variadic_function.h
    │   │   │   └── walker-inl.h
    │   │   ├── re2.h
    │   │   ├── timing.cpp
    │   │   ├── timing.h
    │   │   ├── tinydir.h
    │   │   ├── tinythread.cpp
    │   │   ├── tinythread.h
    │   │   ├── utf8/
    │   │   │   ├── checked.h
    │   │   │   ├── core.h
    │   │   │   └── unchecked.h
    │   │   ├── utf8.cpp
    │   │   ├── utf8.h
    │   │   ├── version.cpp
    │   │   └── version.h
    │   ├── textdetection/
    │   │   ├── characteranalysis.cpp
    │   │   ├── characteranalysis.h
    │   │   ├── linefinder.cpp
    │   │   ├── linefinder.h
    │   │   ├── platemask.cpp
    │   │   ├── platemask.h
    │   │   ├── textcontours.cpp
    │   │   ├── textcontours.h
    │   │   ├── textline.cpp
    │   │   └── textline.h
    │   ├── transformation.cpp
    │   ├── transformation.h
    │   ├── utility.cpp
    │   └── utility.h
    ├── plate_push.py
    ├── statedetection/
    │   ├── CMakeLists.txt
    │   ├── featurematcher.cpp
    │   ├── featurematcher.h
    │   ├── line_segment.cpp
    │   ├── line_segment.h
    │   ├── state_detector.cpp
    │   ├── state_detector.h
    │   ├── state_detector_impl.cpp
    │   └── state_detector_impl.h
    ├── tclap/
    │   ├── Arg.h
    │   ├── ArgException.h
    │   ├── ArgTraits.h
    │   ├── CmdLine.h
    │   ├── CmdLineInterface.h
    │   ├── CmdLineOutput.h
    │   ├── Constraint.h
    │   ├── DocBookOutput.h
    │   ├── HelpVisitor.h
    │   ├── IgnoreRestVisitor.h
    │   ├── MultiArg.h
    │   ├── MultiSwitchArg.h
    │   ├── OptionalUnlabeledTracker.h
    │   ├── StandardTraits.h
    │   ├── StdOutput.h
    │   ├── SwitchArg.h
    │   ├── UnlabeledMultiArg.h
    │   ├── UnlabeledValueArg.h
    │   ├── ValueArg.h
    │   ├── ValuesConstraint.h
    │   ├── VersionVisitor.h
    │   ├── Visitor.h
    │   ├── XorHandler.h
    │   └── ZshCompletionOutput.h
    ├── tests/
    │   ├── CMakeLists.txt
    │   ├── catch.hpp
    │   ├── test_api.cpp
    │   ├── test_config.cpp
    │   ├── test_regex.cpp
    │   └── test_utility.cpp
    └── video/
        ├── CMakeLists.txt
        ├── logging_videobuffer.h
        ├── videobuffer.cpp
        └── videobuffer.h
Download .txt
Showing preview only (9,896K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2363 symbols across 238 files)

FILE: src/bindings/csharp/AlprNetGuiTest/Form1.Designer.cs
  class Form1 (line 3) | partial class Form1
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: src/bindings/csharp/AlprNetGuiTest/Form1.cs
  class Form1 (line 31) | public partial class Form1 : Form
    method Form1 (line 33) | public Form1()
    method boundingRectangle (line 49) | public Rectangle boundingRectangle(List<Point> points)
    method cropImage (line 62) | private static Image cropImage(Image img, Rectangle cropArea)
    method combineImages (line 68) | public static Bitmap combineImages(List<Image> images)
    method button1_Click (line 122) | private void button1_Click(object sender, EventArgs e)
    method processImageFile (line 131) | private void processImageFile(string fileName)
    method resetControls (line 181) | private void resetControls()
    method Form1_Load (line 188) | private void Form1_Load(object sender, EventArgs e)

FILE: src/bindings/csharp/AlprNetGuiTest/Program.cs
  class Program (line 26) | static class Program
    method Main (line 31) | [STAThread]

FILE: src/bindings/csharp/AlprNetGuiTest/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: src/bindings/csharp/AlprNetGuiTest/Properties/Settings.Designer.cs
  class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]

FILE: src/bindings/csharp/AlprNetTest/Program.cs
  class Program (line 6) | class Program
    method Main (line 8) | static void Main(string[] args)

FILE: src/bindings/csharp/alprnet/Alpr.cs
  class Alpr (line 9) | public class Alpr : IDisposable
    method Alpr (line 24) | public Alpr(string country,  string config_file = "", string runtime_d...
    method Dispose (line 39) | public void Dispose()
    method Dispose (line 44) | protected virtual void Dispose(bool disposing)
    method Initialize (line 67) | public bool Initialize()
    method IsLoaded (line 99) | public bool IsLoaded()
    method check_initialization (line 116) | private void check_initialization()
    method Recognize (line 128) | public AlprResponse Recognize(string filepath)
    method Recognize (line 139) | public AlprResponse Recognize(byte[] image_bytes)
    method Recognize (line 172) | public AlprResponse Recognize(System.Drawing.Image image)
    method SetCountry (line 217) | public void SetCountry(string country)
    method SetPrewarp (line 229) | public void SetPrewarp(string prewarp)
    method SetDetectionMask (line 242) | public void SetDetectionMask(System.Drawing.Image mask)
    method setTopN (line 275) | public void setTopN(int top_n)
    method setDefaultRegion (line 287) | public void setDefaultRegion(string region)
    type NativeROI (line 296) | [StructLayout(LayoutKind.Sequential)]
    method openalpr_init (line 305) | [DllImport("libopenalprc.dll")]
    method openalpr_is_loaded (line 308) | [DllImport("libopenalprc.dll")]
    method openalpr_cleanup (line 311) | [DllImport("libopenalprc.dll")]
    method openalpr_set_country (line 314) | [DllImport("libopenalprc.dll")]
    method openalpr_set_prewarp (line 317) | [DllImport("libopenalprc.dll")]
    method openalpr_set_mask (line 320) | [DllImport("libopenalprc.dll")]
    method openalpr_set_detect_region (line 323) | [DllImport("libopenalprc.dll")]
    method openalpr_set_topn (line 326) | [DllImport("libopenalprc.dll")]
    method openalpr_set_default_region (line 329) | [DllImport("libopenalprc.dll")]
    method openalpr_recognize_rawimage (line 332) | [DllImport("libopenalprc.dll")]
    method openalpr_recognize_encodedimage (line 335) | [DllImport("libopenalprc.dll")]
    method openalpr_free_response_string (line 338) | [DllImport("libopenalprc.dll")]

FILE: src/bindings/csharp/alprnet/Models/AlprResponse.cs
  class AlprResponse (line 5) | public class AlprResponse

FILE: src/bindings/csharp/alprnet/Models/AlprResult.cs
  class AlprResult (line 6) | public class AlprResult

FILE: src/bindings/csharp/alprnet/Models/Candidate.cs
  class Candidate (line 5) | public class Candidate

FILE: src/bindings/csharp/alprnet/Models/Coordinate.cs
  class Coordinate (line 5) | public class Coordinate

FILE: src/bindings/csharp/alprnet/Models/RegionOfInterest.cs
  class RegionOfInterest (line 5) | public class RegionOfInterest

FILE: src/bindings/go/main.go
  function main (line 10) | func main() {

FILE: src/bindings/go/openalpr/openalpr.go
  type Alpr (line 15) | type Alpr struct
    method SetDetectRegion (line 89) | func (alpr *Alpr) SetDetectRegion(detectRegion bool) {
    method SetTopN (line 93) | func (alpr *Alpr) SetTopN(topN int) {
    method SetDefaultRegion (line 97) | func (alpr *Alpr) SetDefaultRegion(region string) {
    method IsLoaded (line 103) | func (alpr *Alpr) IsLoaded() bool {
    method RecognizeByFilePath (line 111) | func (alpr *Alpr) RecognizeByFilePath(filePath string) (AlprResults, e...
    method RecognizeByBlob (line 123) | func (alpr *Alpr) RecognizeByBlob(imageBytes []byte) (AlprResults, err...
    method Unload (line 135) | func (alpr *Alpr) Unload() {
  type AlprResults (line 23) | type AlprResults struct
  type AlprPlate (line 32) | type AlprPlate struct
  type AlprRegionOfInterest (line 38) | type AlprRegionOfInterest struct
  type AlprCoordinate (line 45) | type AlprCoordinate struct
  type AlprPlateResult (line 50) | type AlprPlateResult struct
  function bool2Cint (line 61) | func bool2Cint(b bool) C.int {
  function cint2Bool (line 69) | func cint2Bool(i C.int) bool {
  function NewAlpr (line 77) | func NewAlpr(country string, configFile string, runtimeDir string) *Alpr {
  function GetVersion (line 107) | func GetVersion() string {

FILE: src/bindings/go/openalprgo.cpp
  function OPENALPR_EXPORT (line 12) | OPENALPR_EXPORT Alpr AlprInit(char* country, char* configFile, char* run...
  function OPENALPR_EXPORT (line 17) | OPENALPR_EXPORT void SetDetectRegion(Alpr alpr, int detectRegion) {
  function OPENALPR_EXPORT (line 22) | OPENALPR_EXPORT void SetTopN(Alpr alpr, int topN) {
  function OPENALPR_EXPORT (line 27) | OPENALPR_EXPORT void SetDefaultRegion(Alpr alpr, char* region) {
  function OPENALPR_EXPORT (line 32) | OPENALPR_EXPORT int IsLoaded(Alpr alpr) {
  function OPENALPR_EXPORT (line 37) | OPENALPR_EXPORT void Unload(Alpr alpr) {
  function OPENALPR_EXPORT (line 42) | OPENALPR_EXPORT char* RecognizeByFilePath(Alpr alpr, char* filePath) {
  function OPENALPR_EXPORT (line 52) | OPENALPR_EXPORT char* RecognizeByBlob(Alpr alpr, char* imageBytes, int l...
  function OPENALPR_EXPORT (line 63) | OPENALPR_EXPORT char* GetVersion() {

FILE: src/bindings/java/openalprjni.cpp
  function JNIEXPORT (line 10) | JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_initialize
  function JNIEXPORT (line 35) | JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_dispose
  function JNIEXPORT (line 44) | JNIEXPORT jboolean JNICALL Java_com_openalpr_jni_Alpr_is_1loaded
  function JNIEXPORT (line 56) | JNIEXPORT jstring JNICALL Java_com_openalpr_jni_Alpr_native_1recognize__...
  function JNIEXPORT (line 74) | JNIEXPORT jstring JNICALL Java_com_openalpr_jni_Alpr_native_1recognize___3B
  function JNIEXPORT (line 92) | JNIEXPORT jstring JNICALL Java_com_openalpr_jni_Alpr_native_1recognize__...
  function JNIEXPORT (line 110) | JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_set_1default_1region
  function JNIEXPORT (line 121) | JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_detect_1region
  function JNIEXPORT (line 127) | JNIEXPORT void JNICALL Java_com_openalpr_jni_Alpr_set_1top_1n
  function JNIEXPORT (line 133) | JNIEXPORT jstring JNICALL Java_com_openalpr_jni_Alpr_get_1version

FILE: src/bindings/java/src/Main.java
  class Main (line 10) | public class Main {
    method main (line 12) | public static void main(String[] args) throws Exception {

FILE: src/bindings/java/src/com/openalpr/jni/Alpr.java
  class Alpr (line 5) | public class Alpr {
    method initialize (line 12) | private native void initialize(String country, String configFile, Stri...
    method dispose (line 13) | private native void dispose();
    method is_loaded (line 15) | private native boolean is_loaded();
    method native_recognize (line 16) | private native String native_recognize(String imageFile);
    method native_recognize (line 17) | private native String native_recognize(byte[] imageBytes);
    method native_recognize (line 18) | private native String native_recognize(long imageData, int bytesPerPix...
    method set_default_region (line 20) | private native void set_default_region(String region);
    method detect_region (line 21) | private native void detect_region(boolean detectRegion);
    method set_top_n (line 22) | private native void set_top_n(int topN);
    method get_version (line 23) | private native String get_version();
    method Alpr (line 27) | public Alpr(String country, String configFile, String runtimeDir)
    method unload (line 32) | public void unload()
    method isLoaded (line 37) | public boolean isLoaded()
    method recognize (line 42) | public AlprResults recognize(String imageFile) throws AlprException
    method recognize (line 54) | public AlprResults recognize(byte[] imageBytes) throws AlprException
    method recognize (line 66) | public AlprResults recognize(long imageData, int bytesPerPixel, int im...
    method setTopN (line 78) | public void setTopN(int topN)
    method setDefaultRegion (line 83) | public void setDefaultRegion(String region)
    method setDetectRegion (line 88) | public void setDetectRegion(boolean detectRegion)
    method getVersion (line 93) | public String getVersion()

FILE: src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java
  class AlprCoordinate (line 7) | public class AlprCoordinate {
    method AlprCoordinate (line 11) | AlprCoordinate(JSONObject coordinateObj) throws JSONException
    method getX (line 17) | public int getX() {
    method getY (line 21) | public int getY() {

FILE: src/bindings/java/src/com/openalpr/jni/AlprException.java
  class AlprException (line 4) | public class AlprException extends Exception {
    method AlprException (line 6) | public AlprException(String s) {

FILE: src/bindings/java/src/com/openalpr/jni/AlprPlate.java
  class AlprPlate (line 7) | public class AlprPlate {
    method AlprPlate (line 12) | AlprPlate(JSONObject plateObj) throws JSONException
    method getCharacters (line 19) | public String getCharacters() {
    method getOverallConfidence (line 23) | public float getOverallConfidence() {
    method isMatchesTemplate (line 27) | public boolean isMatchesTemplate() {

FILE: src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java
  class AlprPlateResult (line 11) | public class AlprPlateResult {
    method AlprPlateResult (line 34) | AlprPlateResult(JSONObject plateResult) throws JSONException
    method getRequestedTopn (line 70) | public int getRequestedTopn() {
    method getBestPlate (line 74) | public AlprPlate getBestPlate() {
    method getTopNPlates (line 78) | public List<AlprPlate> getTopNPlates() {
    method getProcessingTimeMs (line 82) | public float getProcessingTimeMs() {
    method getPlatePoints (line 86) | public List<AlprCoordinate> getPlatePoints() {
    method getPlateIndex (line 90) | public int getPlateIndex() {
    method getRegionConfidence (line 94) | public int getRegionConfidence() {
    method getRegion (line 98) | public String getRegion() {

FILE: src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java
  class AlprRegionOfInterest (line 7) | public class AlprRegionOfInterest {
    method AlprRegionOfInterest (line 13) | AlprRegionOfInterest(JSONObject roiObj) throws JSONException
    method getX (line 21) | public int getX() {
    method getY (line 25) | public int getY() {
    method getWidth (line 29) | public int getWidth() {
    method getHeight (line 33) | public int getHeight() {

FILE: src/bindings/java/src/com/openalpr/jni/AlprResults.java
  class AlprResults (line 10) | public class AlprResults {
    method AlprResults (line 20) | AlprResults(String json) throws JSONException
    method getEpochTime (line 48) | public long getEpochTime() {
    method getImgWidth (line 52) | public int getImgWidth() {
    method getImgHeight (line 56) | public int getImgHeight() {
    method getTotalProcessingTimeMs (line 60) | public float getTotalProcessingTimeMs() {
    method getPlates (line 64) | public List<AlprPlateResult> getPlates() {
    method getRegionsOfInterest (line 68) | public List<AlprRegionOfInterest> getRegionsOfInterest() {

FILE: src/bindings/java/src/com/openalpr/jni/json/JSON.java
  class JSON (line 19) | class JSON {
    method checkDouble (line 23) | static double checkDouble(double d) throws JSONException {
    method toBoolean (line 30) | static Boolean toBoolean(Object value) {
    method toDouble (line 44) | static Double toDouble(Object value) {
    method toInteger (line 58) | static Integer toInteger(Object value) {
    method toLong (line 72) | static Long toLong(Object value) {
    method toString (line 86) | static String toString(Object value) {
    method typeMismatch (line 95) | public static JSONException typeMismatch(Object indexOrName, Object ac...
    method typeMismatch (line 106) | public static JSONException typeMismatch(Object actual, String require...

FILE: src/bindings/java/src/com/openalpr/jni/json/JSONArray.java
  class JSONArray (line 47) | public class JSONArray {
    method JSONArray (line 54) | public JSONArray() {
    method JSONArray (line 67) | public JSONArray(Collection copyFrom) {
    method JSONArray (line 82) | public JSONArray(JSONTokener readFrom) throws JSONException {
    method JSONArray (line 102) | public JSONArray(String json) throws JSONException {
    method length (line 109) | public int length() {
    method put (line 118) | public JSONArray put(boolean value) {
    method put (line 130) | public JSONArray put(double value) throws JSONException {
    method put (line 140) | public JSONArray put(int value) {
    method put (line 150) | public JSONArray put(long value) {
    method put (line 165) | public JSONArray put(Object value) {
    method put (line 177) | public JSONArray put(int index, boolean value) throws JSONException {
    method put (line 190) | public JSONArray put(int index, double value) throws JSONException {
    method put (line 201) | public JSONArray put(int index, int value) throws JSONException {
    method put (line 212) | public JSONArray put(int index, long value) throws JSONException {
    method put (line 227) | public JSONArray put(int index, Object value) throws JSONException {
    method isNull (line 243) | public boolean isNull(int index) {
    method get (line 255) | public Object get(int index) throws JSONException {
    method opt (line 271) | public Object opt(int index) {
    method getBoolean (line 285) | public boolean getBoolean(int index) throws JSONException {
    method optBoolean (line 298) | public boolean optBoolean(int index) {
    method optBoolean (line 306) | public boolean optBoolean(int index, boolean fallback) {
    method getDouble (line 319) | public double getDouble(int index) throws JSONException {
    method optDouble (line 332) | public double optDouble(int index) {
    method optDouble (line 340) | public double optDouble(int index, double fallback) {
    method getInt (line 353) | public int getInt(int index) throws JSONException {
    method optInt (line 366) | public int optInt(int index) {
    method optInt (line 374) | public int optInt(int index, int fallback) {
    method getLong (line 387) | public long getLong(int index) throws JSONException {
    method optLong (line 400) | public long optLong(int index) {
    method optLong (line 408) | public long optLong(int index, long fallback) {
    method getString (line 420) | public String getString(int index) throws JSONException {
    method optString (line 433) | public String optString(int index) {
    method optString (line 441) | public String optString(int index, String fallback) {
    method getJSONArray (line 454) | public JSONArray getJSONArray(int index) throws JSONException {
    method optJSONArray (line 467) | public JSONArray optJSONArray(int index) {
    method getJSONObject (line 479) | public JSONObject getJSONObject(int index) throws JSONException {
    method optJSONObject (line 492) | public JSONObject optJSONObject(int index) {
    method toJSONObject (line 504) | public JSONObject toJSONObject(JSONArray names) throws JSONException {
    method join (line 524) | public String join(String separator) throws JSONException {
    method toString (line 541) | @Override public String toString() {
    method toString (line 563) | public String toString(int indentSpaces) throws JSONException {
    method writeTo (line 569) | void writeTo(JSONStringer stringer) throws JSONException {
    method equals (line 577) | @Override public boolean equals(Object o) {
    method hashCode (line 581) | @Override public int hashCode() {

FILE: src/bindings/java/src/com/openalpr/jni/json/JSONException.java
  class JSONException (line 44) | public class JSONException extends Exception {
    method JSONException (line 46) | public JSONException(String s) {

FILE: src/bindings/java/src/com/openalpr/jni/json/JSONObject.java
  class JSONObject (line 78) | public class JSONObject {
    method equals (line 98) | @Override public boolean equals(Object o) {
    method toString (line 101) | @Override public String toString() {
    method JSONObject (line 111) | public JSONObject() {
    method JSONObject (line 124) | public JSONObject(Map copyFrom) {
    method JSONObject (line 149) | public JSONObject(JSONTokener readFrom) throws JSONException {
    method JSONObject (line 170) | public JSONObject(String json) throws JSONException {
    method JSONObject (line 179) | public JSONObject(JSONObject copyFrom, String[] names) throws JSONExce...
    method length (line 192) | public int length() {
    method put (line 202) | public JSONObject put(String name, boolean value) throws JSONException {
    method put (line 215) | public JSONObject put(String name, double value) throws JSONException {
    method put (line 226) | public JSONObject put(String name, int value) throws JSONException {
    method put (line 237) | public JSONObject put(String name, long value) throws JSONException {
    method put (line 253) | public JSONObject put(String name, Object value) throws JSONException {
    method putOpt (line 270) | public JSONObject putOpt(String name, Object value) throws JSONExcepti...
    method accumulate (line 289) | public JSONObject accumulate(String name, Object value) throws JSONExc...
    method checkName (line 312) | String checkName(String name) throws JSONException {
    method remove (line 325) | public Object remove(String name) {
    method isNull (line 333) | public boolean isNull(String name) {
    method has (line 342) | public boolean has(String name) {
    method get (line 351) | public Object get(String name) throws JSONException {
    method opt (line 363) | public Object opt(String name) {
    method getBoolean (line 374) | public boolean getBoolean(String name) throws JSONException {
    method optBoolean (line 387) | public boolean optBoolean(String name) {
    method optBoolean (line 395) | public boolean optBoolean(String name, boolean fallback) {
    method getDouble (line 408) | public double getDouble(String name) throws JSONException {
    method optDouble (line 421) | public double optDouble(String name) {
    method optDouble (line 429) | public double optDouble(String name, double fallback) {
    method getInt (line 442) | public int getInt(String name) throws JSONException {
    method optInt (line 455) | public int optInt(String name) {
    method optInt (line 463) | public int optInt(String name, int fallback) {
    method getLong (line 476) | public long getLong(String name) throws JSONException {
    method optLong (line 489) | public long optLong(String name) {
    method optLong (line 497) | public long optLong(String name, long fallback) {
    method getString (line 509) | public String getString(String name) throws JSONException {
    method optString (line 522) | public String optString(String name) {
    method optString (line 530) | public String optString(String name, String fallback) {
    method getJSONArray (line 543) | public JSONArray getJSONArray(String name) throws JSONException {
    method optJSONArray (line 556) | public JSONArray optJSONArray(String name) {
    method getJSONObject (line 568) | public JSONObject getJSONObject(String name) throws JSONException {
    method optJSONObject (line 581) | public JSONObject optJSONObject(String name) {
    method toJSONArray (line 591) | public JSONArray toJSONArray(JSONArray names) throws JSONException {
    method keys (line 615) | public Iterator keys() {
    method names (line 623) | public JSONArray names() {
    method toString (line 633) | @Override public String toString() {
    method toString (line 658) | public String toString(int indentSpaces) throws JSONException {
    method writeTo (line 664) | void writeTo(JSONStringer stringer) throws JSONException {
    method numberToString (line 678) | public static String numberToString(Number number) throws JSONException {
    method quote (line 706) | public static String quote(String data) {

FILE: src/bindings/java/src/com/openalpr/jni/json/JSONStringer.java
  class JSONStringer (line 61) | public class JSONStringer {
    type Scope (line 71) | enum Scope {
    method JSONStringer (line 122) | public JSONStringer() {
    method JSONStringer (line 126) | JSONStringer(int indentSpaces) {
    method array (line 138) | public JSONStringer array() throws JSONException {
    method endArray (line 147) | public JSONStringer endArray() throws JSONException {
    method object (line 157) | public JSONStringer object() throws JSONException {
    method endObject (line 166) | public JSONStringer endObject() throws JSONException {
    method open (line 174) | JSONStringer open(Scope empty, String openBracket) throws JSONException {
    method close (line 188) | JSONStringer close(Scope empty, Scope nonempty, String closeBracket) t...
    method peek (line 205) | private Scope peek() throws JSONException {
    method replaceTop (line 215) | private void replaceTop(Scope topOfStack) {
    method value (line 227) | public JSONStringer value(Object value) throws JSONException {
    method value (line 263) | public JSONStringer value(boolean value) throws JSONException {
    method value (line 279) | public JSONStringer value(double value) throws JSONException {
    method value (line 293) | public JSONStringer value(long value) throws JSONException {
    method string (line 302) | private void string(String value) {
    method newline (line 353) | private void newline() {
    method key (line 370) | public JSONStringer key(String name) throws JSONException {
    method beforeKey (line 383) | private void beforeKey() throws JSONException {
    method beforeValue (line 399) | private void beforeValue() throws JSONException {
    method toString (line 429) | @Override public String toString() {

FILE: src/bindings/java/src/com/openalpr/jni/json/JSONTokener.java
  class JSONTokener (line 62) | public class JSONTokener {
    method JSONTokener (line 78) | public JSONTokener(String in) {
    method nextValue (line 93) | public Object nextValue() throws JSONException {
    method nextCleanInternal (line 115) | private int nextCleanInternal() throws JSONException {
    method skipToEndOfLine (line 174) | private void skipToEndOfLine() {
    method nextString (line 194) | public String nextString(char quote) throws JSONException {
    method readEscapeCharacter (line 242) | private char readEscapeCharacter() throws JSONException {
    method readLiteral (line 281) | private Object readLiteral() throws JSONException {
    method nextToInternal (line 335) | private String nextToInternal(String excluded) {
    method readObject (line 350) | private JSONObject readObject() throws JSONException {
    method readArray (line 405) | private JSONArray readArray() throws JSONException {
    method syntaxError (line 449) | public JSONException syntaxError(String message) {
    method toString (line 456) | @Override public String toString() {
    method more (line 472) | public boolean more() {
    method next (line 481) | public char next() {
    method next (line 489) | public char next(char c) throws JSONException {
    method nextClean (line 503) | public char nextClean() throws JSONException {
    method next (line 519) | public String next(int length) throws JSONException {
    method nextTo (line 544) | public String nextTo(String excluded) {
    method nextTo (line 554) | public String nextTo(char excluded) {
    method skipPast (line 563) | public void skipPast(String through) {
    method skipTo (line 573) | public char skipTo(char to) {
    method back (line 587) | public void back() {
    method dehexchar (line 600) | public static int dehexchar(char hex) {

FILE: src/bindings/python/openalpr/openalpr.py
  function _convert_to_charp (line 17) | def _convert_to_charp(string):
  function _convert_from_charp (line 27) | def _convert_from_charp(charp):
  class Alpr (line 35) | class Alpr:
    method __init__ (line 36) | def __init__(self, country, config_file, runtime_dir):
    method unload (line 118) | def unload(self):
    method is_loaded (line 129) | def is_loaded(self):
    method recognize_file (line 140) | def recognize_file(self, file_path):
    method recognize_array (line 156) | def recognize_array(self, byte_array):
    method recognize_ndarray (line 173) | def recognize_ndarray(self, ndarray):
    method get_version (line 191) | def get_version(self):
    method set_top_n (line 204) | def set_top_n(self, topn):
    method set_country (line 214) | def set_country(self, country):
    method set_prewarp (line 225) | def set_prewarp(self, prewarp):
    method set_default_region (line 236) | def set_default_region(self, region):
    method set_detect_region (line 247) | def set_detect_region(self, enabled):
    method __del__ (line 257) | def __del__(self):
    method __enter__ (line 261) | def __enter__(self):
    method __exit__ (line 264) | def __exit__(self, exc_type, exc_val, exc_tb):

FILE: src/bindings/python/openalprpy.cpp
  function OPENALPR_EXPORT (line 20) | OPENALPR_EXPORT Alpr* initialize(char* ccountry, char* cconfigFile, char...
  function OPENALPR_EXPORT (line 38) | OPENALPR_EXPORT void dispose(Alpr* nativeAlpr)
  function OPENALPR_EXPORT (line 44) | OPENALPR_EXPORT bool isLoaded(Alpr* nativeAlpr)
  function OPENALPR_EXPORT (line 52) | OPENALPR_EXPORT char* recognizeFile(Alpr* nativeAlpr, char* cimageFile)
  function OPENALPR_EXPORT (line 71) | OPENALPR_EXPORT void freeJsonMem(char* ptr)
  function OPENALPR_EXPORT (line 78) | OPENALPR_EXPORT char* recognizeArray(Alpr* nativeAlpr, unsigned char* bu...
  function OPENALPR_EXPORT (line 102) | OPENALPR_EXPORT char* recognizeRawImage(Alpr* nativeAlpr, unsigned char*...
  function OPENALPR_EXPORT (line 122) | OPENALPR_EXPORT void setCountry(Alpr* nativeAlpr, char* ccountry)
  function OPENALPR_EXPORT (line 130) | OPENALPR_EXPORT void setPrewarp(Alpr* nativeAlpr, char* cprewarp)
  function OPENALPR_EXPORT (line 138) | OPENALPR_EXPORT void setDefaultRegion(Alpr* nativeAlpr, char* cdefault_r...
  function OPENALPR_EXPORT (line 146) | OPENALPR_EXPORT void setDetectRegion(Alpr* nativeAlpr, bool detect_region)
  function OPENALPR_EXPORT (line 151) | OPENALPR_EXPORT void setTopN(Alpr* nativeAlpr, int top_n)
  function OPENALPR_EXPORT (line 156) | OPENALPR_EXPORT char* getVersion(Alpr* nativeAlpr)

FILE: src/daemon.cpp
  type CaptureThreadData (line 46) | struct CaptureThreadData
  type UploadThreadData (line 64) | struct UploadThreadData
  function segfault_handler (line 69) | void segfault_handler(int sig) {
  function main (line 85) | int main( int argc, const char** argv )
  function processingThread (line 241) | void processingThread(void* arg)
  function streamRecognitionThread (line 317) | void streamRecognitionThread(void* arg)
  function writeToQueue (line 363) | bool writeToQueue(std::string jsonResult)
  function dataUploadThread (line 391) | void dataUploadThread(void* arg)
  function uploadPost (line 457) | bool uploadPost(CURL* curl, std::string url, std::string data)

FILE: src/daemon/beanstalk.c
  function bs_resolve_address (line 61) | int bs_resolve_address(char *host, int port, struct sockaddr_in *server) {
  function bs_connect (line 80) | int bs_connect(char *host, int port) {
  function bs_connect_with_timeout (line 98) | int bs_connect_with_timeout(char *host, int port, float secs) {
  function bs_disconnect (line 143) | int bs_disconnect(int fd) {
  function bs_free_message (line 148) | void bs_free_message(BSM* m) {
  function bs_free_job (line 156) | void bs_free_job(BSJ *job) {
  function bs_start_polling (line 165) | void bs_start_polling(bs_poll_function f) {
  function bs_reset_polling (line 169) | void bs_reset_polling() {
  function BSM (line 173) | BSM* bs_recv_message(int fd, int expect_data) {
  function bs_send_message (line 267) | ssize_t bs_send_message(int fd, char *message, size_t size) {
  type BSMP (line 273) | typedef struct bs_message_packet {
  function BSMP (line 279) | BSMP* bs_message_packet_new(size_t bytes) {
  function bs_message_packet_append (line 292) | void bs_message_packet_append(BSMP *packet, char *data, size_t bytes) {
  function bs_message_packet_free (line 303) | void bs_message_packet_free(BSMP *packet) {
  function bs_use (line 337) | int bs_use(int fd, char *tube) {
  function bs_watch (line 350) | int bs_watch(int fd, char *tube) {
  function bs_ignore (line 363) | int bs_ignore(int fd, char *tube) {
  function bs_put (line 376) | int64_t bs_put(int fd, uint32_t priority, uint32_t delay, uint32_t ttr, ...
  function bs_delete (line 420) | int bs_delete(int fd, int64_t job) {
  function bs_reserve_job (line 434) | int bs_reserve_job(int fd, char *command, BSJ **result) {
  function bs_reserve (line 470) | int bs_reserve(int fd, BSJ **result) {
  function bs_reserve_with_timeout (line 475) | int bs_reserve_with_timeout(int fd, uint32_t ttl, BSJ **result) {
  function bs_release (line 481) | int bs_release(int fd, int64_t id, uint32_t priority, uint32_t delay) {
  function bs_bury (line 496) | int bs_bury(int fd, int64_t id, uint32_t priority) {
  function bs_touch (line 509) | int bs_touch(int fd, int64_t id) {
  function bs_peek_job (line 522) | int bs_peek_job(int fd, char *command, BSJ **result) {
  function bs_peek (line 549) | int bs_peek(int fd, int64_t id, BSJ **job) {
  function bs_peek_ready (line 555) | int bs_peek_ready(int fd, BSJ **job) {
  function bs_peek_delayed (line 559) | int bs_peek_delayed(int fd, BSJ **job) {
  function bs_peek_buried (line 563) | int bs_peek_buried(int fd, BSJ **job) {
  function bs_kick (line 567) | int bs_kick(int fd, int bound) {
  function bs_list_tube_used (line 579) | int bs_list_tube_used(int fd, char **tube) {
  function bs_get_info (line 594) | int bs_get_info(int fd, char *command, char **yaml) {
  function bs_list_tubes (line 613) | int bs_list_tubes(int fd, char **yaml) {
  function bs_list_tubes_watched (line 619) | int bs_list_tubes_watched(int fd, char **yaml) {
  function bs_stats (line 625) | int bs_stats(int fd, char **yaml) {
  function bs_stats_job (line 631) | int bs_stats_job(int fd, int64_t id, char **yaml) {
  function bs_stats_tube (line 637) | int bs_stats_tube(int fd, char *tube, char **yaml) {
  function bs_version (line 643) | void bs_version(int *major, int *minor, int *patch)

FILE: src/daemon/beanstalk.cc
  type Beanstalk (line 9) | namespace Beanstalk {
    function string (line 31) | string& Job::body() {
    function parsedict (line 41) | void parsedict(stringstream &stream, info_hash_t &dict) {
    function parselist (line 53) | void parselist(stringstream &stream, info_list_t &list) {
    function string (line 230) | string Client::list_tube_used() {
    function info_list_t (line 241) | info_list_t Client::list_tubes() {
    function info_list_t (line 254) | info_list_t Client::list_tubes_watched() {
    function info_hash_t (line 267) | info_hash_t Client::stats() {
    function info_hash_t (line 281) | info_hash_t Client::stats_job(int64_t id) {
    function info_hash_t (line 295) | info_hash_t Client::stats_tube(string name) {

FILE: src/daemon/beanstalk.h
  type BSM (line 32) | typedef struct bs_message {
  type BSJ (line 38) | typedef struct bs_job {

FILE: src/daemon/beanstalk.hpp
  type Beanstalk (line 8) | namespace Beanstalk {
    class Job (line 12) | class Job {
    class Client (line 25) | class Client {

FILE: src/daemon/daemonconfig.h
  function class (line 9) | class DaemonConfig {

FILE: src/inc/safequeue.h
  function push (line 22) | void push(const T& item)
  function empty (line 29) | bool empty()

FILE: src/main.cpp
  function main (line 58) | int main( int argc, const char** argv )
  function is_supported_image (line 330) | bool is_supported_image(std::string image_file)
  function detectandshow (line 338) | bool detectandshow( Alpr* alpr, cv::Mat frame, std::string region, bool ...

FILE: src/misc_utilities/binarizefontsheet.cpp
  function sort_lined_rectangles (line 59) | bool sort_lined_rectangles(Rect i, Rect j) {
  function show_debug_image (line 71) | void show_debug_image(vector<Rect> rectangles, Mat img)
  function main (line 90) | int main(int argc, char** argv) {

FILE: src/misc_utilities/calibrate.cpp
  function string (line 64) | string get_config()
  function drawImage (line 76) | void drawImage(Mat img)
  function mouse_callback (line 115) | void mouse_callback(int event, int x, int y, int flags, void* userdata)
  function ZChange (line 179) | void ZChange(int pos, void* userdata)
  function XChange (line 187) | void XChange(int pos, void* userdata)
  function YChange (line 196) | void YChange(int pos, void* userdata)
  function DistChange (line 204) | void DistChange(int pos, void* userdata)
  function StretchChange (line 211) | void StretchChange(int pos, void* userdata)
  function initialize_variables (line 219) | void initialize_variables()
  function create_window (line 231) | void create_window()
  function main (line 258) | int main(int argc, char** argv) {

FILE: src/misc_utilities/classifychars.cpp
  function main (line 80) | int main( int argc, const char** argv )
  function showDashboard (line 301) | void showDashboard(vector<Mat> images, vector<bool> selectedImages, int ...
  function showCharSelection (line 332) | vector<string> showCharSelection(Mat image, vector<Rect> charRegions, st...

FILE: src/misc_utilities/prepcharsfortraining.cpp
  function main (line 37) | int main( int argc, const char** argv )

FILE: src/misc_utilities/sortstate.cpp
  function main (line 41) | int main( int argc, const char** argv )

FILE: src/misc_utilities/tagplates.cpp
  function mouseCallback (line 86) | void mouseCallback(int event, int x, int y, int flags, void* userdata)
  function main (line 140) | int main( int argc, const char** argv )

FILE: src/openalpr/TRexpp.h
  type TRexParseException (line 34) | struct TRexParseException
  function class (line 39) | class TRexpp

FILE: src/openalpr/alpr.cpp
  type alpr (line 25) | namespace alpr
    function AlprResults (line 40) | AlprResults Alpr::recognize(std::string filepath)
    function AlprResults (line 68) | AlprResults Alpr::recognize(std::vector<char> imageBytes)
    function AlprResults (line 73) | AlprResults Alpr::recognize(std::vector<char> imageBytes, std::vector<...
    function AlprResults (line 78) | AlprResults Alpr::recognize(unsigned char* pixelData, int bytesPerPixe...
    function AlprResults (line 92) | AlprResults Alpr::fromJson(std::string json) {
    function Config (line 134) | Config* Alpr::getConfig()

FILE: src/openalpr/alpr.h
  function namespace (line 33) | namespace alpr
  function class (line 77) | class AlprPlateResult
  function class (line 109) | class AlprResults
  function class (line 132) | class OPENALPR_DLL_EXPORT Alpr

FILE: src/openalpr/alpr_c.cpp
  function OPENALPRC_DLL_EXPORT (line 26) | OPENALPRC_DLL_EXPORT OPENALPR* openalpr_init(const char* country, const ...
  function OPENALPRC_DLL_EXPORT (line 33) | OPENALPRC_DLL_EXPORT int openalpr_is_loaded(OPENALPR* instance)
  function OPENALPRC_DLL_EXPORT (line 39) | OPENALPRC_DLL_EXPORT void openalpr_set_country(OPENALPR* instance, const...
  function OPENALPRC_DLL_EXPORT (line 45) | OPENALPRC_DLL_EXPORT void openalpr_set_prewarp(OPENALPR* instance, const...
  function OPENALPRC_DLL_EXPORT (line 51) | OPENALPRC_DLL_EXPORT void openalpr_set_mask(OPENALPR* instance, unsigned...
  function OPENALPRC_DLL_EXPORT (line 57) | OPENALPRC_DLL_EXPORT void openalpr_set_detect_region(OPENALPR* instance,...
  function OPENALPRC_DLL_EXPORT (line 62) | OPENALPRC_DLL_EXPORT void openalpr_set_topn(OPENALPR* instance, int topN)
  function OPENALPRC_DLL_EXPORT (line 67) | OPENALPRC_DLL_EXPORT void openalpr_set_default_region(OPENALPR* instance...
  function OPENALPRC_DLL_EXPORT (line 76) | OPENALPRC_DLL_EXPORT char* openalpr_recognize_rawimage(OPENALPR* instanc...
  function OPENALPRC_DLL_EXPORT (line 91) | OPENALPRC_DLL_EXPORT char* openalpr_recognize_encodedimage(OPENALPR* ins...
  function OPENALPRC_DLL_EXPORT (line 109) | OPENALPRC_DLL_EXPORT void openalpr_free_response_string(char* response)
  function OPENALPRC_DLL_EXPORT (line 114) | OPENALPRC_DLL_EXPORT void openalpr_cleanup(OPENALPR* instance)

FILE: src/openalpr/alpr_c.h
  type OPENALPR (line 34) | typedef void OPENALPR;
  type AlprCRegionOfInterest (line 36) | struct AlprCRegionOfInterest
  type AlprCRegionOfInterest (line 66) | struct AlprCRegionOfInterest
  type AlprCRegionOfInterest (line 69) | struct AlprCRegionOfInterest

FILE: src/openalpr/alpr_impl.cpp
  type alpr (line 29) | namespace alpr
    function AlprFullDetails (line 86) | AlprFullDetails AlprImpl::recognizeFullDetails(cv::Mat img, std::vecto...
    function AlprFullDetails (line 217) | AlprFullDetails AlprImpl::analyzeSingleCountry(cv::Mat colorImg, cv::M...
    function AlprResults (line 409) | AlprResults AlprImpl::recognize( std::vector<char> imageBytes)
    function AlprResults (line 424) | AlprResults AlprImpl::recognize(std::vector<char> imageBytes, std::vec...
    function AlprResults (line 443) | AlprResults AlprImpl::recognize( unsigned char* pixelData, int bytesPe...
    function AlprResults (line 469) | AlprResults AlprImpl::recognize(cv::Mat img)
    function AlprResults (line 477) | AlprResults AlprImpl::recognize(cv::Mat img, std::vector<cv::Rect> reg...
    function string (line 495) | string AlprImpl::toJson( const AlprResults results )
    function cJSON (line 561) | cJSON* AlprImpl::createJsonObj(const AlprPlateResult* result)
    function AlprResults (line 606) | AlprResults AlprImpl::fromJson(std::string json) {

FILE: src/openalpr/alpr_impl.h
  function namespace (line 60) | namespace alpr

FILE: src/openalpr/binarize_wolf.cpp
  type alpr (line 39) | namespace alpr
    function calcLocalStats (line 47) | double calcLocalStats (Mat &im, Mat &map_m, Mat &map_s, int winx, int ...
    function NiblackSauvolaWolfJolion (line 99) | void NiblackSauvolaWolfJolion (Mat im, Mat output, NiblackVersion vers...

FILE: src/openalpr/binarize_wolf.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/cjson.c
  function cJSON_strcasecmp (line 40) | static int cJSON_strcasecmp(const char *s1,const char *s2)
  function cJSON_InitHooks (line 61) | void cJSON_InitHooks(cJSON_Hooks* hooks)
  function cJSON (line 74) | static cJSON *cJSON_New_Item(void)
  function cJSON_Delete (line 82) | void cJSON_Delete(cJSON *c)
  function parse_hex4 (line 146) | static unsigned parse_hex4(const char *str)
  function cJSON (line 270) | cJSON *cJSON_ParseWithOpts(const char *value,const char **return_parse_e...
  function cJSON (line 286) | cJSON *cJSON_Parse(const char *value) {return cJSON_ParseWithOpts(value,...
  function cJSON_GetArraySize (line 516) | int    cJSON_GetArraySize(cJSON *array)							{cJSON *c=array->child;int...
  function cJSON (line 517) | cJSON *cJSON_GetArrayItem(cJSON *array,int item)				{cJSON *c=array->chi...
  function cJSON (line 518) | cJSON *cJSON_GetObjectItem(cJSON *object,const char *string)	{cJSON *c=o...
  function suffix_object (line 521) | static void suffix_object(cJSON *prev,cJSON *item) {prev->next=item;item...
  function cJSON (line 523) | static cJSON *create_reference(cJSON *item) {cJSON *ref=cJSON_New_Item()...
  function cJSON_AddItemToArray (line 526) | void   cJSON_AddItemToArray(cJSON *array, cJSON *item)						{cJSON *c=ar...
  function cJSON_AddItemToObject (line 527) | void   cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *ite...
  function cJSON_AddItemReferenceToArray (line 528) | void	cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)						{cJSO...
  function cJSON_AddItemReferenceToObject (line 529) | void	cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJS...
  function cJSON (line 531) | cJSON *cJSON_DetachItemFromArray(cJSON *array,int which)			{cJSON *c=arr...
  function cJSON_DeleteItemFromArray (line 533) | void   cJSON_DeleteItemFromArray(cJSON *array,int which)			{cJSON_Delete...
  function cJSON (line 534) | cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string) {int...
  function cJSON_DeleteItemFromObject (line 535) | void   cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJS...
  function cJSON_ReplaceItemInArray (line 538) | void   cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem)		...
  function cJSON_ReplaceItemInObject (line 541) | void   cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON ...
  function cJSON (line 544) | cJSON *cJSON_CreateNull(void)					{cJSON *item=cJSON_New_Item();if(item)...
  function cJSON (line 545) | cJSON *cJSON_CreateTrue(void)					{cJSON *item=cJSON_New_Item();if(item)...
  function cJSON (line 546) | cJSON *cJSON_CreateFalse(void)					{cJSON *item=cJSON_New_Item();if(item...
  function cJSON (line 547) | cJSON *cJSON_CreateBool(int b)					{cJSON *item=cJSON_New_Item();if(item...
  function cJSON (line 548) | cJSON *cJSON_CreateNumber(double num)			{cJSON *item=cJSON_New_Item();if...
  function cJSON (line 549) | cJSON *cJSON_CreateString(const char *string)	{cJSON *item=cJSON_New_Ite...
  function cJSON (line 550) | cJSON *cJSON_CreateArray(void)					{cJSON *item=cJSON_New_Item();if(item...
  function cJSON (line 551) | cJSON *cJSON_CreateObject(void)					{cJSON *item=cJSON_New_Item();if(ite...
  function cJSON (line 554) | cJSON *cJSON_CreateIntArray(const int *numbers,int count)		{int i;cJSON ...
  function cJSON (line 555) | cJSON *cJSON_CreateFloatArray(const float *numbers,int count)	{int i;cJS...
  function cJSON (line 556) | cJSON *cJSON_CreateDoubleArray(const double *numbers,int count)	{int i;c...
  function cJSON (line 557) | cJSON *cJSON_CreateStringArray(const char **strings,int count)	{int i;cJ...
  function cJSON (line 560) | cJSON *cJSON_Duplicate(cJSON *item,int recurse)
  function cJSON_Minify (line 587) | void cJSON_Minify(char *json)

FILE: src/openalpr/cjson.h
  type cJSON (line 42) | typedef struct cJSON
  type cJSON_Hooks (line 56) | typedef struct cJSON_Hooks

FILE: src/openalpr/colorfilter.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/colorfilter.h
  function namespace (line 30) | namespace alpr

FILE: src/openalpr/config.cpp
  type alpr (line 29) | namespace alpr
    function string (line 342) | string Config::getCascadeRuntimeDir()
    function string (line 346) | string Config::getKeypointsRuntimeDir()
    function string (line 350) | string Config::getPostProcessRuntimeDir()
    function string (line 354) | string Config::getTessdataPrefix()

FILE: src/openalpr/config.h
  function namespace (line 30) | namespace alpr

FILE: src/openalpr/config_helper.cpp
  type alpr (line 27) | namespace alpr
    function getFloat (line 30) | float getFloat(CSimpleIniA* ini, string section, string key, float def...
    function getAllFloats (line 51) | std::vector<float> getAllFloats(CSimpleIniA* ini, string section, stri...
    function getInt (line 76) | int getInt(CSimpleIniA* ini, string section, string key, int defaultVa...
    function getBoolean (line 90) | bool getBoolean(CSimpleIniA* ini, string section, string key, bool def...
    function string (line 104) | string getString(CSimpleIniA* ini, string section, string key, string ...
    function hasValue (line 119) | bool hasValue(CSimpleIniA* ini, std::string section, std::string key)
    function getInt (line 126) | int getInt(CSimpleIniA* ini, CSimpleIniA* defaultIni, std::string sect...
    function getFloat (line 138) | float getFloat(CSimpleIniA* ini, CSimpleIniA* defaultIni, std::string ...
    function getString (line 150) | std::string getString(CSimpleIniA* ini, CSimpleIniA* defaultIni, std::...
    function getBoolean (line 161) | bool getBoolean(CSimpleIniA* ini, CSimpleIniA* defaultIni, std::string...

FILE: src/openalpr/config_helper.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/detection/detector.cpp
  type alpr (line 25) | namespace alpr
    function rectHasLargerArea (line 207) | bool rectHasLargerArea(cv::Rect a, cv::Rect b) { return a.area() < b.a...

FILE: src/openalpr/detection/detector.h
  function namespace (line 34) | namespace alpr

FILE: src/openalpr/detection/detector_types.h
  function namespace (line 23) | namespace alpr

FILE: src/openalpr/detection/detectorcpu.cpp
  type alpr (line 27) | namespace alpr

FILE: src/openalpr/detection/detectorcpu.h
  function namespace (line 32) | namespace alpr

FILE: src/openalpr/detection/detectorcuda.h
  function namespace (line 43) | namespace alpr

FILE: src/openalpr/detection/detectorfactory.cpp
  type alpr (line 5) | namespace alpr
    function Detector (line 7) | Detector* createDetector(Config* config, PreWarp* prewarp)

FILE: src/openalpr/detection/detectorfactory.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/detection/detectormask.cpp
  type alpr (line 26) | namespace alpr
    function Mat (line 140) | Mat DetectorMask::apply_mask(Mat image) {

FILE: src/openalpr/detection/detectormask.h
  function namespace (line 28) | namespace alpr

FILE: src/openalpr/detection/detectormorph.cpp
  type alpr (line 25) | namespace alpr {

FILE: src/openalpr/detection/detectormorph.h
  function namespace (line 32) | namespace alpr {

FILE: src/openalpr/detection/detectorocl.cpp
  type alpr (line 31) | namespace alpr

FILE: src/openalpr/detection/detectorocl.h
  function namespace (line 35) | namespace alpr

FILE: src/openalpr/edges/edgefinder.cpp
  type alpr (line 27) | namespace alpr

FILE: src/openalpr/edges/edgefinder.h
  function namespace (line 29) | namespace alpr

FILE: src/openalpr/edges/platecorners.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/edges/platecorners.h
  function namespace (line 43) | namespace alpr

FILE: src/openalpr/edges/platelines.cpp
  type alpr (line 27) | namespace alpr
    function Mat (line 220) | Mat PlateLines::customGrayscaleConversion(Mat src)

FILE: src/openalpr/edges/platelines.h
  function namespace (line 30) | namespace alpr

FILE: src/openalpr/edges/scorekeeper.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/edges/scorekeeper.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/edges/textlinecollection.cpp
  type alpr (line 13) | namespace alpr

FILE: src/openalpr/edges/textlinecollection.h
  function namespace (line 16) | namespace alpr

FILE: src/openalpr/licenseplatecandidate.cpp
  type alpr (line 29) | namespace alpr

FILE: src/openalpr/licenseplatecandidate.h
  function namespace (line 37) | namespace alpr

FILE: src/openalpr/motiondetector.cpp
  type alpr (line 5) | namespace alpr

FILE: src/openalpr/motiondetector.h
  function namespace (line 8) | namespace alpr

FILE: src/openalpr/ocr/ocr.cpp
  type alpr (line 22) | namespace alpr

FILE: src/openalpr/ocr/ocr.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/ocr/ocrfactory.cpp
  type alpr (line 4) | namespace alpr
    function OCR (line 6) | OCR* createOcr(Config* config)

FILE: src/openalpr/ocr/ocrfactory.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/ocr/segmentation/charactersegmenter.cpp
  type alpr (line 27) | namespace alpr
    function Mat (line 791) | Mat CharacterSegmenter::filterEdgeBoxes(vector<Mat> thresholds, const ...
    function Mat (line 1062) | Mat CharacterSegmenter::getCharBoxMask(Mat img_threshold, vector<Rect>...

FILE: src/openalpr/ocr/segmentation/charactersegmenter.h
  function namespace (line 32) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogram.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogram.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogramhorizontal.cpp
  type alpr (line 22) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogramhorizontal.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogramvertical.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/ocr/segmentation/histogramvertical.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/ocr/segmentation/segment.cpp
  type alpr (line 22) | namespace alpr

FILE: src/openalpr/ocr/segmentation/segment.h
  function namespace (line 25) | namespace alpr

FILE: src/openalpr/ocr/segmentation/segmentationgroup.cpp
  type alpr (line 22) | namespace alpr

FILE: src/openalpr/ocr/segmentation/segmentationgroup.h
  function namespace (line 29) | namespace alpr

FILE: src/openalpr/ocr/tesseract_ocr.cpp
  type alpr (line 29) | namespace alpr

FILE: src/openalpr/ocr/tesseract_ocr.h
  function namespace (line 37) | namespace alpr

FILE: src/openalpr/pipeline_data.cpp
  type alpr (line 6) | namespace alpr

FILE: src/openalpr/pipeline_data.h
  function namespace (line 12) | namespace alpr

FILE: src/openalpr/postprocess/postprocess.cpp
  type alpr (line 28) | namespace alpr
    type PermutationCompare (line 289) | struct PermutationCompare {
    function letterCompare (line 425) | bool letterCompare( const Letter &left, const Letter &right )

FILE: src/openalpr/postprocess/postprocess.h
  function namespace (line 34) | namespace alpr

FILE: src/openalpr/postprocess/regexrule.cpp
  type alpr (line 29) | namespace alpr

FILE: src/openalpr/postprocess/regexrule.h
  function namespace (line 29) | namespace alpr

FILE: src/openalpr/prewarp.cpp
  type alpr (line 28) | namespace alpr
    function Rect (line 193) | Rect PreWarp::projectRect(Rect rect, int maxWidth, int maxHeight, bool...

FILE: src/openalpr/prewarp.h
  function namespace (line 29) | namespace alpr

FILE: src/openalpr/result_aggregator.cpp
  type alpr (line 27) | namespace alpr
    function compareScore (line 83) | bool compareScore(const std::pair<float, ResultPlateScore>& firstElem,...
    function AlprFullDetails (line 87) | AlprFullDetails ResultAggregator::getAggregateResults()
    function ResultRegionScore (line 258) | ResultRegionScore ResultAggregator::findBestRegion(std::vector<AlprPla...
    function PlateShapeInfo (line 340) | PlateShapeInfo ResultAggregator::getShapeInfo(AlprPlateResult plate)

FILE: src/openalpr/result_aggregator.h
  type PlateShapeInfo (line 29) | struct PlateShapeInfo
  function namespace (line 37) | namespace alpr

FILE: src/openalpr/simpleini/ConvertUTF.c
  function ConversionResult (line 77) | ConversionResult ConvertUTF32toUTF16 (
  function ConversionResult (line 126) | ConversionResult ConvertUTF16toUTF32 (
  function ConversionResult (line 230) | ConversionResult ConvertUTF16toUTF8 (
  function Boolean (line 311) | static Boolean isLegalUTF8(const UTF8 *source, int length) {
  function Boolean (line 342) | Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
  function ConversionResult (line 352) | ConversionResult ConvertUTF8toUTF16 (
  function ConversionResult (line 425) | ConversionResult ConvertUTF32toUTF8 (
  function ConversionResult (line 478) | ConversionResult ConvertUTF8toUTF32 (

FILE: src/openalpr/simpleini/ConvertUTF.h
  type UTF32 (line 106) | typedef unsigned int	UTF32;
  type UTF16 (line 107) | typedef unsigned short	UTF16;
  type UTF8 (line 108) | typedef unsigned char	UTF8;
  type Boolean (line 109) | typedef unsigned char	Boolean;
  type ConversionResult (line 118) | typedef enum
  type ConversionFlags (line 126) | typedef enum

FILE: src/openalpr/simpleini/simpleini.h
  type SI_Error (line 234) | enum SI_Error
  type Entry (line 298) | struct Entry
  function operator (line 328) | bool operator<(const Entry & rhs) const
  function operator (line 332) | bool operator>(const Entry & rhs) const
  type KeyOrder (line 339) | struct KeyOrder
  type LoadOrder (line 349) | struct LoadOrder
  type std (line 363) | typedef std::multimap<Entry,const
  type std (line 366) | typedef std::map<Entry,TKeyVal,typename
  type std (line 371) | typedef std::list<Entry> TNamesDepend;
  function class (line 376) | class OutputWriter
  function class (line 388) | class FileWriter : public OutputWriter
  function class (line 403) | class StringWriter : public OutputWriter
  function class (line 419) | class StreamWriter : public OutputWriter
  function class (line 437) | class Converter : private SI_CONVERTER
  function ConvertToStore (line 454) | bool ConvertToStore(const SI_CHAR * a_pszString)
  function SI_Error (line 654) | SI_Error LoadData(const std::string & a_strData)
  function IsSpace (line 1215) | inline bool IsSpace(SI_CHAR ch) const
  function IsComment (line 1221) | inline bool IsComment(SI_CHAR ch) const
  function SkipNewLine (line 1227) | inline void SkipNewLine(SI_CHAR *& a_pData) const
  function IsLess (line 1239) | bool IsLess(const SI_CHAR * a_pLeft, const SI_CHAR * a_pRight) const
  type typename (line 1949) | typedef typename TSection::iterator SectionIterator;
  function const (line 2716) | bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const
  function SI_CHAR (line 2740) | inline SI_CHAR locase(SI_CHAR ch) const
  function const (line 2744) | bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const
  function SizeFromStore (line 2795) | size_t SizeFromStore(
  function ConvertFromStore (line 2818) | bool ConvertFromStore(
  function SizeToStore (line 2843) | size_t SizeToStore(
  function ConvertToStore (line 2863) | bool ConvertToStore(
  function SizeFromStore (line 2928) | size_t SizeFromStore(
  function ConvertFromStore (line 2964) | bool ConvertFromStore(
  function SizeToStore (line 3013) | size_t SizeToStore(
  function ConvertToStore (line 3050) | bool ConvertToStore(
  function SizeFromStore (line 3156) | size_t SizeFromStore(
  function ConvertFromStore (line 3194) | bool ConvertFromStore(
  function SizeToStore (line 3231) | size_t SizeToStore(
  function ConvertToStore (line 3267) | bool ConvertToStore(
  function const (line 3326) | bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const
  function SizeFromStore (line 3385) | size_t SizeFromStore(
  function ConvertFromStore (line 3410) | bool ConvertFromStore(
  function SizeToStore (line 3433) | size_t SizeToStore(
  function ConvertToStore (line 3456) | bool ConvertToStore(
  type CSimpleIniTempl (line 3475) | typedef CSimpleIniTempl<char,
  type CSimpleIniTempl (line 3477) | typedef CSimpleIniTempl<char,
  type CSimpleIniTempl (line 3481) | typedef CSimpleIniTempl<UChar,
  type CSimpleIniTempl (line 3483) | typedef CSimpleIniTempl<UChar,
  type CSimpleIniTempl (line 3486) | typedef CSimpleIniTempl<wchar_t,
  type CSimpleIniTempl (line 3488) | typedef CSimpleIniTempl<wchar_t,

FILE: src/openalpr/simpleini/snippets.cpp
  function snippets (line 20) | bool

FILE: src/openalpr/support/fast_mutex.h
  function lock (line 120) | inline void lock()

FILE: src/openalpr/support/filesystem.cpp
  type alpr (line 10) | namespace alpr
    function startsWith (line 13) | bool startsWith(std::string const &fullString, std::string const &prefix)
    function hasEnding (line 22) | bool hasEnding (std::string const &fullString, std::string const &ending)
    function hasEndingInsensitive (line 38) | bool hasEndingInsensitive(const std::string& fullString, const std::st...
    function DirectoryExists (line 51) | bool DirectoryExists( const char* pzPath )
    function fileExists (line 69) | bool fileExists( const char* pzPath )
    function getFilesInDir (line 80) | std::vector<std::string> getFilesInDir(const char* dirPath)
    function stringCompare (line 107) | bool stringCompare( const std::string &left, const std::string &right )
    function filenameWithoutExtension (line 119) | std::string filenameWithoutExtension(std::string filename)
    function get_filename_from_path (line 132) | std::string get_filename_from_path(std::string file_path)
    function get_directory_from_path (line 145) | std::string get_directory_from_path(std::string file_path)
    function makeDir (line 163) | static int makeDir(const char *path, mode_t mode) { return 0; }
    function makePath (line 164) | bool makePath(const char* path, mode_t mode) {
    function FileInfo (line 173) | FileInfo getFileInfo(std::string filename) {
    function FileInfo (line 182) | FileInfo getFileInfo(std::string filename)
    function makeDir (line 210) | static int makeDir(const char *path, mode_t mode)
    function makePath (line 236) | bool makePath(const char* path, mode_t mode)

FILE: src/openalpr/support/filesystem.h
  type mode_t (line 10) | typedef int mode_t;
  function namespace (line 21) | namespace alpr

FILE: src/openalpr/support/platform.cpp
  type alpr (line 3) | namespace alpr
    function sleep_ms (line 6) | void sleep_ms(int sleepMs)
    function getExeDir (line 15) | std::string getExeDir()

FILE: src/openalpr/support/platform.h
  function namespace (line 13) | namespace alpr

FILE: src/openalpr/support/re2.h
  function namespace (line 192) | namespace re2 {
  type Anchor (line 439) | enum Anchor {
  function class (line 514) | class Options {
  function class (line 769) | class RE2::Arg {
  function RE2 (line 850) | inline RE2::Arg::Arg() : arg_(NULL), parser_(parse_null) { }

FILE: src/openalpr/support/re2/bitstate.cc
  type re2 (line 23) | namespace re2 {
    type Job (line 25) | struct Job {
    class BitState (line 31) | class BitState {

FILE: src/openalpr/support/re2/compile.cc
  type re2 (line 16) | namespace re2 {
    type PatchList (line 30) | struct PatchList {
    function PatchList (line 50) | PatchList PatchList::Mk(uint32 p) {
    function PatchList (line 57) | PatchList PatchList::Deref(Prog::Inst* inst0, PatchList l) {
    function PatchList (line 81) | PatchList PatchList::Append(Prog::Inst* inst0, PatchList l1, PatchList...
    type Frag (line 105) | struct Frag {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    type Encoding (line 114) | enum Encoding {
    class Compiler (line 119) | class Compiler : public Regexp::Walker<Frag> {
    function Frag (line 293) | Frag Compiler::NoMatch() {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function IsNoMatch (line 298) | static bool IsNoMatch(Frag a) {
    function Frag (line 303) | Frag Compiler::Cat(Frag a, Frag b) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 327) | Frag Compiler::Alt(Frag a, Frag b) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 350) | Frag Compiler::Star(Frag a, bool nongreedy) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 366) | Frag Compiler::Plus(Frag a, bool nongreedy) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 373) | Frag Compiler::Quest(Frag a, bool nongreedy) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 391) | Frag Compiler::ByteRange(int lo, int hi, bool foldcase) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 410) | Frag Compiler::Nop() {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 419) | Frag Compiler::Match(int32 match_id) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 428) | Frag Compiler::EmptyWidth(EmptyOp empty) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 447) | Frag Compiler::Capture(Frag a, int n) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function MaxRune (line 462) | static int MaxRune(int len) {
    function Frag (line 533) | Frag Compiler::EndRange() {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    type ByteRangeProg (line 571) | struct ByteRangeProg {
    function Frag (line 671) | Frag Compiler::Copy(Frag arg) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 680) | Frag Compiler::ShortVisit(Regexp* re, Frag) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 686) | Frag Compiler::PreVisit(Regexp* re, Frag, bool* stop) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 694) | Frag Compiler::Literal(Rune r, bool foldcase) {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Frag (line 717) | Frag Compiler::PostVisit(Regexp* re, Frag, Frag, Frag* child_frags,
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function IsAnchorStart (line 863) | static bool IsAnchorStart(Regexp** pre, int depth) {
    function IsAnchorEnd (line 911) | static bool IsAnchorEnd(Regexp** pre, int depth) {
    function Prog (line 996) | Prog* Compiler::Compile(Regexp* re, bool reversed, int64 max_mem) {
    function Prog (line 1048) | Prog* Compiler::Finish() {
    function Prog (line 1084) | Prog* Regexp::CompileToProg(int64 max_mem) {
    function Prog (line 1088) | Prog* Regexp::CompileToReverseProg(int64 max_mem) {
    function Frag (line 1092) | Frag Compiler::DotStar() {
      method Frag (line 109) | Frag() : begin(0) { end.p = 0; }
      method Frag (line 110) | Frag(uint32 begin, PatchList end) : begin(begin), end(end) {}
    function Prog (line 1097) | Prog* Compiler::CompileSet(const RE2::Options& options, RE2::Anchor an...
    function Prog (line 1139) | Prog* Prog::CompileSet(const RE2::Options& options, RE2::Anchor anchor,

FILE: src/openalpr/support/re2/dfa.cc
  type re2 (line 57) | namespace re2 {
    class DFA (line 78) | class DFA {
      method ok (line 82) | bool ok() const { return !init_failed_; }
      method kind (line 83) | Prog::MatchKind kind() { return kind_; }
      class Workq (line 112) | class Workq
      class RWLocker (line 113) | class RWLocker
      class StateSaver (line 114) | class StateSaver
      type State (line 119) | struct State {
        method IsMatch (line 120) | inline bool IsMatch() const { return flag_ & kFlagMatch; }
      type StateEqual (line 143) | struct StateEqual {
      type StateHash (line 160) | struct StateHash {
      type SearchParams (line 274) | struct SearchParams {
        method SearchParams (line 275) | SearchParams(const StringPiece& text, const StringPiece& context,
      type StartInfo (line 307) | struct StartInfo {
        method StartInfo (line 308) | StartInfo() : start(NULL), firstbyte(kFbUnknown) { }
      method ByteMap (line 357) | int ByteMap(int c) {
    function uint8 (line 391) | static inline const uint8* BytePtr(const void* v) {
    class DFA::Workq (line 406) | class DFA::Workq : public SparseSet {
      method Workq (line 409) | Workq(int n, int maxmark) :
      method is_mark (line 417) | bool is_mark(int i) { return i >= n_; }
      method maxmark (line 419) | int maxmark() { return maxmark_; }
      method clear (line 421) | void clear() {
      method mark (line 426) | void mark() {
      method size (line 433) | int size() {
      method insert (line 437) | void insert(int id) {
      method insert_new (line 443) | void insert_new(int id) {
    function string (line 526) | string DFA::DumpWorkq(Workq* q) {
    function string (line 542) | string DFA::DumpState(State* state) {
    class DFA::RWLocker (line 1105) | class DFA::RWLocker {
      method IsLockedForWriting (line 1117) | bool IsLockedForWriting() {
    class DFA::StateSaver (line 1204) | class DFA::StateSaver {
    function DeleteDFA (line 1816) | static void DeleteDFA(DFA* dfa) {
    function DFA (line 1820) | DFA* Prog::GetDFA(MatchKind kind) {
      method ok (line 82) | bool ok() const { return !init_failed_; }
      method kind (line 83) | Prog::MatchKind kind() { return kind_; }
      class Workq (line 112) | class Workq
      class RWLocker (line 113) | class RWLocker
      class StateSaver (line 114) | class StateSaver
      type State (line 119) | struct State {
        method IsMatch (line 120) | inline bool IsMatch() const { return flag_ & kFlagMatch; }
      type StateEqual (line 143) | struct StateEqual {
      type StateHash (line 160) | struct StateHash {
      type SearchParams (line 274) | struct SearchParams {
        method SearchParams (line 275) | SearchParams(const StringPiece& text, const StringPiece& context,
      type StartInfo (line 307) | struct StartInfo {
        method StartInfo (line 308) | StartInfo() : start(NULL), firstbyte(kFbUnknown) { }
      method ByteMap (line 357) | int ByteMap(int c) {

FILE: src/openalpr/support/re2/filtered_re2.cc
  type re2 (line 11) | namespace re2 {

FILE: src/openalpr/support/re2/filtered_re2.h
  function namespace (line 27) | namespace re2 {

FILE: src/openalpr/support/re2/mimics_pcre.cc
  type re2 (line 29) | namespace re2 {
    class PCREWalker (line 37) | class PCREWalker : public Regexp::Walker<bool> {
      method PCREWalker (line 39) | PCREWalker() {}
      method ShortVisit (line 43) | bool ShortVisit(Regexp* re, bool a) {
    class EmptyStringWalker (line 114) | class EmptyStringWalker : public Regexp::Walker<bool> {
      method EmptyStringWalker (line 116) | EmptyStringWalker() { }
      method ShortVisit (line 120) | bool ShortVisit(Regexp* re, bool a) {
    function CanBeEmptyString (line 180) | static bool CanBeEmptyString(Regexp* re) {

FILE: src/openalpr/support/re2/nfa.cc
  type re2 (line 34) | namespace re2 {
    class NFA (line 36) | class NFA {
      type Thread (line 59) | struct Thread {
      type AddState (line 68) | struct AddState {
        method AddState (line 73) | AddState()
        method AddState (line 75) | explicit AddState(int id)
        method AddState (line 77) | AddState(int id, const char* cap_j, int j)
    function string (line 380) | string NFA::FormatCapture(const char** capture) {
    function StringPieceContains (line 397) | static bool StringPieceContains(const StringPiece haystack, const Stri...

FILE: src/openalpr/support/re2/onepass.cc
  type re2 (line 60) | namespace re2 {
    type OneState (line 132) | struct OneState {
    function OnePass_Checks (line 170) | void OnePass_Checks() {
    function Satisfy (line 178) | static bool Satisfy(uint32 cond, const StringPiece& context, const cha...
    function ApplyCaptures (line 187) | static void ApplyCaptures(uint32 cond, const char* p,
    function OneState (line 197) | static inline OneState* IndexToNode(volatile uint8* nodes, int statesize,
    function AddQ (line 345) | static bool AddQ(Instq *q, int id) {
    type InstCond (line 354) | struct InstCond {

FILE: src/openalpr/support/re2/parse.cc
  type re2 (line 26) | namespace re2 {
    class Regexp::ParseState (line 47) | class Regexp::ParseState {
      method ParseFlags (line 53) | ParseFlags flags() { return flags_; }
      method rune_max (line 54) | int rune_max() { return rune_max_; }
    function Regexp (line 195) | Regexp* Regexp::ParseState::FinishRegexp(Regexp* re) {
    function CaseFold (line 247) | const CaseFold* LookupCaseFold(const CaseFold *f, int n, Rune r) {
    function Rune (line 275) | Rune ApplyFold(const CaseFold *f, Rune r) {
    function Rune (line 310) | Rune CycleFoldRune(Rune r) {
    function AddFoldedRange (line 320) | static void AddFoldedRange(CharClassBuilder* cc, Rune lo, Rune hi, int...
    class RepetitionWalker (line 478) | class RepetitionWalker : public Regexp::Walker<int> {
      method RepetitionWalker (line 480) | RepetitionWalker() {}
    function AddLiteral (line 582) | static void AddLiteral(CharClassBuilder* cc, Rune r, bool foldascii) {
    function Regexp (line 690) | Regexp* Regexp::ParseState::DoFinish() {
    function Regexp (line 705) | Regexp* Regexp::LeadingRegexp(Regexp* re) {
    function Regexp (line 721) | Regexp* Regexp::RemoveLeadingRegexp(Regexp* re) {
    function Rune (line 750) | Rune* Regexp::LeadingString(Regexp* re, int *nrune,
    function ParseInteger (line 1185) | static bool ParseInteger(StringPiece* s, int* np) {
    function MaybeParseRepetition (line 1213) | static bool MaybeParseRepetition(StringPiece* sp, int* lo, int* hi) {
    function StringPieceToRune (line 1250) | static int StringPieceToRune(Rune *r, StringPiece *sp, RegexpStatus* s...
    function IsValidUTF8 (line 1275) | static bool IsValidUTF8(const StringPiece& s, RegexpStatus* status) {
    function IsHex (line 1286) | static int IsHex(int c) {
    function UnHex (line 1293) | static int UnHex(int c) {
    function ParseEscape (line 1307) | static bool ParseEscape(StringPiece* s, Rune* rp,
    function UGroup (line 1479) | static const UGroup* LookupGroup(const StringPiece& name,
    function UGroup (line 1494) | static const UGroup* LookupPosixGroup(const StringPiece& name) {
    function UGroup (line 1498) | static const UGroup* LookupPerlGroup(const StringPiece& name) {
    function UGroup (line 1503) | static const UGroup* LookupUnicodeGroup(const StringPiece& name) {
    function AddUGroup (line 1511) | static void AddUGroup(CharClassBuilder *cc, const UGroup *g, int sign,
    function UGroup (line 1562) | const UGroup* MaybeParsePerlCCEscape(StringPiece* s, Regexp::ParseFlag...
    type ParseStatus (line 1577) | enum ParseStatus {
    function ParseStatus (line 1585) | ParseStatus ParseUnicodeGroup(StringPiece* s, Regexp::ParseFlags parse...
    function ParseStatus (line 1649) | static ParseStatus ParseCCName(StringPiece* s, Regexp::ParseFlags pars...
    function IsValidCaptureName (line 1846) | static bool IsValidCaptureName(const StringPiece& name) {
    function ConvertLatin1ToUTF8 (line 2011) | void ConvertLatin1ToUTF8(const StringPiece& latin1, string* utf) {
    function Regexp (line 2026) | Regexp* Regexp::Parse(const StringPiece& s, ParseFlags global_flags,

FILE: src/openalpr/support/re2/perl_groups.cc
  type re2 (line 6) | namespace re2 {

FILE: src/openalpr/support/re2/prefilter.cc
  type re2 (line 14) | namespace re2 {
    function Prefilter (line 48) | Prefilter* Prefilter::Simplify() {
    function Prefilter (line 77) | Prefilter* Prefilter::AndOr(Op op, Prefilter* a, Prefilter* b) {
    function Prefilter (line 137) | Prefilter* Prefilter::And(Prefilter* a, Prefilter* b) {
    function Prefilter (line 141) | Prefilter* Prefilter::Or(Prefilter* a, Prefilter* b) {
    function SimplifyStringSet (line 145) | static void SimplifyStringSet(set<string> *ss) {
    function Prefilter (line 166) | Prefilter* Prefilter::OrStrings(set<string>* ss) {
    function Rune (line 177) | static Rune ToLowerRune(Rune r) {
    function Rune (line 190) | static Rune ToLowerRuneLatin1(Rune r) {
    function Prefilter (line 196) | Prefilter* Prefilter::FromString(const string& str) {
    class Prefilter::Info (line 205) | class Prefilter::Info {
      method is_exact (line 233) | bool is_exact() const { return is_exact_; }
      class Walker (line 235) | class Walker
    function Prefilter (line 262) | Prefilter* Prefilter::Info::TakeMatch() {
    function string (line 273) | string Prefilter::Info::ToString() {
    function CopyIn (line 292) | static void CopyIn(const set<string>& src, set<string>* dst) {
    function CrossProduct (line 299) | static void CrossProduct(const set<string>& a,
    function string (line 392) | static string RuneToString(Rune r) {
    function string (line 398) | static string RuneToStringLatin1(Rune r) {
    class Prefilter::Info::Walker (line 485) | class Prefilter::Info::Walker : public Regexp::Walker<Prefilter::Info*> {
      method Walker (line 487) | Walker(bool latin1) : latin1_(latin1) {}
      method latin1 (line 498) | bool latin1() { return latin1_; }
    function Prefilter (line 648) | Prefilter* Prefilter::FromRegexp(Regexp* re) {
    function string (line 665) | string Prefilter::DebugString() const {
    function Prefilter (line 700) | Prefilter* Prefilter::FromRE2(const RE2* re2) {

FILE: src/openalpr/support/re2/prefilter.h
  function namespace (line 17) | namespace re2 {

FILE: src/openalpr/support/re2/prefilter_tree.cc
  type re2 (line 19) | namespace re2 {
    function KeepPart (line 35) | static bool KeepPart(Prefilter* prefilter, int level) {
    function Prefilter (line 135) | Prefilter* PrefilterTree::CanonicalNode(Prefilter* node) {
    function string (line 143) | static string Itoa(int n) {
    function string (line 149) | string PrefilterTree::NodeString(Prefilter* node) const {
    function string (line 383) | string PrefilterTree::DebugNodeString(Prefilter* node) const {

FILE: src/openalpr/support/re2/prefilter_tree.h
  function namespace (line 25) | namespace re2 {

FILE: src/openalpr/support/re2/prog.cc
  type re2 (line 13) | namespace re2 {
    function string (line 59) | string Prog::Inst::Dump() {
    function AddToQueue (line 129) | static inline void AddToQueue(Workq* q, int id) {
    function string (line 134) | static string ProgToString(Prog* prog, Workq* q) {
    function string (line 148) | string Prog::Dump() {
    function string (line 165) | string Prog::DumpUnanchored() {
    function IsMatch (line 238) | static bool IsMatch(Prog* prog, Prog::Inst* ip) {
    function uint32 (line 263) | uint32 Prog::EmptyFlags(const StringPiece& text, const char* p) {

FILE: src/openalpr/support/re2/prog.h
  function namespace (line 18) | namespace re2 {
  function set_dfa_mem (line 211) | void set_dfa_mem(int64 dfa_mem) { dfa_mem_ = dfa_mem; }
  function int64 (line 212) | int64 dfa_mem() { return dfa_mem_; }
  function flags (line 213) | int flags() { return flags_; }
  function set_flags (line 214) | void set_flags(int flags) { flags_ = flags; }
  function anchor_start (line 215) | bool anchor_start() { return anchor_start_; }
  function set_anchor_start (line 216) | void set_anchor_start(bool b) { anchor_start_ = b; }
  function anchor_end (line 217) | bool anchor_end() { return anchor_end_; }
  function set_anchor_end (line 218) | void set_anchor_end(bool b) { anchor_end_ = b; }
  function bytemap_range (line 219) | int bytemap_range() { return bytemap_range_; }
  function uint8 (line 220) | const uint8* bytemap() { return bytemap_; }
  function IsWordChar (line 243) | static bool IsWordChar(uint8 c) {

FILE: src/openalpr/support/re2/re2.cc
  type re2 (line 26) | namespace re2 {
    function InitEmpty (line 65) | static void InitEmpty() {
    function RegexpErrorToRE2 (line 78) | static RE2::ErrorCode RegexpErrorToRE2(re2::RegexpStatusCode code) {
    function string (line 112) | static string trunc(const StringPiece& pattern) {
    function string (line 449) | string RE2::QuoteMeta(const StringPiece& unquoted) {
    function ascii_strcasecmp (line 532) | static int ascii_strcasecmp(const char* a, const char* b, int len) {
    function parse_double_float (line 1187) | static bool parse_double_float(const char* str, int n, bool isfloat, v...

FILE: src/openalpr/support/re2/regexp.cc
  type re2 (line 19) | namespace re2 {
    function Regexp (line 86) | Regexp* Regexp::Incref() {
    function Regexp (line 183) | Regexp* Regexp::HaveMatch(int match_id, ParseFlags flags) {
    function Regexp (line 189) | Regexp* Regexp::Plus(Regexp* sub, ParseFlags flags) {
    function Regexp (line 198) | Regexp* Regexp::Star(Regexp* sub, ParseFlags flags) {
    function Regexp (line 207) | Regexp* Regexp::Quest(Regexp* sub, ParseFlags flags) {
    function Regexp (line 216) | Regexp* Regexp::ConcatOrAlternate(RegexpOp op, Regexp** sub, int nsub,
    function Regexp (line 268) | Regexp* Regexp::Concat(Regexp** sub, int nsub, ParseFlags flags) {
    function Regexp (line 272) | Regexp* Regexp::Alternate(Regexp** sub, int nsub, ParseFlags flags) {
    function Regexp (line 276) | Regexp* Regexp::AlternateNoFactor(Regexp** sub, int nsub, ParseFlags f...
    function Regexp (line 280) | Regexp* Regexp::Capture(Regexp* sub, ParseFlags flags, int cap) {
    function Regexp (line 288) | Regexp* Regexp::Repeat(Regexp* sub, ParseFlags flags, int min, int max) {
    function Regexp (line 297) | Regexp* Regexp::NewLiteral(Rune rune, ParseFlags flags) {
    function Regexp (line 303) | Regexp* Regexp::LiteralString(Rune* runes, int nrunes, ParseFlags flag...
    function Regexp (line 314) | Regexp* Regexp::NewCharClass(CharClass* cc, ParseFlags flags) {
    function TopEqual (line 330) | static bool TopEqual(Regexp* a, Regexp* b) {
    function string (line 492) | string RegexpStatus::CodeText(enum RegexpStatusCode code) {
    function string (line 498) | string RegexpStatus::Text() const {
    class NumCapturesWalker (line 516) | class NumCapturesWalker : public Regexp::Walker<Ignored> {
      method NumCapturesWalker (line 518) | NumCapturesWalker() : ncapture_(0) {}
      method ncapture (line 519) | int ncapture() { return ncapture_; }
      method Ignored (line 521) | virtual Ignored PreVisit(Regexp* re, Ignored ignored, bool* stop) {
      method Ignored (line 526) | virtual Ignored ShortVisit(Regexp* re, Ignored ignored) {
    class NamedCapturesWalker (line 544) | class NamedCapturesWalker : public Regexp::Walker<Ignored> {
      method NamedCapturesWalker (line 546) | NamedCapturesWalker() : map_(NULL) {}
      method Ignored (line 555) | Ignored PreVisit(Regexp* re, Ignored ignored, bool* stop) {
      method Ignored (line 570) | virtual Ignored ShortVisit(Regexp* re, Ignored ignored) {
    class CaptureNamesWalker (line 588) | class CaptureNamesWalker : public Regexp::Walker<Ignored> {
      method CaptureNamesWalker (line 590) | CaptureNamesWalker() : map_(NULL) {}
      method Ignored (line 599) | Ignored PreVisit(Regexp* re, Ignored ignored, bool* stop) {
      method Ignored (line 610) | virtual Ignored ShortVisit(Regexp* re, Ignored ignored) {
    function CharClassBuilder (line 794) | CharClassBuilder* CharClassBuilder::Copy() {
    function CharClass (line 878) | CharClass* CharClass::New(int maxranges) {
    function CharClass (line 894) | CharClass* CharClass::Negate() {
    function CharClass (line 931) | CharClass* CharClassBuilder::GetCharClass() {

FILE: src/openalpr/support/re2/regexp.h
  function namespace (line 95) | namespace re2 {
  function class (line 270) | class Regexp {
  type std (line 578) | typedef std::set<RuneRange, RuneRangeLess> RuneRangeSet;
  function class (line 580) | class CharClassBuilder {
  function Regexp (line 627) | inline Regexp::ParseFlags operator~(Regexp::ParseFlags a)

FILE: src/openalpr/support/re2/set.h
  function namespace (line 13) | namespace re2 {

FILE: src/openalpr/support/re2/simplify.cc
  type re2 (line 13) | namespace re2 {
    class SimplifyWalker (line 105) | class SimplifyWalker : public Regexp::Walker<Regexp*> {
      method SimplifyWalker (line 107) | SimplifyWalker() {}
    function Regexp (line 147) | Regexp* Regexp::Simplify() {
    function Regexp (line 156) | Regexp* SimplifyWalker::Copy(Regexp* re) {
    function Regexp (line 160) | Regexp* SimplifyWalker::ShortVisit(Regexp* re, Regexp* parent_arg) {
    function Regexp (line 167) | Regexp* SimplifyWalker::PreVisit(Regexp* re, Regexp* parent_arg, bool*...
    function Regexp (line 175) | Regexp* SimplifyWalker::PostVisit(Regexp* re,
    function Regexp (line 299) | Regexp* SimplifyWalker::Concat2(Regexp* re1, Regexp* re2,
    function Regexp (line 315) | Regexp* SimplifyWalker::SimplifyRepeat(Regexp* re, int min, int max,
    function Regexp (line 382) | Regexp* SimplifyWalker::SimplifyCharClass(Regexp* re) {

FILE: src/openalpr/support/re2/stringpiece.cc
  function StringPiece (line 88) | StringPiece StringPiece::substr(size_type pos, size_type n) const {

FILE: src/openalpr/support/re2/stringpiece.h
  function namespace (line 28) | namespace re2 {

FILE: src/openalpr/support/re2/tostring.cc
  type re2 (line 14) | namespace re2 {
    class ToStringWalker (line 33) | class ToStringWalker : public Regexp::Walker<int> {
      method ToStringWalker (line 35) | explicit ToStringWalker(string* t) : t_(t) {}
      method ShortVisit (line 40) | virtual int ShortVisit(Regexp* re, int parent_arg) {
    function string (line 50) | string Regexp::ToString() {
    function AppendLiteral (line 122) | static void AppendLiteral(string *t, Rune r, bool foldcase) {
    function AppendCCChar (line 298) | static void AppendCCChar(string* t, Rune r) {
    function AppendCCRange (line 333) | static void AppendCCRange(string* t, Rune lo, Rune hi) {

FILE: src/openalpr/support/re2/unicode_casefold.cc
  type re2 (line 7) | namespace re2 {

FILE: src/openalpr/support/re2/unicode_casefold.h
  function namespace (line 44) | namespace re2 {

FILE: src/openalpr/support/re2/unicode_groups.cc
  type re2 (line 7) | namespace re2 {

FILE: src/openalpr/support/re2/unicode_groups.h
  function namespace (line 23) | namespace re2 {

FILE: src/openalpr/support/re2/util/atomicops.h
  function WriteMemoryBarrier (line 39) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 49) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 55) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 61) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 67) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 74) | static inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 81) | inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 89) | inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 95) | inline void WriteMemoryBarrier() {
  function WriteMemoryBarrier (line 103) | static inline void WriteMemoryBarrier() {
  function MaybeReadMemoryBarrier (line 122) | static inline void MaybeReadMemoryBarrier() {
  function MaybeReadMemoryBarrier (line 128) | static inline void MaybeReadMemoryBarrier() {}
  function ReadMemoryBarrier (line 136) | static inline void ReadMemoryBarrier() {
  function ReadMemoryBarrier (line 142) | static inline void ReadMemoryBarrier() {
  function ReadMemoryBarrier (line 148) | inline void ReadMemoryBarrier() {
  function ReadMemoryBarrier (line 154) | static inline void ReadMemoryBarrier() {}

FILE: src/openalpr/support/re2/util/benchmark.h
  function namespace (line 8) | namespace testing {

FILE: src/openalpr/support/re2/util/hash.cc
  type re2 (line 135) | namespace re2 {
    function uint32 (line 150) | uint32 hashword(
    function hashword2 (line 194) | void hashword2 (

FILE: src/openalpr/support/re2/util/logging.h
  function class (line 53) | class LogMessage {
  function Flush (line 58) | void Flush() {
  function class (line 78) | class LogMessageFatal : public LogMessage {

FILE: src/openalpr/support/re2/util/mutex.h
  function namespace (line 15) | namespace re2 {

FILE: src/openalpr/support/re2/util/pcre.h
  function namespace (line 166) | namespace re2 {
  function namespace (line 170) | namespace re2 {
  function namespace (line 189) | namespace re2 {
  function class (line 528) | class PCRE_Options {
  function class (line 575) | class PCRE::Arg {
  function PCRE (line 652) | inline PCRE::Arg::Arg() : arg_(NULL), parser_(parse_null) { }

FILE: src/openalpr/support/re2/util/random.h
  function namespace (line 12) | namespace re2 {

FILE: src/openalpr/support/re2/util/rune.cc
  type re2 (line 18) | namespace re2 {
    function chartorune (line 48) | int
    function runetochar (line 124) | int
    function runelen (line 181) | int
    function fullrune (line 189) | int
    function utflen (line 209) | int

FILE: src/openalpr/support/re2/util/sparse_array.h
  function namespace (line 101) | namespace re2 {

FILE: src/openalpr/support/re2/util/sparse_set.h
  function namespace (line 54) | namespace re2 {

FILE: src/openalpr/support/re2/util/stringprintf.cc
  type re2 (line 11) | namespace re2 {
    function StringAppendV (line 13) | static void StringAppendV(string* dst, const char* format, va_list ap) {
    function string (line 72) | string StringPrintf(const char* format, ...) {
    function SStringPrintf (line 81) | void SStringPrintf(string* dst, const char* format, ...) {
    function StringAppendF (line 89) | void StringAppendF(string* dst, const char* format, ...) {

FILE: src/openalpr/support/re2/util/strutil.cc
  type re2 (line 8) | namespace re2 {
    function CEscapeString (line 19) | int CEscapeString(const char* src, int src_len, char* dest,
    function string (line 69) | string CEscape(const StringPiece& src) {
    function string (line 79) | string PrefixSuccessor(const StringPiece& prefix) {

FILE: src/openalpr/support/re2/util/test.h
  function class (line 18) | class TestRegisterer {
  function namespace (line 35) | namespace testing {
  function namespace (line 46) | namespace re2 {

FILE: src/openalpr/support/re2/util/thread.h
  function class (line 10) | class Thread {

FILE: src/openalpr/support/re2/util/utf.h
  function namespace (line 21) | namespace re2 {

FILE: src/openalpr/support/re2/util/util.h
  function namespace (line 35) | namespace re2 {

FILE: src/openalpr/support/re2/util/valgrind.cc
  type re2 (line 10) | namespace re2 {
    function RunningOnValgrind (line 16) | int RunningOnValgrind() {

FILE: src/openalpr/support/re2/util/valgrind.h
  type OrigFn (line 187) | typedef
  type OrigFn (line 241) | typedef
  type OrigFn (line 295) | typedef
  type OrigFn (line 355) | typedef
  type OrigFn (line 480) | typedef
  type OrigFn (line 552) | typedef
  type Vg_ClientRequest (line 4091) | typedef
  function VALGRIND_PRINTF (line 4191) | static int
  function VALGRIND_PRINTF_BACKTRACE (line 4208) | static int

FILE: src/openalpr/support/re2/variadic_function.h
  function namespace (line 8) | namespace re2 {

FILE: src/openalpr/support/re2/walker-inl.h
  function namespace (line 20) | namespace re2 {

FILE: src/openalpr/support/timing.cpp
  type alpr (line 3) | namespace alpr
    function LARGE_INTEGER (line 11) | LARGE_INTEGER getFILETIMEoffset()
    function clock_gettime (line 31) | int clock_gettime(int X, timespec *tv)
    function getTimeMonotonic (line 74) | void getTimeMonotonic(timespec* time)
    function getTimeMonotonicMs (line 80) | int64_t getTimeMonotonicMs()
    function diffclock (line 93) | double diffclock(timespec time1,timespec time2)
    function timespec (line 101) | timespec diff(timespec start, timespec end)
    function getEpochTimeMs (line 118) | int64_t getEpochTimeMs()
    function _getTime (line 125) | void _getTime(bool realtime, timespec* time)
    function getTimeMonotonic (line 145) | void getTimeMonotonic(timespec* time)
    function getTimeMonotonicMs (line 150) | int64_t getTimeMonotonicMs()
    function diffclock (line 162) | double diffclock(timespec time1,timespec time2)
    function timespec (line 170) | timespec diff(timespec start, timespec end)
    function getEpochTimeMs (line 188) | int64_t getEpochTimeMs()

FILE: src/openalpr/support/timing.h
  type timespec (line 14) | struct timespec
  function namespace (line 32) | namespace alpr

FILE: src/openalpr/support/tinydir.h
  type tinydir_file (line 61) | typedef struct
  type tinydir_dir (line 74) | typedef struct
  function _TINYDIR_FUNC (line 113) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 163) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 198) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 229) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 348) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 365) | _TINYDIR_FUNC
  function _TINYDIR_FUNC (line 388) | _TINYDIR_FUNC

FILE: src/openalpr/support/tinythread.cpp
  type tthread (line 35) | namespace tthread {
    function _pthread_t_to_ID (line 131) | static thread::id _pthread_t_to_ID(const pthread_t &aHandle)
    type _thread_start_info (line 150) | struct _thread_start_info {

FILE: src/openalpr/support/tinythread.h
  function class (line 159) | class mutex {
  function class (line 251) | class recursive_mutex {
  function explicit (line 350) | explicit lock_guard(mutex_type &aMutex)
  function class (line 392) | class condition_variable {
  function class (line 481) | class thread {

FILE: src/openalpr/support/utf8.cpp
  function utf8chr (line 4) | std::string utf8chr(int cp)
  function codepoint (line 14) | int codepoint(const std::string &u)

FILE: src/openalpr/support/utf8/checked.h
  function namespace (line 34) | namespace utf8
  function output_iterator (line 130) | output_iterator replace_invalid(octet_iterator start, octet_iterator end...
  function operator (line 284) | uint32_t operator * () const
  function operator (line 295) | bool operator != (const iterator& rhs) const
  function iterator (line 304) | iterator operator ++ (int)
  function iterator (line 315) | iterator operator -- (int)

FILE: src/openalpr/support/utf8/core.h
  function namespace (line 33) | namespace utf8

FILE: src/openalpr/support/utf8/unchecked.h
  function namespace (line 33) | namespace utf8

FILE: src/openalpr/support/version.cpp
  function cmpVersion (line 5) | int cmpVersion(const char *v1, const char *v2)

FILE: src/openalpr/textdetection/characteranalysis.cpp
  type alpr (line 28) | namespace alpr
    function sort_text_line (line 31) | bool sort_text_line(TextLine i, TextLine j) { return (i.topLine.p1.y <...
    function Mat (line 280) | Mat CharacterAnalysis::getCharacterMask()

FILE: src/openalpr/textdetection/characteranalysis.h
  function namespace (line 32) | namespace alpr

FILE: src/openalpr/textdetection/linefinder.cpp
  type alpr (line 31) | namespace alpr

FILE: src/openalpr/textdetection/linefinder.h
  function namespace (line 31) | namespace alpr

FILE: src/openalpr/textdetection/platemask.cpp
  type alpr (line 25) | namespace alpr

FILE: src/openalpr/textdetection/platemask.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/textdetection/textcontours.cpp
  type alpr (line 25) | namespace alpr
    function Mat (line 105) | Mat TextContours::drawDebugImage() const {
    function Mat (line 112) | Mat TextContours::drawDebugImage(Mat baseImage) const {

FILE: src/openalpr/textdetection/textcontours.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/textdetection/textline.cpp
  type alpr (line 27) | namespace alpr

FILE: src/openalpr/textdetection/textline.h
  function namespace (line 27) | namespace alpr

FILE: src/openalpr/transformation.cpp
  type alpr (line 25) | namespace alpr
    function Mat (line 68) | Mat Transformation::getTransformationMatrix(vector<Point2f> corners, S...
    function Mat (line 80) | Mat Transformation::getTransformationMatrix(vector<Point2f> corners, v...
    function Mat (line 90) | Mat Transformation::crop(Size outputImageSize, Mat transformationMatrix)
    function Size (line 122) | Size Transformation::getCropSize(vector<Point2f> areaCorners, Size tar...

FILE: src/openalpr/transformation.h
  function namespace (line 26) | namespace alpr

FILE: src/openalpr/utility.cpp
  type alpr (line 29) | namespace alpr
    function Rect (line 32) | Rect expandRect(Rect original, int expandXPixels, int expandYPixels, i...
    function Mat (line 53) | Mat drawImageDashboard(vector<Mat> images, int imageType, unsigned int...
    function Mat (line 73) | Mat addLabel(Mat input, string label)
    function drawAndWait (line 97) | void drawAndWait(cv::Mat frame)
    function drawAndWait (line 101) | void drawAndWait(cv::Mat* frame)
    function displayImage (line 113) | void displayImage(Config* config, string windowName, cv::Mat frame)
    function produceThresholds (line 122) | vector<Mat> produceThresholds(const Mat img_gray, Config* config)
    function median (line 175) | double median(int array[], int arraySize)
    function Mat (line 187) | Mat equalizeBrightness(Mat img)
    function drawRotatedRect (line 202) | void drawRotatedRect(Mat* img, RotatedRect rect, Scalar color, int thi...
    function fillMask (line 210) | void fillMask(Mat img, const Mat mask, Scalar color)
    function drawX (line 230) | void drawX(Mat img, Rect rect, Scalar color, int thickness)
    function distanceBetweenPoints (line 241) | double distanceBetweenPoints(Point p1, Point p2)
    function angleBetweenPoints (line 249) | float angleBetweenPoints(Point p1, Point p2)
    function Size (line 257) | Size getSizeMaintainingAspect(Mat inputImg, int maxWidth, int maxHeight)
    function levenshteinDistance (line 275) | int levenshteinDistance (const std::string &s1, const std::string &s2,...
    function Point (line 444) | Point LineSegment::closestPointOnSegmentTo(Point p)
    function Point (line 459) | Point LineSegment::intersection(LineSegment line)
    function Point (line 491) | Point LineSegment::midpoint()
    function LineSegment (line 507) | LineSegment LineSegment::getParallelLine(float distance)
    function findClosestPoint (line 524) | cv::Point findClosestPoint(cv::Point2f* polygon_points, int num_points...
    function sortPolygonPoints (line 543) | std::vector<cv::Point> sortPolygonPoints(cv::Point2f* polygon_points, ...
    function getContourAreaPercentInsideMask (line 558) | float getContourAreaPercentInsideMask(cv::Mat mask, std::vector<std::v...
    function toString (line 587) | std::string toString(int value)
    function toString (line 593) | std::string toString(long value)
    function toString (line 599) | std::string toString(unsigned int value)
    function toString (line 603) | std::string toString(float value)
    function toString (line 609) | std::string toString(double value)
    function replaceAll (line 616) | std::string replaceAll(std::string str, const std::string& from, const...

FILE: src/openalpr/utility.h
  function namespace (line 34) | namespace alpr

FILE: src/statedetection/featurematcher.cpp
  type alpr (line 25) | namespace alpr
    function RecognitionResult (line 290) | RecognitionResult FeatureMatcher::recognize( const Mat& queryImg, bool...

FILE: src/statedetection/featurematcher.h
  function namespace (line 32) | namespace alpr

FILE: src/statedetection/line_segment.cpp
  function Point (line 64) | Point LineSegment::closestPointOnSegmentTo(Point p)
  function Point (line 79) | Point LineSegment::intersection(LineSegment line)
  function Point (line 111) | Point LineSegment::midpoint()
  function round_int (line 127) | int round_int(double r) {
  function LineSegment (line 131) | LineSegment LineSegment::getParallelLine(float distance)

FILE: src/statedetection/line_segment.h
  function class (line 25) | class LineSegment

FILE: src/statedetection/state_detector.cpp
  type alpr (line 25) | namespace alpr {

FILE: src/statedetection/state_detector.h
  function namespace (line 26) | namespace alpr {

FILE: src/statedetection/state_detector_impl.cpp
  type alpr (line 22) | namespace alpr

FILE: src/statedetection/state_detector_impl.h
  function namespace (line 28) | namespace alpr {

FILE: src/tclap/Arg.h
  type std (line 40) | typedef std::istringstream istringstream;
  type std (line 43) | typedef std::istrstream istringstream;
  function namespace (line 54) | namespace TCLAP
  function Arg (line 528) | inline Arg::~Arg() { }
  function a (line 560) | inline bool Arg::operator==(const Arg& a) const
  function setRequireLabel (line 612) | inline void Arg::setRequireLabel( const std::string& s)
  function argMatches (line 617) | inline bool Arg::argMatches( const std::string& argFlag ) const
  function trimFlag (line 644) | inline void Arg::trimFlag(std::string& flag, std::string& value) const
  function _hasBlanks (line 663) | inline bool Arg::_hasBlanks( const std::string& s ) const
  function forceRequired (line 671) | inline void Arg::forceRequired()
  function xorSet (line 676) | inline void Arg::xorSet()
  function addToList (line 685) | inline void Arg::addToList( std::list<Arg*>& argList ) const
  function allowMore (line 690) | inline bool Arg::allowMore()
  function acceptsMultipleValues (line 695) | inline bool Arg::acceptsMultipleValues()
  function reset (line 700) | inline void Arg::reset()

FILE: src/tclap/ArgException.h
  function namespace (line 30) | namespace TCLAP

FILE: src/tclap/ArgTraits.h
  type StringLikeTrait (line 60) | struct StringLikeTrait

FILE: src/tclap/CmdLine.h
  function namespace (line 49) | namespace TCLAP
  function _emptyCombined (line 506) | inline bool CmdLine::_emptyCombined(const std::string& s)
  function missingArgsException (line 516) | inline void CmdLine::missingArgsException()
  function deleteOnExit (line 539) | inline void CmdLine::deleteOnExit(Arg* ptr)
  function deleteOnExit (line 544) | inline void CmdLine::deleteOnExit(Visitor* ptr)
  function CmdLineOutput (line 549) | inline CmdLineOutput* CmdLine::getOutput()
  function setOutput (line 554) | inline void CmdLine::setOutput(CmdLineOutput* co)
  function std (line 562) | inline std::string& CmdLine::getVersion()
  function std (line 567) | inline std::string& CmdLine::getProgramName()
  function std (line 572) | inline std::list<Arg*>& CmdLine::getArgList()
  function XorHandler (line 577) | inline XorHandler& CmdLine::getXorHandler()
  function getDelimiter (line 582) | inline char CmdLine::getDelimiter()
  function std (line 587) | inline std::string& CmdLine::getMessage()
  function hasHelpAndVersion (line 592) | inline bool CmdLine::hasHelpAndVersion()
  function setExceptionHandling (line 597) | inline void CmdLine::setExceptionHandling(const bool state)
  function reset (line 607) | inline void CmdLine::reset()

FILE: src/tclap/CmdLineInterface.h
  function namespace (line 32) | namespace TCLAP

FILE: src/tclap/CmdLineOutput.h
  function namespace (line 31) | namespace TCLAP

FILE: src/tclap/Constraint.h
  function namespace (line 30) | namespace TCLAP

FILE: src/tclap/DocBookOutput.h
  function namespace (line 37) | namespace TCLAP

FILE: src/tclap/HelpVisitor.h
  function namespace (line 29) | namespace TCLAP

FILE: src/tclap/IgnoreRestVisitor.h
  function namespace (line 29) | namespace TCLAP

FILE: src/tclap/MultiArg.h
  function namespace (line 32) | namespace TCLAP

FILE: src/tclap/MultiSwitchArg.h
  function namespace (line 33) | namespace TCLAP
  function getValue (line 154) | inline int MultiSwitchArg::getValue()
  function processArg (line 159) | inline bool MultiSwitchArg::processArg(int *i, std::vector<std::string>&...
  function reset (line 200) | inline void

FILE: src/tclap/OptionalUnlabeledTracker.h
  function namespace (line 29) | namespace TCLAP

FILE: src/tclap/StandardTraits.h
  function namespace (line 42) | namespace TCLAP

FILE: src/tclap/StdOutput.h
  function namespace (line 37) | namespace TCLAP

FILE: src/tclap/SwitchArg.h
  function namespace (line 32) | namespace TCLAP
  function getValue (line 159) | inline bool SwitchArg::getValue()
  function lastCombined (line 164) | inline bool SwitchArg::lastCombined(std::string& combinedSwitches )
  function combinedSwitchesMatch (line 172) | inline bool SwitchArg::combinedSwitchesMatch(std::string& combinedSwitch...
  function commonProcessing (line 203) | inline void SwitchArg::commonProcessing()
  function processArg (line 218) | inline bool SwitchArg::processArg(int *i, std::vector<std::string>& args)
  function reset (line 246) | inline void SwitchArg::reset()

FILE: src/tclap/UnlabeledMultiArg.h
  function namespace (line 32) | namespace TCLAP

FILE: src/tclap/UnlabeledValueArg.h
  function namespace (line 34) | namespace TCLAP

FILE: src/tclap/ValueArg.h
  function namespace (line 32) | namespace TCLAP

FILE: src/tclap/ValuesConstraint.h
  function virtual (line 66) | virtual ~ValuesConstraint() {}
  function virtual (line 71) | virtual std::string description() const;

FILE: src/tclap/VersionVisitor.h
  function namespace (line 31) | namespace TCLAP

FILE: src/tclap/Visitor.h
  function namespace (line 26) | namespace TCLAP

FILE: src/tclap/XorHandler.h
  function namespace (line 31) | namespace TCLAP

FILE: src/tclap/ZshCompletionOutput.h
  function namespace (line 37) | namespace TCLAP

FILE: src/tests/catch.hpp
  type Catch (line 280) | namespace Catch {
    type IConfig (line 282) | struct IConfig
    type CaseSensitive (line 284) | struct CaseSensitive { enum Choice {
      type Choice (line 284) | enum Choice {
    class NonCopyable (line 289) | class NonCopyable {
      method NonCopyable (line 291) | NonCopyable( NonCopyable const& )              = delete;
      method NonCopyable (line 292) | NonCopyable( NonCopyable && )                  = delete;
      method NonCopyable (line 293) | NonCopyable& operator = ( NonCopyable const& ) = delete;
      method NonCopyable (line 294) | NonCopyable& operator = ( NonCopyable && )     = delete;
      method NonCopyable (line 301) | NonCopyable() {}
    class SafeBool (line 305) | class SafeBool {
      method type (line 309) | static type makeSafe( bool value ) {
      method trueValue (line 313) | void trueValue() const {}
    function deleteAll (line 317) | inline void deleteAll( ContainerT& container ) {
    function deleteAllValues (line 324) | inline void deleteAllValues( AssociativeContainerT& container ) {
    type pluralise (line 339) | struct pluralise {
    type SourceLineInfo (line 348) | struct SourceLineInfo {
      method SourceLineInfo (line 354) | SourceLineInfo( SourceLineInfo && )                  = default;
      method SourceLineInfo (line 355) | SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
      method SourceLineInfo (line 356) | SourceLineInfo& operator = ( SourceLineInfo && )     = default;
    function isTrue (line 369) | inline bool isTrue( bool value ){ return value; }
    function alwaysTrue (line 370) | inline bool alwaysTrue() { return true; }
    function alwaysFalse (line 371) | inline bool alwaysFalse() { return false; }
    type StreamEndStop (line 382) | struct StreamEndStop {
    function T (line 388) | T const& operator + ( T const& value, StreamEndStop ) {
    class NotImplementedException (line 400) | class NotImplementedException : public std::exception
      method NotImplementedException (line 404) | NotImplementedException( NotImplementedException const& ) {}
    type IGeneratorInfo (line 430) | struct IGeneratorInfo {
    type IGeneratorsForTest (line 436) | struct IGeneratorsForTest {
    class Ptr (line 461) | class Ptr {
      method Ptr (line 463) | Ptr() : m_p( CATCH_NULL ){}
      method Ptr (line 464) | Ptr( T* p ) : m_p( p ){
      method Ptr (line 468) | Ptr( Ptr const& other ) : m_p( other.m_p ){
      method reset (line 476) | void reset() {
      method Ptr (line 481) | Ptr& operator = ( T* p ){
      method Ptr (line 486) | Ptr& operator = ( Ptr const& other ){
      method swap (line 491) | void swap( Ptr& other ) { std::swap( m_p, other.m_p ); }
      method T (line 492) | T* get() const{ return m_p; }
      method T (line 493) | T& operator*() const { return *m_p; }
      method T (line 494) | T* operator->() const { return m_p; }
    type IShared (line 502) | struct IShared : NonCopyable {
    type SharedImpl (line 509) | struct SharedImpl : T {
      method SharedImpl (line 511) | SharedImpl() : m_rc( 0 ){}
      method addRef (line 513) | virtual void addRef() const {
      method release (line 516) | virtual void release() const {
    class TestCase (line 536) | class TestCase
    class Stream (line 537) | class Stream
    type IResultCapture (line 538) | struct IResultCapture
    type IRunner (line 539) | struct IRunner
    type IGeneratorsForTest (line 540) | struct IGeneratorsForTest
    type IConfig (line 541) | struct IConfig
    type IContext (line 543) | struct IContext
    type IMutableContext (line 554) | struct IMutableContext : IContext
    class TestSpec (line 579) | class TestSpec
      type Pattern (line 3135) | struct Pattern : SharedImpl<> {
      class NamePattern (line 3139) | class NamePattern : public Pattern {
        method NamePattern (line 3141) | NamePattern( std::string const& name )
        method matches (line 3145) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class TagPattern (line 3152) | class TagPattern : public Pattern {
        method TagPattern (line 3154) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
        method matches (line 3156) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class ExcludedPattern (line 3163) | class ExcludedPattern : public Pattern {
        method ExcludedPattern (line 3165) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
        method matches (line 3167) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
      type Filter (line 3172) | struct Filter {
        method matches (line 3175) | bool matches( TestCaseInfo const& testCase ) const {
      method hasFilters (line 3185) | bool hasFilters() const {
      method matches (line 3188) | bool matches( TestCaseInfo const& testCase ) const {
    type ITestCase (line 581) | struct ITestCase : IShared {
    class TestCase (line 587) | class TestCase
    type IConfig (line 588) | struct IConfig
    type ITestCaseRegistry (line 590) | struct ITestCaseRegistry {
    class MethodTestCase (line 605) | class MethodTestCase : public SharedImpl<ITestCase> {
      method MethodTestCase (line 608) | MethodTestCase( void (C::*method)() ) : m_method( method ) {}
      method invoke (line 610) | virtual void invoke() const {
    type NameAndDesc (line 623) | struct NameAndDesc {
      method NameAndDesc (line 624) | NameAndDesc( const char* _name = "", const char* _description= "" )
    type AutoReg (line 638) | struct AutoReg {
      method AutoReg (line 646) | AutoReg
    type ResultWas (line 736) | struct ResultWas { enum OfType {
      type OfType (line 736) | enum OfType {
    function isOk (line 756) | inline bool isOk( ResultWas::OfType resultType ) {
    function isJustInfo (line 759) | inline bool isJustInfo( int flags ) {
    type ResultDisposition (line 764) | struct ResultDisposition { enum Flags {
      type Flags (line 764) | enum Flags {
    function shouldContinueOnFailure (line 776) | inline bool shouldContinueOnFailure( int flags )    { return ( flags &...
    function isFalseTest (line 777) | inline bool isFalseTest( int flags )                { return ( flags &...
    function shouldSuppressFailure (line 778) | inline bool shouldSuppressFailure( int flags )      { return ( flags &...
    type AssertionInfo (line 789) | struct AssertionInfo
      method AssertionInfo (line 791) | AssertionInfo() {}
    type AssertionResultData (line 803) | struct AssertionResultData
      method AssertionResultData (line 805) | AssertionResultData() : resultType( ResultWas::Unknown ) {}
    class AssertionResult (line 812) | class AssertionResult {
      method AssertionResult (line 818) | AssertionResult( AssertionResult const& )              = default;
      method AssertionResult (line 819) | AssertionResult( AssertionResult && )                  = default;
      method AssertionResult (line 820) | AssertionResult& operator = ( AssertionResult const& ) = default;
      method AssertionResult (line 821) | AssertionResult& operator = ( AssertionResult && )     = default;
    type Matchers (line 848) | namespace Matchers {
      type Impl (line 849) | namespace Impl {
        type Generic (line 851) | namespace Generic {
          class AllOf (line 852) | class AllOf
            method AllOf (line 902) | AllOf() {}
            method AllOf (line 903) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
            method AllOf (line 905) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 909) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 916) | virtual std::string toString() const {
            method AllOf (line 928) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
          class AnyOf (line 853) | class AnyOf
            method AnyOf (line 942) | AnyOf() {}
            method AnyOf (line 943) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
            method AnyOf (line 945) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 949) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 956) | virtual std::string toString() const {
            method AnyOf (line 968) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
          class Not (line 854) | class Not
            method Not (line 884) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
            method Not (line 885) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
            method match (line 887) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
            method toString (line 891) | virtual std::string toString() const CATCH_OVERRIDE {
          class Not (line 882) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
            method Not (line 884) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
            method Not (line 885) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
            method match (line 887) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
            method toString (line 891) | virtual std::string toString() const CATCH_OVERRIDE {
          class AllOf (line 899) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
            method AllOf (line 902) | AllOf() {}
            method AllOf (line 903) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
            method AllOf (line 905) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 909) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 916) | virtual std::string toString() const {
            method AllOf (line 928) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
          class AnyOf (line 939) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
            method AnyOf (line 942) | AnyOf() {}
            method AnyOf (line 943) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
            method AnyOf (line 945) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 949) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 956) | virtual std::string toString() const {
            method AnyOf (line 968) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
        type Matcher (line 858) | struct Matcher : SharedImpl<IShared>
        type MatcherImpl (line 873) | struct MatcherImpl : Matcher<ExpressionT> {
          method clone (line 875) | virtual Ptr<Matcher<ExpressionT> > clone() const {
        type Generic (line 880) | namespace Generic {
          class AllOf (line 852) | class AllOf
            method AllOf (line 902) | AllOf() {}
            method AllOf (line 903) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
            method AllOf (line 905) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 909) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 916) | virtual std::string toString() const {
            method AllOf (line 928) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
          class AnyOf (line 853) | class AnyOf
            method AnyOf (line 942) | AnyOf() {}
            method AnyOf (line 943) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
            method AnyOf (line 945) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 949) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 956) | virtual std::string toString() const {
            method AnyOf (line 968) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
          class Not (line 854) | class Not
            method Not (line 884) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
            method Not (line 885) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
            method match (line 887) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
            method toString (line 891) | virtual std::string toString() const CATCH_OVERRIDE {
          class Not (line 882) | class Not : public MatcherImpl<Not<ExpressionT>, ExpressionT> {
            method Not (line 884) | explicit Not( Matcher<ExpressionT> const& matcher ) : m_matche...
            method Not (line 885) | Not( Not const& other ) : m_matcher( other.m_matcher ) {}
            method match (line 887) | virtual bool match( ExpressionT const& expr ) const CATCH_OVER...
            method toString (line 891) | virtual std::string toString() const CATCH_OVERRIDE {
          class AllOf (line 899) | class AllOf : public MatcherImpl<AllOf<ExpressionT>, ExpressionT> {
            method AllOf (line 902) | AllOf() {}
            method AllOf (line 903) | AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {}
            method AllOf (line 905) | AllOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 909) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 916) | virtual std::string toString() const {
            method AllOf (line 928) | AllOf operator && ( Matcher<ExpressionT> const& other ) const {
          class AnyOf (line 939) | class AnyOf : public MatcherImpl<AnyOf<ExpressionT>, ExpressionT> {
            method AnyOf (line 942) | AnyOf() {}
            method AnyOf (line 943) | AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {}
            method AnyOf (line 945) | AnyOf& add( Matcher<ExpressionT> const& matcher ) {
            method match (line 949) | virtual bool match( ExpressionT const& expr ) const
            method toString (line 956) | virtual std::string toString() const {
            method AnyOf (line 968) | AnyOf operator || ( Matcher<ExpressionT> const& other ) const {
        type StdString (line 1001) | namespace StdString {
          function makeString (line 1003) | inline std::string makeString( std::string const& str ) { return...
          function makeString (line 1004) | inline std::string makeString( const char* str ) { return str ? ...
          type CasedString (line 1006) | struct CasedString
            method CasedString (line 1008) | CasedString( std::string const& str, CaseSensitive::Choice cas...
            method adjustString (line 1012) | std::string adjustString( std::string const& str ) const {
            method toStringSuffix (line 1018) | std::string toStringSuffix() const
          type Equals (line 1028) | struct Equals : MatcherImpl<Equals, std::string> {
            method Equals (line 1029) | Equals( std::string const& str, CaseSensitive::Choice caseSens...
            method Equals (line 1032) | Equals( Equals const& other ) : m_data( other.m_data ){}
            method match (line 1036) | virtual bool match( std::string const& expr ) const {
            method toString (line 1039) | virtual std::string toString() const {
          type Contains (line 1046) | struct Contains : MatcherImpl<Contains, std::string> {
            method Contains (line 1047) | Contains( std::string const& substr, CaseSensitive::Choice cas...
            method Contains (line 1049) | Contains( Contains const& other ) : m_data( other.m_data ){}
            method match (line 1053) | virtual bool match( std::string const& expr ) const {
            method toString (line 1056) | virtual std::string toString() const {
          type StartsWith (line 1063) | struct StartsWith : MatcherImpl<StartsWith, std::string> {
            method StartsWith (line 1064) | StartsWith( std::string const& substr, CaseSensitive::Choice c...
            method StartsWith (line 1067) | StartsWith( StartsWith const& other ) : m_data( other.m_data ){}
            method match (line 1071) | virtual bool match( std::string const& expr ) const {
            method toString (line 1074) | virtual std::string toString() const {
          type EndsWith (line 1081) | struct EndsWith : MatcherImpl<EndsWith, std::string> {
            method EndsWith (line 1082) | EndsWith( std::string const& substr, CaseSensitive::Choice cas...
            method EndsWith (line 1084) | EndsWith( EndsWith const& other ) : m_data( other.m_data ){}
            method match (line 1088) | virtual bool match( std::string const& expr ) const {
            method toString (line 1091) | virtual std::string toString() const {
      function Not (line 1103) | inline Impl::Generic::Not<ExpressionT> Not( Impl::Matcher<Expression...
      function AllOf (line 1108) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
      function AllOf (line 1113) | inline Impl::Generic::AllOf<ExpressionT> AllOf( Impl::Matcher<Expres...
      function AnyOf (line 1119) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
      function AnyOf (line 1124) | inline Impl::Generic::AnyOf<ExpressionT> AnyOf( Impl::Matcher<Expres...
      function Equals (line 1130) | inline Impl::StdString::Equals      Equals( std::string const& str, ...
      function Equals (line 1133) | inline Impl::StdString::Equals      Equals( const char* str, CaseSen...
      function Contains (line 1136) | inline Impl::StdString::Contains    Contains( std::string const& sub...
      function Contains (line 1139) | inline Impl::StdString::Contains    Contains( const char* substr, Ca...
      function StartsWith (line 1142) | inline Impl::StdString::StartsWith  StartsWith( std::string const& s...
      function StartsWith (line 1145) | inline Impl::StdString::StartsWith  StartsWith( const char* substr ) {
      function EndsWith (line 1148) | inline Impl::StdString::EndsWith    EndsWith( std::string const& sub...
      function EndsWith (line 1151) | inline Impl::StdString::EndsWith    EndsWith( const char* substr ) {
    type TestFailureException (line 1163) | struct TestFailureException{}
    class ExpressionLhs (line 1165) | class ExpressionLhs
      method ExpressionLhs (line 1759) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
      method ExpressionLhs (line 1763) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
      method ExpressionLhs (line 1765) | ExpressionLhs( ExpressionLhs const& ) = default;
      method ExpressionLhs (line 1766) | ExpressionLhs( ExpressionLhs && )     = default;
      method ResultBuilder (line 1770) | ResultBuilder& operator == ( RhsT const& rhs ) {
      method ResultBuilder (line 1775) | ResultBuilder& operator != ( RhsT const& rhs ) {
      method ResultBuilder (line 1780) | ResultBuilder& operator < ( RhsT const& rhs ) {
      method ResultBuilder (line 1785) | ResultBuilder& operator > ( RhsT const& rhs ) {
      method ResultBuilder (line 1790) | ResultBuilder& operator <= ( RhsT const& rhs ) {
      method ResultBuilder (line 1795) | ResultBuilder& operator >= ( RhsT const& rhs ) {
      method ResultBuilder (line 1799) | ResultBuilder& operator == ( bool rhs ) {
      method ResultBuilder (line 1803) | ResultBuilder& operator != ( bool rhs ) {
      method endExpression (line 1807) | void endExpression() {
      method ResultBuilder (line 1826) | ResultBuilder& captureExpression( RhsT const& rhs ) {
    type STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison (line 1167) | struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_C...
    type CopyableStream (line 1169) | struct CopyableStream {
      method CopyableStream (line 1170) | CopyableStream() {}
      method CopyableStream (line 1171) | CopyableStream( CopyableStream const& other ) {
      method CopyableStream (line 1174) | CopyableStream& operator=( CopyableStream const& other ) {
    class ResultBuilder (line 1182) | class ResultBuilder {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    type Internal (line 1255) | namespace Internal {
      type Operator (line 1257) | enum Operator {
      type OperatorTraits (line 1266) | struct OperatorTraits             { static const char* getName(){ re...
      type OperatorTraits<IsEqualTo> (line 1267) | struct OperatorTraits<IsEqualTo>             { static const char* ge...
      type OperatorTraits<IsNotEqualTo> (line 1268) | struct OperatorTraits<IsNotEqualTo>          { static const char* ge...
      type OperatorTraits<IsLessThan> (line 1269) | struct OperatorTraits<IsLessThan>            { static const char* ge...
      type OperatorTraits<IsGreaterThan> (line 1270) | struct OperatorTraits<IsGreaterThan>         { static const char* ge...
      type OperatorTraits<IsLessThanOrEqualTo> (line 1271) | struct OperatorTraits<IsLessThanOrEqualTo>   { static const char* ge...
      type OperatorTraits<IsGreaterThanOrEqualTo> (line 1272) | struct OperatorTraits<IsGreaterThanOrEqualTo>{ static const char* ge...
      function T (line 1275) | inline T& opCast(T const& t) { return const_cast<T&>(t); }
      function opCast (line 1279) | inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; }
      class Evaluator (line 1285) | class Evaluator{}
      type Evaluator<T1, T2, IsEqualTo> (line 1288) | struct Evaluator<T1, T2, IsEqualTo> {
        method evaluate (line 1289) | static bool evaluate( T1 const& lhs, T2 const& rhs) {
      type Evaluator<T1, T2, IsNotEqualTo> (line 1294) | struct Evaluator<T1, T2, IsNotEqualTo> {
        method evaluate (line 1295) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
      type Evaluator<T1, T2, IsLessThan> (line 1300) | struct Evaluator<T1, T2, IsLessThan> {
        method evaluate (line 1301) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
      type Evaluator<T1, T2, IsGreaterThan> (line 1306) | struct Evaluator<T1, T2, IsGreaterThan> {
        method evaluate (line 1307) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
      type Evaluator<T1, T2, IsGreaterThanOrEqualTo> (line 1312) | struct Evaluator<T1, T2, IsGreaterThanOrEqualTo> {
        method evaluate (line 1313) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
      type Evaluator<T1, T2, IsLessThanOrEqualTo> (line 1318) | struct Evaluator<T1, T2, IsLessThanOrEqualTo> {
        method evaluate (line 1319) | static bool evaluate( T1 const& lhs, T2 const& rhs ) {
      function applyEvaluator (line 1325) | bool applyEvaluator( T1 const& lhs, T2 const& rhs ) {
      function compare (line 1334) | bool compare( T1 const& lhs, T2 const& rhs ) {
      function compare (line 1339) | bool compare( unsigned int lhs, int rhs ) {
      function compare (line 1342) | bool compare( unsigned long lhs, int rhs ) {
      function compare (line 1345) | bool compare( unsigned char lhs, int rhs ) {
      function compare (line 1350) | bool compare( unsigned int lhs, long rhs ) {
      function compare (line 1353) | bool compare( unsigned long lhs, long rhs ) {
      function compare (line 1356) | bool compare( unsigned char lhs, long rhs ) {
      function compare (line 1361) | bool compare( int lhs, unsigned int rhs ) {
      function compare (line 1364) | bool compare( int lhs, unsigned long rhs ) {
      function compare (line 1367) | bool compare( int lhs, unsigned char rhs ) {
      function compare (line 1372) | bool compare( long lhs, unsigned int rhs ) {
      function compare (line 1375) | bool compare( long lhs, unsigned long rhs ) {
      function compare (line 1378) | bool compare( long lhs, unsigned char rhs ) {
      function compare (line 1383) | bool compare( long lhs, T* rhs ) {
      function compare (line 1386) | bool compare( T* lhs, long rhs ) {
      function compare (line 1391) | bool compare( int lhs, T* rhs ) {
      function compare (line 1394) | bool compare( T* lhs, int rhs ) {
      function compare (line 1400) | bool compare( long long lhs, unsigned int rhs ) {
      function compare (line 1403) | bool compare( long long lhs, unsigned long rhs ) {
      function compare (line 1406) | bool compare( long long lhs, unsigned long long rhs ) {
      function compare (line 1409) | bool compare( long long lhs, unsigned char rhs ) {
      function compare (line 1414) | bool compare( unsigned long long lhs, int rhs ) {
      function compare (line 1417) | bool compare( unsigned long long lhs, long rhs ) {
      function compare (line 1420) | bool compare( unsigned long long lhs, long long rhs ) {
      function compare (line 1423) | bool compare( unsigned long long lhs, char rhs ) {
      function compare (line 1428) | bool compare( long long lhs, T* rhs ) {
      function compare (line 1431) | bool compare( T* lhs, long long rhs ) {
      function compare (line 1438) | bool compare( std::nullptr_t, T* rhs ) {
      function compare (line 1441) | bool compare( T* lhs, std::nullptr_t ) {
    type Detail (line 1555) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    type StringMaker (line 1632) | struct StringMaker :
    type StringMaker<T*> (line 1636) | struct StringMaker<T*> {
      method convert (line 1638) | static std::string convert( U* p ) {
    type StringMaker<R C::*> (line 1647) | struct StringMaker<R C::*> {
      method convert (line 1648) | static std::string convert( R C::* p ) {
    type Detail (line 1656) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    function toString (line 1669) | std::string toString( std::vector<T,Allocator> const& v ) {
    type TupleDetail (line 1676) | namespace TupleDetail {
      type ElementPrinter (line 1682) | struct ElementPrinter {
        method print (line 1683) | static void print( const Tuple& tuple, std::ostream& os )
      type ElementPrinter<Tuple,N,false> (line 1695) | struct ElementPrinter<Tuple,N,false> {
        method print (line 1696) | static void print( const Tuple&, std::ostream& ) {}
    type Detail (line 1715) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    function toString (line 1730) | std::string toString( T const& value ) {
    type Detail (line 1734) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    class ExpressionLhs (line 1756) | class ExpressionLhs {
      method ExpressionLhs (line 1759) | ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
      method ExpressionLhs (line 1763) | ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {}
      method ExpressionLhs (line 1765) | ExpressionLhs( ExpressionLhs const& ) = default;
      method ExpressionLhs (line 1766) | ExpressionLhs( ExpressionLhs && )     = default;
      method ResultBuilder (line 1770) | ResultBuilder& operator == ( RhsT const& rhs ) {
      method ResultBuilder (line 1775) | ResultBuilder& operator != ( RhsT const& rhs ) {
      method ResultBuilder (line 1780) | ResultBuilder& operator < ( RhsT const& rhs ) {
      method ResultBuilder (line 1785) | ResultBuilder& operator > ( RhsT const& rhs ) {
      method ResultBuilder (line 1790) | ResultBuilder& operator <= ( RhsT const& rhs ) {
      method ResultBuilder (line 1795) | ResultBuilder& operator >= ( RhsT const& rhs ) {
      method ResultBuilder (line 1799) | ResultBuilder& operator == ( bool rhs ) {
      method ResultBuilder (line 1803) | ResultBuilder& operator != ( bool rhs ) {
      method endExpression (line 1807) | void endExpression() {
      method ResultBuilder (line 1826) | ResultBuilder& captureExpression( RhsT const& rhs ) {
    type MessageInfo (line 1862) | struct MessageInfo {
    type MessageBuilder (line 1883) | struct MessageBuilder {
      method MessageBuilder (line 1884) | MessageBuilder( std::string const& macroName,
      method MessageBuilder (line 1891) | MessageBuilder& operator << ( T const& value ) {
    class ScopedMessage (line 1900) | class ScopedMessage {
    class TestCase (line 1918) | class TestCase
    class AssertionResult (line 1919) | class AssertionResult
      method AssertionResult (line 818) | AssertionResult( AssertionResult const& )              = default;
      method AssertionResult (line 819) | AssertionResult( AssertionResult && )                  = default;
      method AssertionResult (line 820) | AssertionResult& operator = ( AssertionResult const& ) = default;
      method AssertionResult (line 821) | AssertionResult& operator = ( AssertionResult && )     = default;
    type AssertionInfo (line 1920) | struct AssertionInfo
      method AssertionInfo (line 791) | AssertionInfo() {}
    type SectionInfo (line 1921) | struct SectionInfo
    type SectionEndInfo (line 1922) | struct SectionEndInfo
      method SectionEndInfo (line 2223) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
    type MessageInfo (line 1923) | struct MessageInfo
    class ScopedMessageBuilder (line 1924) | class ScopedMessageBuilder
    type Counts (line 1925) | struct Counts
      method Counts (line 2147) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
      method Counts (line 2149) | Counts operator - ( Counts const& other ) const {
      method Counts (line 2156) | Counts& operator += ( Counts const& other ) {
      method total (line 2163) | std::size_t total() const {
      method allPassed (line 2166) | bool allPassed() const {
      method allOk (line 2169) | bool allOk() const {
    type IResultCapture (line 1927) | struct IResultCapture {
    class TestCase (line 2001) | class TestCase
    type IRunner (line 2003) | struct IRunner {
    type Counts (line 2146) | struct Counts {
      method Counts (line 2147) | Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {}
      method Counts (line 2149) | Counts operator - ( Counts const& other ) const {
      method Counts (line 2156) | Counts& operator += ( Counts const& other ) {
      method total (line 2163) | std::size_t total() const {
      method allPassed (line 2166) | bool allPassed() const {
      method allOk (line 2169) | bool allOk() const {
    type Totals (line 2178) | struct Totals {
      method Totals (line 2180) | Totals operator - ( Totals const& other ) const {
      method Totals (line 2187) | Totals delta( Totals const& prevTotals ) const {
      method Totals (line 2198) | Totals& operator += ( Totals const& other ) {
    type SectionInfo (line 2211) | struct SectionInfo {
    type SectionEndInfo (line 2222) | struct SectionEndInfo {
      method SectionEndInfo (line 2223) | SectionEndInfo( SectionInfo const& _sectionInfo, Counts const& _prev...
    class Timer (line 2245) | class Timer {
      method Timer (line 2247) | Timer() : m_ticks( 0 ) {}
    class Section (line 2263) | class Section : NonCopyable {
    type IGenerator (line 2301) | struct IGenerator {
    class BetweenGenerator (line 2308) | class BetweenGenerator : public IGenerator<T> {
      method BetweenGenerator (line 2310) | BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){}
      method T (line 2312) | virtual T getValue( std::size_t index ) const {
      method size (line 2316) | virtual std::size_t size() const {
    class ValuesGenerator (line 2327) | class ValuesGenerator : public IGenerator<T> {
      method ValuesGenerator (line 2329) | ValuesGenerator(){}
      method add (line 2331) | void add( T value ) {
      method T (line 2335) | virtual T getValue( std::size_t index ) const {
      method size (line 2339) | virtual std::size_t size() const {
    class CompositeGenerator (line 2348) | class CompositeGenerator {
      method CompositeGenerator (line 2350) | CompositeGenerator() : m_totalSize( 0 ) {}
      method CompositeGenerator (line 2353) | CompositeGenerator( CompositeGenerator& other )
      method CompositeGenerator (line 2360) | CompositeGenerator& setFileInfo( const char* fileInfo ) {
      method add (line 2387) | void add( const IGenerator<T>* generator ) {
      method CompositeGenerator (line 2392) | CompositeGenerator& then( CompositeGenerator& other ) {
      method CompositeGenerator (line 2397) | CompositeGenerator& then( T value ) {
      method move (line 2406) | void move( CompositeGenerator& other ) {
    type Generators (line 2417) | namespace Generators
      function between (line 2420) | CompositeGenerator<T> between( T from, T to ) {
      function values (line 2427) | CompositeGenerator<T> values( T val1, T val2 ) {
      function values (line 2437) | CompositeGenerator<T> values( T val1, T val2, T val3 ){
      function values (line 2448) | CompositeGenerator<T> values( T val1, T val2, T val3, T val4 ) {
    class TestCase (line 2483) | class TestCase
    type ITestCaseRegistry (line 2484) | struct ITestCaseRegistry
    type IExceptionTranslatorRegistry (line 2485) | struct IExceptionTranslatorRegistry
    type IExceptionTranslator (line 2486) | struct IExceptionTranslator
    type IReporterRegistry (line 2487) | struct IReporterRegistry
    type IReporterFactory (line 2488) | struct IReporterFactory
    type IRegistryHub (line 2490) | struct IRegistryHub {
    type IMutableRegistryHub (line 2498) | struct IMutableRegistryHub {
    type IExceptionTranslator (line 2517) | struct IExceptionTranslator
    type IExceptionTranslator (line 2520) | struct IExceptionTranslator {
    type IExceptionTranslatorRegistry (line 2525) | struct IExceptionTranslatorRegistry {
    class ExceptionTranslatorRegistrar (line 2531) | class ExceptionTranslatorRegistrar {
      class ExceptionTranslator (line 2533) | class ExceptionTranslator : public IExceptionTranslator {
        method ExceptionTranslator (line 2536) | ExceptionTranslator( std::string(*translateFunction)( T& ) )
        method translate (line 2540) | virtual std::string translate( ExceptionTranslators::const_iterato...
      method ExceptionTranslatorRegistrar (line 2558) | ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) {
    type Detail (line 2578) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    type TagAlias (line 2662) | struct TagAlias {
      method TagAlias (line 2663) | TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag )...
    type RegistrarForTagAliases (line 2669) | struct RegistrarForTagAliases {
    class Option (line 2683) | class Option {
      method Option (line 2685) | Option() : nullableValue( CATCH_NULL ) {}
      method Option (line 2686) | Option( T const& _value )
      method Option (line 2689) | Option( Option const& _other )
      method Option (line 2697) | Option& operator= ( Option const& _other ) {
      method Option (line 2705) | Option& operator = ( T const& _value ) {
      method reset (line 2711) | void reset() {
      method T (line 2717) | T& operator*() { return *nullableValue; }
      method T (line 2718) | T const& operator*() const { return *nullableValue; }
      method T (line 2719) | T* operator->() { return nullableValue; }
      method T (line 2720) | const T* operator->() const { return nullableValue; }
      method T (line 2722) | T valueOr( T const& defaultValue ) const {
      method some (line 2726) | bool some() const { return nullableValue != CATCH_NULL; }
      method none (line 2727) | bool none() const { return nullableValue == CATCH_NULL; }
    type ITagAliasRegistry (line 2743) | struct ITagAliasRegistry {
    type ITestCase (line 2768) | struct ITestCase
    type TestCaseInfo (line 2770) | struct TestCaseInfo {
      type SpecialProperties (line 2771) | enum SpecialProperties{
    class TestCase (line 2804) | class TestCase : public TestCaseInfo {
    class WildcardPattern (line 3073) | class WildcardPattern {
      type WildcardPosition (line 3074) | enum WildcardPosition {
      method WildcardPattern (line 3083) | WildcardPattern( std::string const& pattern, CaseSensitive::Choice c...
      method matches (line 3098) | virtual bool matches( std::string const& str ) const {
      method adjustCase (line 3120) | std::string adjustCase( std::string const& str ) const {
    class TestSpec (line 3134) | class TestSpec {
      type Pattern (line 3135) | struct Pattern : SharedImpl<> {
      class NamePattern (line 3139) | class NamePattern : public Pattern {
        method NamePattern (line 3141) | NamePattern( std::string const& name )
        method matches (line 3145) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class TagPattern (line 3152) | class TagPattern : public Pattern {
        method TagPattern (line 3154) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
        method matches (line 3156) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class ExcludedPattern (line 3163) | class ExcludedPattern : public Pattern {
        method ExcludedPattern (line 3165) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
        method matches (line 3167) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
      type Filter (line 3172) | struct Filter {
        method matches (line 3175) | bool matches( TestCaseInfo const& testCase ) const {
      method hasFilters (line 3185) | bool hasFilters() const {
      method matches (line 3188) | bool matches( TestCaseInfo const& testCase ) const {
    class TestSpecParser (line 3209) | class TestSpecParser {
      type Mode (line 3210) | enum Mode{ None, Name, QuotedName, Tag }
      method TestSpecParser (line 3220) | TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases...
      method TestSpecParser (line 3222) | TestSpecParser& parse( std::string const& arg ) {
      method TestSpec (line 3233) | TestSpec testSpec() {
      method visitChar (line 3238) | void visitChar( char c ) {
      method startNewMode (line 3266) | void startNewMode( Mode mode, std::size_t start ) {
      method subString (line 3270) | std::string subString() const { return m_arg.substr( m_start, m_pos ...
      method addPattern (line 3272) | void addPattern() {
      method addFilter (line 3287) | void addFilter() {
    function TestSpec (line 3294) | inline TestSpec parseTestSpec( std::string const& arg ) {
      type Pattern (line 3135) | struct Pattern : SharedImpl<> {
      class NamePattern (line 3139) | class NamePattern : public Pattern {
        method NamePattern (line 3141) | NamePattern( std::string const& name )
        method matches (line 3145) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class TagPattern (line 3152) | class TagPattern : public Pattern {
        method TagPattern (line 3154) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
        method matches (line 3156) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class ExcludedPattern (line 3163) | class ExcludedPattern : public Pattern {
        method ExcludedPattern (line 3165) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
        method matches (line 3167) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
      type Filter (line 3172) | struct Filter {
        method matches (line 3175) | bool matches( TestCaseInfo const& testCase ) const {
      method hasFilters (line 3185) | bool hasFilters() const {
      method matches (line 3188) | bool matches( TestCaseInfo const& testCase ) const {
    type Verbosity (line 3313) | struct Verbosity { enum Level {
      type Level (line 3313) | enum Level {
    type WarnAbout (line 3319) | struct WarnAbout { enum What {
      type What (line 3319) | enum What {
    type ShowDurations (line 3324) | struct ShowDurations { enum OrNot {
      type OrNot (line 3324) | enum OrNot {
    type RunTests (line 3329) | struct RunTests { enum InWhatOrder {
      type InWhatOrder (line 3329) | enum InWhatOrder {
    class TestSpec (line 3335) | class TestSpec
      type Pattern (line 3135) | struct Pattern : SharedImpl<> {
      class NamePattern (line 3139) | class NamePattern : public Pattern {
        method NamePattern (line 3141) | NamePattern( std::string const& name )
        method matches (line 3145) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class TagPattern (line 3152) | class TagPattern : public Pattern {
        method TagPattern (line 3154) | TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {}
        method matches (line 3156) | virtual bool matches( TestCaseInfo const& testCase ) const {
      class ExcludedPattern (line 3163) | class ExcludedPattern : public Pattern {
        method ExcludedPattern (line 3165) | ExcludedPattern( Ptr<Pattern> const& underlyingPattern ) : m_under...
        method matches (line 3167) | virtual bool matches( TestCaseInfo const& testCase ) const { retur...
      type Filter (line 3172) | struct Filter {
        method matches (line 3175) | bool matches( TestCaseInfo const& testCase ) const {
      method hasFilters (line 3185) | bool hasFilters() const {
      method matches (line 3188) | bool matches( TestCaseInfo const& testCase ) const {
    type IConfig (line 3337) | struct IConfig : IShared {
    class StreamBufBase (line 3367) | class StreamBufBase : public std::streambuf {
    type IStream (line 3382) | struct IStream {
    class FileStream (line 3387) | class FileStream : public IStream {
    class CoutStream (line 3396) | class CoutStream : public IStream {
    class DebugOutStream (line 3406) | class DebugOutStream : public IStream {
    type ConfigData (line 3430) | struct ConfigData {
      method ConfigData (line 3432) | ConfigData()
    class Config (line 3481) | class Config : public SharedImpl<IConfig> {
      method Config (line 3488) | Config()
      method Config (line 3491) | Config( ConfigData const& data )
      method listTests (line 3510) | bool listTests() const { return m_data.listTests; }
      method listTestNamesOnly (line 3511) | bool listTestNamesOnly() const { return m_data.listTestNamesOnly; }
      method listTags (line 3512) | bool listTags() const { return m_data.listTags; }
      method listReporters (line 3513) | bool listReporters() const { return m_data.listReporters; }
      method getProcessName (line 3515) | std::string getProcessName() const { return m_data.processName; }
      method shouldDebugBreak (line 3517) | bool shouldDebugBreak() const { return m_data.shouldDebugBreak; }
      method getReporterNames (line 3519) | std::vector<std::string> getReporterNames() const { return m_data.re...
      method abortAfter (line 3521) | int abortAfter() const { return m_data.abortAfter; }
      method TestSpec (line 3523) | TestSpec const& testSpec() const { return m_testSpec; }
      method showHelp (line 3525) | bool showHelp() const { return m_data.showHelp; }
      method showInvisibles (line 3526) | bool showInvisibles() const { return m_data.showInvisibles; }
      method allowThrows (line 3529) | virtual bool allowThrows() const        { return !m_data.noThrow; }
      method name (line 3531) | virtual std::string name() const        { return m_data.name.empty()...
      method includeSuccessfulResults (line 3532) | virtual bool includeSuccessfulResults() const   { return m_data.show...
      method warnAboutMissingAssertions (line 3533) | virtual bool warnAboutMissingAssertions() const { return m_data.warn...
      method showDurations (line 3534) | virtual ShowDurations::OrNot showDurations() const { return m_data.s...
      method runOrder (line 3535) | virtual RunTests::InWhatOrder runOrder() const  { return m_data.runO...
      method rngSeed (line 3536) | virtual unsigned int rngSeed() const    { return m_data.rngSeed; }
      method forceColour (line 3537) | virtual bool forceColour() const { return m_data.forceColour; }
      method IStream (line 3541) | IStream const* openStream() {
    function abortAfterFirst (line 4428) | inline void abortAfterFirst( ConfigData& config ) { config.abortAfter ...
    function abortAfterX (line 4429) | inline void abortAfterX( ConfigData& config, int x ) {
    function addTestOrTags (line 4434) | inline void addTestOrTags( ConfigData& config, std::string const& _tes...
    function addReporterName (line 4435) | inline void addReporterName( ConfigData& config, std::string const& _r...
    function addWarning (line 4437) | inline void addWarning( ConfigData& config, std::string const& _warnin...
    function setOrder (line 4443) | inline void setOrder( ConfigData& config, std::string const& order ) {
    function setRngSeed (line 4453) | inline void setRngSeed( ConfigData& config, std::string const& seed ) {
    function setVerbosity (line 4465) | inline void setVerbosity( ConfigData& config, int level ) {
    function setShowDurations (line 4469) | inline void setShowDurations( ConfigData& config, bool _showDurations ) {
    function loadTestNamesFromFile (line 4474) | inline void loadTestNamesFromFile( ConfigData& config, std::string con...
    function makeCommandLineParser (line 4487) | inline Clara::CommandLine<ConfigData> makeCommandLineParser() {
    type Colour (line 4764) | struct Colour {
      type Code (line 4765) | enum Code {
    type ReporterConfig (line 4826) | struct ReporterConfig {
      method ReporterConfig (line 4827) | explicit ReporterConfig( Ptr<IConfig const> const& _fullConfig )
      method ReporterConfig (line 4830) | ReporterConfig( Ptr<IConfig const> const& _fullConfig, std::ostream&...
      method fullConfig (line 4834) | Ptr<IConfig const> fullConfig() const { return m_fullConfig; }
    type ReporterPreferences (line 4841) | struct ReporterPreferences {
      method ReporterPreferences (line 4842) | ReporterPreferences()
    type LazyStat (line 4850) | struct LazyStat : Option<T> {
      method LazyStat (line 4851) | LazyStat() : used( false ) {}
      method LazyStat (line 4852) | LazyStat& operator=( T const& _value ) {
      method reset (line 4857) | void reset() {
    type TestRunInfo (line 4864) | struct TestRunInfo {
      method TestRunInfo (line 4865) | TestRunInfo( std::string const& _name ) : name( _name ) {}
    type GroupInfo (line 4868) | struct GroupInfo {
      method GroupInfo (line 4869) | GroupInfo(  std::string const& _name,
    type AssertionStats (line 4882) | struct AssertionStats {
      method AssertionStats (line 4883) | AssertionStats( AssertionResult const& _assertionResult,
      method AssertionStats (line 4903) | AssertionStats( AssertionStats const& )              = default;
      method AssertionStats (line 4904) | AssertionStats( AssertionStats && )                  = default;
      method AssertionStats (line 4905) | AssertionStats& operator = ( AssertionStats const& ) = default;
      method AssertionStats (line 4906) | AssertionStats& operator = ( AssertionStats && )     = default;
    type SectionStats (line 4914) | struct SectionStats {
      method SectionStats (line 4915) | SectionStats(   SectionInfo const& _sectionInfo,
      method SectionStats (line 4926) | SectionStats( SectionStats const& )              = default;
      method SectionStats (line 4927) | SectionStats( SectionStats && )                  = default;
      method SectionStats (line 4928) | SectionStats& operator = ( SectionStats const& ) = default;
      method SectionStats (line 4929) | SectionStats& operator = ( SectionStats && )     = default;
    type TestCaseStats (line 4938) | struct TestCaseStats {
      method TestCaseStats (line 4939) | TestCaseStats(  TestCaseInfo const& _testInfo,
      method TestCaseStats (line 4953) | TestCaseStats( TestCaseStats const& )              = default;
      method TestCaseStats (line 4954) | TestCaseStats( TestCaseStats && )                  = default;
      method TestCaseStats (line 4955) | TestCaseStats& operator = ( TestCaseStats const& ) = default;
      method TestCaseStats (line 4956) | TestCaseStats& operator = ( TestCaseStats && )     = default;
    type TestGroupStats (line 4966) | struct TestGroupStats {
      method TestGroupStats (line 4967) | TestGroupStats( GroupInfo const& _groupInfo,
      method TestGroupStats (line 4974) | TestGroupStats( GroupInfo const& _groupInfo )
      method TestGroupStats (line 4981) | TestGroupStats( TestGroupStats const& )              = default;
      method TestGroupStats (line 4982) | TestGroupStats( TestGroupStats && )                  = default;
      method TestGroupStats (line 4983) | TestGroupStats& operator = ( TestGroupStats const& ) = default;
      method TestGroupStats (line 4984) | TestGroupStats& operator = ( TestGroupStats && )     = default;
    type TestRunStats (line 4992) | struct TestRunStats {
      method TestRunStats (line 4993) | TestRunStats(   TestRunInfo const& _runInfo,
      method TestRunStats (line 5003) | TestRunStats( TestRunStats const& _other )
      method TestRunStats (line 5009) | TestRunStats( TestRunStats const& )              = default;
      method TestRunStats (line 5010) | TestRunStats( TestRunStats && )                  = default;
      method TestRunStats (line 5011) | TestRunStats& operator = ( TestRunStats const& ) = default;
      method TestRunStats (line 5012) | TestRunStats& operator = ( TestRunStats && )     = default;
    type IStreamingReporter (line 5020) | struct IStreamingReporter : IShared {
    type IReporterFactory (line 5049) | struct IReporterFactory : IShared {
    type IReporterRegistry (line 5055) | struct IReporterRegistry {
    function listTests (line 5074) | inline std::size_t listTests( Config const& config ) {
    function listTestsNamesOnly (line 5112) | inline std::size_t listTestsNamesOnly( Config const& config ) {
    type TagInfo (line 5128) | struct TagInfo {
      method TagInfo (line 5129) | TagInfo() : count ( 0 ) {}
      method add (line 5130) | void add( std::string const& spelling ) {
      method all (line 5134) | std::string all() const {
    function listTags (line 5146) | inline std::size_t listTags( Config const& config ) {
    function listReporters (line 5190) | inline std::size_t listReporters( Config const& /*config*/ ) {
    function list (line 5213) | inline Option<std::size_t> list( Config const& config ) {
    type TestCaseTracking (line 5240) | namespace TestCaseTracking {
      type ITracker (line 5242) | struct ITracker : SharedImpl<> {
      class TrackerContext (line 5266) | class TrackerContext {
        type RunState (line 5268) | enum RunState {
        method TrackerContext (line 5280) | static TrackerContext& instance() {
        method TrackerContext (line 5285) | TrackerContext()
        method endRun (line 5292) | void endRun() {
        method startCycle (line 5298) | void startCycle() {
        method completeCycle (line 5302) | void completeCycle() {
        method completedCycle (line 5306) | bool completedCycle() const {
        method ITracker (line 5309) | ITracker& currentTracker() {
        method setCurrentTracker (line 5312) | void setCurrentTracker( ITracker* tracker ) {
      class TrackerBase (line 5317) | class TrackerBase : public ITracker {
        type CycleState (line 5319) | enum CycleState {
        class TrackerHasName (line 5327) | class TrackerHasName {
          method TrackerHasName (line 5330) | TrackerHasName( std::string const& name ) : m_name( name ) {}
        method TrackerBase (line 5342) | TrackerBase( std::string const& name, TrackerContext& ctx, ITracke...
        method isComplete (line 5353) | virtual bool isComplete() const CATCH_OVERRIDE {
        method isSuccessfullyCompleted (line 5356) | virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE {
        method isOpen (line 5359) | virtual bool isOpen() const CATCH_OVERRIDE {
        method hasChildren (line 5362) | virtual bool hasChildren() const CATCH_OVERRIDE {
        method addChild (line 5366) | virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE {
        method ITracker (line 5370) | virtual ITracker* findChild( std::string const& name ) CATCH_OVERR...
        method ITracker (line 5376) | virtual ITracker& parent() CATCH_OVERRIDE {
        method open (line 5388) | void open() {
        method markAsNeedingAnotherRun (line 5431) | virtual void markAsNeedingAnotherRun() CATCH_OVERRIDE {
        method moveToParent (line 5435) | void moveToParent() {
        method moveToThis (line 5439) | void moveToThis() {
      class SectionTracker (line 5444) | class SectionTracker : public TrackerBase {
        method SectionTracker (line 5446) | SectionTracker( std::string const& name, TrackerContext& ctx, ITra...
        method SectionTracker (line 5451) | static SectionTracker& acquire( TrackerContext& ctx, std::string c...
      class IndexTracker (line 5471) | class IndexTracker : public TrackerBase {
        method IndexTracker (line 5475) | IndexTracker( std::string const& name, TrackerContext& ctx, ITrack...
        method IndexTracker (line 5482) | static IndexTracker& acquire( TrackerContext& ctx, std::string con...
        method index (line 5504) | int index() const { return m_index; }
        method moveNext (line 5506) | void moveNext() {
      function ITracker (line 5518) | inline ITracker& TrackerContext::startRun() {
    function fatal (line 5540) | inline void fatal( std::string const& message, int exitCode ) {
    type FatalConditionHandler (line 5555) | struct FatalConditionHandler {
      method reset (line 5556) | void reset() {}
      method handleSignal (line 5580) | static void handleSignal( int sig ) {
      method FatalConditionHandler (line 5587) | FatalConditionHandler() : m_isSet( true ) {
      method reset (line 5594) | void reset() {
    type SignalDefs (line 5567) | struct SignalDefs { int id; const char* name; }
    type FatalConditionHandler (line 5578) | struct FatalConditionHandler {
      method reset (line 5556) | void reset() {}
      method handleSignal (line 5580) | static void handleSignal( int sig ) {
      method FatalConditionHandler (line 5587) | FatalConditionHandler() : m_isSet( true ) {
      method reset (line 5594) | void reset() {
    class StreamRedirect (line 5614) | class StreamRedirect {
      method StreamRedirect (line 5617) | StreamRedirect( std::ostream& stream, std::string& targetString )
    class RunContext (line 5639) | class RunContext : public IResultCapture, public IRunner {
      method RunContext (line 5646) | explicit RunContext( Ptr<IConfig const> const& _config, Ptr<IStreami...
      method testGroupStarting (line 5663) | void testGroupStarting( std::string const& testSpec, std::size_t gro...
      method testGroupEnded (line 5666) | void testGroupEnded( std::string const& testSpec, Totals const& tota...
      method Totals (line 5670) | Totals runTest( TestCase const& testCase ) {
      method config (line 5708) | Ptr<IConfig const> config() const {
      method assertionEnded (line 5714) | virtual void assertionEnded( AssertionResult const& result ) {
      method sectionStarted (line 5730) | virtual bool sectionStarted (
      method testForMissingAssertions (line 5751) | bool testForMissingAssertions( Counts& assertions ) {
      method sectionEnded (line 5763) | virtual void sectionEnded( SectionEndInfo const& endInfo ) {
      method sectionEndedEarly (line 5776) | virtual void sectionEndedEarly( SectionEndInfo const& endInfo ) {
      method pushScopedMessage (line 5786) | virtual void pushScopedMessage( MessageInfo const& message ) {
      method popScopedMessage (line 5790) | virtual void popScopedMessage( MessageInfo const& message ) {
      method getCurrentTestName (line 5794) | virtual std::string getCurrentTestName() const {
      method AssertionResult (line 5800) | virtual const AssertionResult* getLastResult() const {
      method handleFatalErrorCondition (line 5804) | virtual void handleFatalErrorCondition( std::string const& message ) {
      method aborting (line 5837) | bool aborting() const {
      method runCurrentTest (line 5843) | void runCurrentTest( std::string& redirectedCout, std::string& redir...
      method invokeActiveTestCase (line 5889) | void invokeActiveTestCase() {
      method ResultBuilder (line 5897) | ResultBuilder makeUnexpectedResultBuilder() const {
      method handleUnfinishedSections (line 5904) | void handleUnfinishedSections() {
    function IResultCapture (line 5932) | IResultCapture& getResultCapture() {
    type Version (line 5947) | struct Version {
    function createReporter (line 5977) | Ptr<IStreamingReporter> createReporter( std::string const& reporterNam...
    function makeReporter (line 5987) | Ptr<IStreamingReporter> makeReporter( Ptr<Config> const& config ) {
    function addListeners (line 5999) | Ptr<IStreamingReporter> addListeners( Ptr<IConfig const> const& config...
    function Totals (line 6008) | Totals runTests( Ptr<Config> const& config ) {
      method Totals (line 2180) | Totals operator - ( Totals const& other ) const {
      method Totals (line 2187) | Totals delta( Totals const& prevTotals ) const {
      method Totals (line 2198) | Totals& operator += ( Totals const& other ) {
    function applyFilenamesAsTags (line 6039) | void applyFilenamesAsTags( IConfig const& config ) {
    class Session (line 6059) | class Session : NonCopyable {
      type OnUnusedOptions (line 6064) | struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }
        type DoWhat (line 6064) | enum DoWhat { Ignore, Fail }
      method Session (line 6066) | Session()
      method showHelp (line 6079) | void showHelp( std::string const& processName ) {
      method applyCommandLine (line 6086) | int applyCommandLine( int argc, char const* const argv[], OnUnusedOp...
      method useConfigData (line 6108) | void useConfigData( ConfigData const& _configData ) {
      method run (line 6113) | int run( int argc, char const* const argv[] ) {
      method run (line 6121) | int run() {
      method ConfigData (line 6152) | ConfigData& configData() {
      method Config (line 6155) | Config& config() {
    type LexSort (line 6185) | struct LexSort {
    type RandomNumberGenerator (line 6188) | struct RandomNumberGenerator {
    function sortTests (line 6192) | inline std::vector<TestCase> sortTests( IConfig const& config, std::ve...
    function matchTest (line 6214) | bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IC...
    function enforceNoDuplicateTestCases (line 6218) | void enforceNoDuplicateTestCases( std::vector<TestCase> const& functio...
    function filterTests (line 6235) | std::vector<TestCase> filterTests( std::vector<TestCase> const& testCa...
    class TestRegistry (line 6249) | class TestRegistry : public ITestCaseRegistry {
      method TestRegistry (line 6251) | TestRegistry() : m_unnamedCount( 0 ) {}
      method registerTest (line 6254) | virtual void registerTest( TestCase const& testCase ) {
    class FreeFunctionTestCase (line 6288) | class FreeFunctionTestCase : public SharedImpl<ITestCase> {
      method FreeFunctionTestCase (line 6291) | FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {}
      method invoke (line 6293) | virtual void invoke() const {
    function extractClassName (line 6303) | inline std::string extractClassName( std::string const& classOrQualifi...
    function registerTestCase (line 6316) | void registerTestCase
    function registerTestCaseFunction (line 6330) | void registerTestCaseFunction
    class ReporterRegistry (line 6357) | class ReporterRegistry : public IReporterRegistry {
      method IStreamingReporter (line 6363) | virtual IStreamingReporter* create( std::string const& name, Ptr<ICo...
      method registerReporter (line 6370) | void registerReporter( std::string const& name, Ptr<IReporterFactory...
      method registerListener (line 6373) | void registerListener( Ptr<IReporterFactory> const& factory ) {
      method FactoryMap (line 6377) | virtual FactoryMap const& getFactories() const CATCH_OVERRIDE {
      method Listeners (line 6380) | virtual Listeners const& getListeners() const CATCH_OVERRIDE {
    class ExceptionTranslatorRegistry (line 6399) | class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry {
      method registerTranslator (line 6405) | virtual void registerTranslator( const IExceptionTranslator* transla...
      method translateActiveException (line 6409) | virtual std::string translateActiveException() const {
      method tryTranslators (line 6440) | std::string tryTranslators() const {
    class RegistryHub (line 6456) | class RegistryHub : public IRegistryHub, public IMutableRegistryHub {
      method RegistryHub (line 6462) | RegistryHub() {
      method IReporterRegistry (line 6464) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
      method ITestCaseRegistry (line 6467) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
      method IExceptionTranslatorRegistry (line 6470) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
      method registerReporter (line 6475) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
      method registerListener (line 6478) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
      method registerTest (line 6481) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
      method registerTranslator (line 6484) | virtual void registerTranslator( const IExceptionTranslator* transla...
    function RegistryHub (line 6495) | inline RegistryHub*& getTheRegistryHub() {
      method RegistryHub (line 6462) | RegistryHub() {
      method IReporterRegistry (line 6464) | virtual IReporterRegistry const& getReporterRegistry() const CATCH_O...
      method ITestCaseRegistry (line 6467) | virtual ITestCaseRegistry const& getTestCaseRegistry() const CATCH_O...
      method IExceptionTranslatorRegistry (line 6470) | virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry...
      method registerReporter (line 6475) | virtual void registerReporter( std::string const& name, Ptr<IReporte...
      method registerListener (line 6478) | virtual void registerListener( Ptr<IReporterFactory> const& factory ...
      method registerTest (line 6481) | virtual void registerTest( TestCase const& testInfo ) CATCH_OVERRIDE {
      method registerTranslator (line 6484) | virtual void registerTranslator( const IExceptionTranslator* transla...
    function IRegistryHub (line 6503) | IRegistryHub& getRegistryHub() {
    function IMutableRegistryHub (line 6506) | IMutableRegistryHub& getMutableRegistryHub() {
    function cleanUp (line 6509) | void cleanUp() {
    function translateActiveException (line 6514) | std::string translateActiveException() {
    class StreamBufImpl (line 6554) | class StreamBufImpl : public StreamBufBase {
      method StreamBufImpl (line 6559) | StreamBufImpl() {
      method overflow (line 6568) | int overflow( int c ) {
      method sync (line 6580) | int sync() {
    type OutputDebugWriter (line 6604) | struct OutputDebugWriter {
    class Context (line 6642) | class Context : public IMutableContext {
      method Context (line 6644) | Context() : m_config( CATCH_NULL ), m_runner( CATCH_NULL ), m_result...
      method IResultCapture (line 6649) | virtual IResultCapture* getResultCapture() {
      method IRunner (line 6652) | virtual IRunner* getRunner() {
      method getGeneratorIndex (line 6655) | virtual size_t getGeneratorIndex( std::string const& fileInfo, size_...
      method advanceGeneratorsForCurrentTest (line 6660) | virtual bool advanceGeneratorsForCurrentTest() {
      method getConfig (line 6665) | virtual Ptr<IConfig const> getConfig() const {
      method setResultCapture (line 6670) | virtual void setResultCapture( IResultCapture* resultCapture ) {
      method setRunner (line 6673) | virtual void setRunner( IRunner* runner ) {
      method setConfig (line 6676) | virtual void setConfig( Ptr<IConfig const> const& config ) {
      method IGeneratorsForTest (line 6683) | IGeneratorsForTest* findGeneratorsForCurrentTest() {
      method IGeneratorsForTest (line 6693) | IGeneratorsForTest& getGeneratorsForCurrentTest() {
    function IMutableContext (line 6713) | IMutableContext& getCurrentMutableContext() {
    function IContext (line 6718) | IContext& getCurrentContext() {
    function cleanUpContext (line 6722) | void cleanUpContext() {
    type IColourImpl (line 6734) | struct IColourImpl {
    type NoColourImpl (line 6739) | struct NoColourImpl : IColourImpl {
      method use (line 6740) | void use( Colour::Code ) {}
      method IColourImpl (line 6742) | static IColourImpl* instance() {
    class Win32ColourImpl (line 6774) | class Win32ColourImpl : public IColourImpl {
      method Win32ColourImpl (line 6776) | Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) )
      method use (line 6784) | virtual void use( Colour::Code _colourCode ) {
      method setTextAttribute (line 6805) | void setTextAttribute( WORD _textAttribute ) {
    function IColourImpl (line 6813) | IColourImpl* platformColourInstance() {
    class PosixColourImpl (line 6832) | class PosixColourImpl : public IColourImpl {
      method use (line 6834) | virtual void use( Colour::Code _colourCode ) {
      method IColourImpl (line 6853) | static IColourImpl* instance() {
      method setColour (line 6859) | void setColour( const char* _escapeCode ) {
    function IColourImpl (line 6864) | IColourImpl* platformColourInstance() {
    function IColourImpl (line 6878) | static IColourImpl* platformColourInstance() { return NoColourImpl::in...
    type GeneratorInfo (line 6908) | struct GeneratorInfo : IGeneratorInfo {
      method GeneratorInfo (line 6910) | GeneratorInfo( std::size_t size )
      method moveNext (line 6915) | bool moveNext() {
      method getCurrentIndex (line 6923) | std::size_t getCurrentIndex() const {
    class GeneratorsForTest (line 6933) | class GeneratorsForTest : public IGeneratorsForTest {
      method IGeneratorInfo (line 6940) | IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::...
      method moveNext (line 6951) | bool moveNext() {
    function IGeneratorsForTest (line 6966) | IGeneratorsForTest* createGeneratorsForTest()
    function SourceLineInfo (line 7043) | SourceLineInfo AssertionResult::getSourceInfo() const {
      method SourceLineInfo (line 354) | SourceLineInfo( SourceLineInfo && )                  = default;
      method SourceLineInfo (line 355) | SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
      method SourceLineInfo (line 356) | SourceLineInfo& operator = ( SourceLineInfo && )     = default;
    function parseSpecialTag (line 7058) | inline TestCaseInfo::SpecialProperties parseSpecialTag( std::string co...
    function isReservedTag (line 7072) | inline bool isReservedTag( std::string const& tag ) {
    function enforceNotReservedTag (line 7075) | inline void enforceNotReservedTag( std::string const& tag, SourceLineI...
    function TestCase (line 7091) | TestCase makeTestCase(  ITestCase* _testCase,
    function setTags (line 7136) | void setTags( TestCaseInfo& testCaseInfo, std::set<std::string> const&...
    function TestCase (line 7196) | TestCase TestCase::withName( std::string const& _newName ) const {
    function TestCase (line 7227) | TestCase& TestCase::operator = ( TestCase const& other ) {
    function TestCaseInfo (line 7233) | TestCaseInfo const& TestCase::getTestCaseInfo() const
      type SpecialProperties (line 2771) | enum SpecialProperties{
    type IReporter (line 7318) | struct IReporter : IShared {
    class LegacyReporterAdapter (line 7337) | class LegacyReporterAdapter : public SharedImpl<IStreamingReporter>
    function ReporterPreferences (line 7369) | ReporterPreferences LegacyReporterAdapter::getPreferences() const {
      method ReporterPreferences (line 4842) | ReporterPreferences()
    function getCurrentTicks (line 7450) | uint64_t getCurrentTicks() {
    function getCurrentTicks (line 7461) | uint64_t getCurrentTicks() {
    function startsWith (line 7492) | bool startsWith( std::string const& s, std::string const& prefix ) {
    function endsWith (line 7495) | bool endsWith( std::string const& s, std::string const& suffix ) {
    function contains (line 7498) | bool contains( std::string const& s, std::string const& infix ) {
    function toLowerInPlace (line 7501) | void toLowerInPlace( std::string& s ) {
    function toLower (line 7504) | std::string toLower( std::string const& s ) {
    function trim (line 7509) | std::string trim( std::string const& str ) {
    function replaceInPlace (line 7517) | bool replaceInPlace( std::string& str, std::string const& replaceThis,...
    function seedRng (line 7562) | void seedRng( IConfig const& config ) {
    function rngSeed (line 7566) | unsigned int rngSeed() {
    function throwLogicError (line 7579) | void throwLogicError( std::string const& message, SourceLineInfo const...
    function isDebuggerActive (line 7645) | bool isDebuggerActive(){
    function isDebuggerActive (line 7681) | bool isDebuggerActive() {
    function isDebuggerActive (line 7688) | bool isDebuggerActive() {
    function isDebuggerActive (line 7694) | inline bool isDebuggerActive() { return false; }
    function writeToDebugConsole (line 7701) | void writeToDebugConsole( std::string const& text ) {
    function writeToDebugConsole (line 7707) | void writeToDebugConsole( std::string const& text ) {
    type Detail (line 7719) | namespace Detail {
      type BorgType (line 1559) | struct BorgType {
      type TrueType (line 1563) | struct TrueType { char sizer[1]; }
      type FalseType (line 1564) | struct FalseType { char sizer[2]; }
      type IsStreamInsertable (line 1572) | struct IsStreamInsertable {
      type EnumStringMaker (line 1582) | struct EnumStringMaker
        method convert (line 1584) | static std::string convert( T const& ) { return unprintableString; }
      type EnumStringMaker<T,true> (line 1588) | struct EnumStringMaker<T,true>
        method convert (line 1590) | static std::string convert( T const& v )
      type StringMakerBase (line 1599) | struct StringMakerBase {
        method convert (line 1602) | static std::string convert( T const& v )
        method convert (line 1608) | static std::string convert( T const& ) { return unprintableString; }
      type StringMakerBase<true> (line 1613) | struct StringMakerBase<true> {
        method convert (line 1615) | static std::string convert( T const& _value ) {
      function rawMemoryToString (line 1625) | inline std::string rawMemoryToString( const T& object ) {
      function makeString (line 1717) | std::string makeString( T const& value ) {
      function rangeToString (line 1736) | std::string rangeToString( InputIterator first, InputIterator last ) {
      class Approx (line 2580) | class Approx {
        method Approx (line 2582) | explicit Approx ( double value )
        method Approx (line 2588) | Approx( Approx const& other )
        method Approx (line 2594) | static Approx custom() {
        method Approx (line 2598) | Approx operator()( double value ) {
        method Approx (line 2622) | Approx& epsilon( double newEpsilon ) {
        method Approx (line 2627) | Approx& scale( double newScale ) {
        method toString (line 2632) | std::string toString() const {
      type Endianness (line 7726) | struct Endianness {
        type Arch (line 7727) | enum Arch { Big, Little }
        method Arch (line 7729) | static Arch which() {
      function rawMemoryToString (line 7741) | std::string rawMemoryToString( const void *object, std::size_t size )
    function toString (line 7759) | std::string toString( std::string const& value ) {
    function toString (line 7777) | std::string toString( std::wstring const& value ) {
    function toString (line 7786) | std::string toString( const char* const value ) {
    function toString (line 7790) | std::string toString( char* const value ) {
    function toString (line 7794) | std::string toString( const wchar_t* const value )
    function toString (line 7799) | std::string toString( wchar_t* const value )
    function toString (line 7804) | std::string toString( int value ) {
    function toString (line 7812) | std::string toString( unsigned long value ) {
    function toString (line 7820) | std::string toString( unsigned int value ) {
    function fpToString (line 7825) | std::string fpToString( T value, int precision ) {
    function toString (line 7840) | std::string toString( const double value ) {
    function toString (line 7843) | std::string toString( const float value ) {
    function toString (line 7847) | std::string toString( bool value ) {
    function toString (line 7851) | std::string toString( char value ) {
    function toString (line 7857) | std::string toString( signed char value ) {
    function toString (line 7861) | std::string toString( unsigned char value ) {
    function toString (line 7866) | std::string toString( long long value ) {
    function toString (line 7873) | std::string toString( unsigned long long value ) {
    function toString (line 7883) | std::string toString( std::nullptr_t ) {
    function toString (line 7889) | std::string toString( NSString const * const& nsstring ) {
    function toString (line 7899) | std::string toString( NSObject* const& nsObject ) {
    function capturedExpressionWithSecondArgument (line 7911) | std::string capturedExpressionWithSecondArgument( std::string const& c...
    function ResultBuilder (line 7926) | ResultBuilder& ResultBuilder::setResultType( ResultWas::OfType result ) {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    function ResultBuilder (line 7930) | ResultBuilder& ResultBuilder::setResultType( bool result ) {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    function ResultBuilder (line 7934) | ResultBuilder& ResultBuilder::setLhs( std::string const& lhs ) {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    function ResultBuilder (line 7938) | ResultBuilder& ResultBuilder::setRhs( std::string const& rhs ) {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    function ResultBuilder (line 7942) | ResultBuilder& ResultBuilder::setOp( std::string const& op ) {
      method ResultBuilder (line 1195) | ResultBuilder& operator << ( T const& value ) {
      type ExprComponents (line 1227) | struct ExprComponents {
        method ExprComponents (line 1228) | ExprComponents() : testFalse( false ) {}
    function AssertionResult (line 8008) | AssertionResult ResultBuilder::build() const
      method AssertionResult (line 818) | AssertionResult( AssertionResult const& )              = default;
      method AssertionResult (line 819) | AssertionResult( AssertionResult && )                  = default;
      method AssertionResult (line 820) | AssertionResult& operator = ( AssertionResult const& ) = default;
      method AssertionResult (line 821) | AssertionResult& operator = ( AssertionResult && )     = default;
    class TagAliasRegistry (line 8061) | class TagAliasRegistry : public ITagAliasRegistry {
    function TagAliasRegistry (line 8121) | TagAliasRegistry& TagAliasRegistry::get() {
    function ITagAliasRegistry (line 8128) | ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasReg...
    class MultipleReporters (line 8148) | class MultipleReporters : public SharedImpl<IStreamingReporter> {
      method add (line 8153) | void add( Ptr<IStreamingReporter> const& reporter ) {
      method ReporterPreferences (line 8159) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
      method noMatchingTestCases (line 8163) | virtual void noMatchingTestCases( std::string const& spec ) CATCH_OV...
      method testRunStarting (line 8170) | virtual void testRunStarting( TestRunInfo const& testRunInfo ) CATCH...
      method testGroupStarting (line 8177) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
      method testCaseStarting (line 8184) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
      method sectionStarting (line 8191) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
      method assertionStarting (line 8198) | virtual void assertionStarting( AssertionInfo const& assertionInfo )...
      method assertionEnded (line 8206) | virtual bool assertionEnded( AssertionStats const& assertionStats ) ...
      method sectionEnded (line 8215) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
      method testCaseEnded (line 8222) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
      method testGroupEnded (line 8229) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
      method testRunEnded (line 8236) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
      method skipTest (line 8243) | virtual void skipTest( TestCaseInfo const& testInfo ) CATCH_OVERRIDE {
    function addReporter (line 8251) | Ptr<IStreamingReporter> addReporter( Ptr<IStreamingReporter> const& ex...
    type StreamingReporterBase (line 8284) | struct StreamingReporterBase : SharedImpl<IStreamingReporter> {
      method StreamingReporterBase (line 8286) | StreamingReporterBase( ReporterConfig const& _config )
      method ReporterPreferences (line 8293) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
      method noMatchingTestCases (line 8299) | virtual void noMatchingTestCases( std::string const& ) CATCH_OVERRID...
      method testRunStarting (line 8301) | virtual void testRunStarting( TestRunInfo const& _testRunInfo ) CATC...
      method testGroupStarting (line 8304) | virtual void testGroupStarting( GroupInfo const& _groupInfo ) CATCH_...
      method testCaseStarting (line 8308) | virtual void testCaseStarting( TestCaseInfo const& _testInfo ) CATCH...
      method sectionStarting (line 8311) | virtual void sectionStarting( SectionInfo const& _sectionInfo ) CATC...
      method sectionEnded (line 8315) | virtual void sectionEnded( SectionStats const& /* _sectionStats */ )...
      method testCaseEnded (line 8318) | virtual void testCaseEnded( TestCaseStats const& /* _testCaseStats *...
      method testGroupEnded (line 8321) | virtual void testGroupEnded( TestGroupStats const& /* _testGroupStat...
      method testRunEnded (line 8324) | virtual void testRunEnded( TestRunStats const& /* _testRunStats */ )...
      method skipTest (line 8330) | virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {
    type CumulativeReporterBase (line 8346) | struct CumulativeReporterBase : SharedImpl<IStreamingReporter> {
      type Node (line 8348) | struct Node : SharedImpl<> {
        method Node (line 8349) | explicit Node( T const& _value ) : value( _value ) {}
      type SectionNode (line 8356) | struct SectionNode : SharedImpl<> {
        method SectionNode (line 8357) | explicit SectionNode( SectionStats const& _stats ) : stats( _stats...
      type BySectionInfo (line 8376) | struct BySectionInfo {
        method BySectionInfo (line 8377) | BySectionInfo( SectionInfo const& other ) : m_other( other ) {}
        method BySectionInfo (line 8378) | BySectionInfo( BySectionInfo const& other ) : m_other( other.m_oth...
      method CumulativeReporterBase (line 8391) | CumulativeReporterBase( ReporterConfig const& _config )
      method ReporterPreferences (line 8399) | virtual ReporterPreferences getPreferences() const CATCH_OVERRIDE {
      method testRunStarting (line 8403) | virtual void testRunStarting( TestRunInfo const& ) CATCH_OVERRIDE {}
      method testGroupStarting (line 8404) | virtual void testGroupStarting( GroupInfo const& ) CATCH_OVERRIDE {}
      method testCaseStarting (line 8406) | virtual void testCaseStarting( TestCaseInfo const& ) CATCH_OVERRIDE {}
      method sectionStarting (line 8408) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
      method assertionStarting (line 8433) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
      method assertionEnded (line 8435) | virtual bool assertionEnded( AssertionStats const& assertionStats ) {
      method sectionEnded (line 8441) | virtual void sectionEnded( SectionStats const& sectionStats ) CATCH_...
      method testCaseEnded (line 8447) | virtual void testCaseEnded( TestCaseStats const& testCaseStats ) CAT...
      method testGroupEnded (line 8458) | virtual void testGroupEnded( TestGroupStats const& testGroupStats ) ...
      method testRunEnded (line 8463) | virtual void testRunEnded( TestRunStats const& testRunStats ) CATCH_...
      method skipTest (line 8471) | virtual void skipTest( TestCaseInfo const& ) CATCH_OVERRIDE {}
    type TestEventListenerBase (line 8499) | struct TestEventListenerBase : StreamingReporterBase {
      method TestEventListenerBase (line 8500) | TestEventListenerBase( ReporterConfig const& _config )
      method assertionStarting (line 8504) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
      method assertionEnded (line 8505) | virtual bool assertionEnded( AssertionStats const& ) CATCH_OVERRIDE {
    class LegacyReporterRegistrar (line 8518) | class LegacyReporterRegistrar {
      class ReporterFactory (line 8520) | class ReporterFactory : public IReporterFactory {
        method IStreamingReporter (line 8521) | virtual IStreamingReporter* create( ReporterConfig const& config )...
        method getDescription (line 8525) | virtual std::string getDescription() const {
      method LegacyReporterRegistrar (line 8532) | LegacyReporterRegistrar( std::string const& name ) {
    class ReporterRegistrar (line 8538) | class ReporterRegistrar {
      class ReporterFactory (line 8540) | class ReporterFactory : public SharedImpl<IReporterFactory> {
        method IStreamingReporter (line 8553) | virtual IStreamingReporter* create( ReporterConfig const& config )...
        method getDescription (line 8557) | virtual std::string getDescription() const {
      method ReporterRegistrar (line 8564) | ReporterRegistrar( std::string const& name ) {
    class ListenerRegistrar (line 8570) | class ListenerRegistrar {
      class ListenerFactory (line 8572) | class ListenerFactory : public SharedImpl<IReporterFactory> {
        method IStreamingReporter (line 8574) | virtual IStreamingReporter* create( ReporterConfig const& config )...
        method getDescription (line 8577) | virtual std::string getDescription() const {
      method ListenerRegistrar (line 8584) | ListenerRegistrar() {
    class XmlEncode (line 8609) | class XmlEncode {
      type ForWhat (line 8611) | enum ForWhat { ForTextNodes, ForAttributes }
      method XmlEncode (line 8613) | XmlEncode( std::string const& str, ForWhat forWhat = ForTextNodes )
      method encodeTo (line 8618) | void encodeTo( std::ostream& os ) const {
    class XmlWriter (line 8664) | class XmlWriter {
      class ScopedElement (line 8667) | class ScopedElement {
        method ScopedElement (line 8669) | ScopedElement( XmlWriter* writer )
        method ScopedElement (line 8673) | ScopedElement( ScopedElement const& other )
        method ScopedElement (line 8683) | ScopedElement& writeText( std::string const& text, bool indent = t...
        method ScopedElement (line 8689) | ScopedElement& writeAttribute( std::string const& name, T const& a...
      method XmlWriter (line 8698) | XmlWriter()
      method XmlWriter (line 8704) | XmlWriter( std::ostream& os )
      method XmlWriter (line 8715) | XmlWriter& startElement( std::string const& name ) {
      method ScopedElement (line 8725) | ScopedElement scopedElement( std::string const& name ) {
        method ScopedElement (line 8669) | ScopedElement( XmlWriter* writer )
        method ScopedElement (line 8673) | ScopedElement( ScopedElement const& other )
        method ScopedElement (line 8683) | ScopedElement& writeText( std::string const& text, bool indent = t...
        method ScopedElement (line 8689) | ScopedElement& writeAttribute( std::string const& name, T const& a...
      method XmlWriter (line 8731) | XmlWriter& endElement() {
      method XmlWriter (line 8745) | XmlWriter& writeAttribute( std::string const& name, std::string cons...
      method XmlWriter (line 8751) | XmlWriter& writeAttribute( std::string const& name, bool attribute ) {
      method XmlWriter (line 8757) | XmlWriter& writeAttribute( std::string const& name, T const& attribu...
      method XmlWriter (line 8763) | XmlWriter& writeText( std::string const& text, bool indent = true ) {
      method XmlWriter (line 8775) | XmlWriter& writeComment( std::string const& text ) {
      method XmlWriter (line 8782) | XmlWriter& writeBlankLine() {
      method setStream (line 8788) | void setStream( std::ostream& os ) {
      method ensureTagClosed (line 8800) | void ensureTagClosed() {
      method newlineIfNecessary (line 8807) | void newlineIfNecessary() {
    class XmlReporter (line 8838) | class XmlReporter : public StreamingReporterBase {
      method XmlReporter (line 8840) | XmlReporter( ReporterConfig const& _config )
      method getDescription (line 8849) | static std::string getDescription() {
      method noMatchingTestCases (line 8855) | virtual void noMatchingTestCases( std::string const& s ) CATCH_OVERR...
      method testRunStarting (line 8859) | virtual void testRunStarting( TestRunInfo const& testInfo ) CATCH_OV...
      method testGroupStarting (line 8867) | virtual void testGroupStarting( GroupInfo const& groupInfo ) CATCH_O...
      method testCaseStarting (line 8873) | virtual void testCaseStarting( TestCaseInfo const& testInfo ) CATCH_...
      method sectionStarting (line 8881) | virtual void sectionStarting( SectionInfo const& sectionInfo ) CATCH...
      method assertionStarting (line 8890) | virtual void assertionStarting( AssertionInfo const& ) CATCH_OVERRID...
      method assertionEnded (line 8892) | virtual bool assertionEnded( AssertionStats co
Condensed preview — 375 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,200K chars).
[
  {
    "path": ".dockerignore",
    "chars": 16,
    "preview": ".git\nDockerfile\n"
  },
  {
    "path": ".gitattributes",
    "chars": 55,
    "preview": ".gitattributes export-ignore\n.gitignore export-ignore\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 586,
    "preview": "*~\nbuild/\nwindows/\nscratch/\nout/\ndebian_repo\n_CPack_Packages/\n/libraries/\nCMakeFiles/\nCMakeCache.txt\n.o\nbenchmarks/\n.kde"
  },
  {
    "path": ".travis.yml",
    "chars": 506,
    "preview": "before_install:\n  - sudo add-apt-repository ppa:yjwong/opencv2 -y\n  - sudo apt-get update -q\n\ninstall: sudo apt-get -y i"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 113,
    "preview": "To get started, <a href=\"https://cla-assistant.io/openalpr/openalpr\">sign the Contributor License Agreement</a>.\n"
  },
  {
    "path": "Dockerfile",
    "chars": 614,
    "preview": "from ubuntu:18.04\n\n# Install prerequisites\nrun apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \\\n   "
  },
  {
    "path": "LICENSE",
    "chars": 34520,
    "preview": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C)"
  },
  {
    "path": "README.md",
    "chars": 5756,
    "preview": "openalpr\n========\n\nOpenALPR is an open source *Automatic License Plate Recognition* library written in C++ with bindings"
  },
  {
    "path": "cla.txt",
    "chars": 5575,
    "preview": "In order to clarify the intellectual property license granted with Contributions from any person or entity, OpenALPR Tec"
  },
  {
    "path": "config/alprd.conf.defaults",
    "chars": 900,
    "preview": "[daemon]\n\n; country determines the training dataset used for recognizing plates.  \n; Valid values are: us, eu, au, auwid"
  },
  {
    "path": "config/alprd.conf.user",
    "chars": 147,
    "preview": "; This configuration file overrides the default values specified \n; in ${CMAKE_INSTALL_PREFIX}/share/openalpr/config/alp"
  },
  {
    "path": "config/openalpr.conf.defaults",
    "chars": 4296,
    "preview": "\n; Specify the path to the runtime data directory\nruntime_dir = ${CMAKE_INSTALL_PREFIX}/share/openalpr/runtime_data\n\n\noc"
  },
  {
    "path": "config/openalpr.conf.user",
    "chars": 140,
    "preview": "; This configuration file overrides the default values specified \n; in ${CMAKE_INSTALL_PREFIX}/share/openalpr/config/ope"
  },
  {
    "path": "distros/centos/openalpr.spec",
    "chars": 2487,
    "preview": "Name:     openalpr\nVersion:  2.2.0\nRelease:  1%{?dist}\nSummary:  OpenALPR\nLicense:  AGPLv3\nURL:      https://github.com/"
  },
  {
    "path": "distros/debian/README.source",
    "chars": 518,
    "preview": "This package uses quilt to manage all modifications to the upstream source.\nChanges are stored in the source package as "
  },
  {
    "path": "distros/debian/changelog",
    "chars": 3389,
    "preview": "openalpr (2.3.0-2) unstable; urgency=low\n\n  * Add python3-distutils to build requirements (Closes: #896793)\n  * Upload s"
  },
  {
    "path": "distros/debian/compat",
    "chars": 2,
    "preview": "9\n"
  },
  {
    "path": "distros/debian/control",
    "chars": 5419,
    "preview": "Source: openalpr\nSection: video\nPriority: optional\nMaintainer: Matthew Hill <matthill@openalpr.com>\nBuild-Depends: debhe"
  },
  {
    "path": "distros/debian/copyright",
    "chars": 13477,
    "preview": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: openalpr\nSource: https://github"
  },
  {
    "path": "distros/debian/docs",
    "chars": 18,
    "preview": "cla.txt\nREADME.md\n"
  },
  {
    "path": "distros/debian/libopenalpr-data.install",
    "chars": 107,
    "preview": "etc/openalpr/openalpr.conf\nusr/share/openalpr/config/openalpr.defaults.conf\nusr/share/openalpr/runtime_data"
  },
  {
    "path": "distros/debian/libopenalpr-dev.install",
    "chars": 70,
    "preview": "usr/include/alpr.h\nusr/include/alpr_c.h\nusr/lib/lib*.a\nusr/lib/lib*so\n"
  },
  {
    "path": "distros/debian/libopenalpr2.install",
    "chars": 18,
    "preview": "usr/lib/lib*.so.*\n"
  },
  {
    "path": "distros/debian/openalpr-daemon.default",
    "chars": 567,
    "preview": "# Defaults for alprd initscript\n# sourced by /etc/init.d/openalpr-daemon\n# installed at /etc/default/openalpr-daemon by "
  },
  {
    "path": "distros/debian/openalpr-daemon.dirs",
    "chars": 30,
    "preview": "var/lib/openalpr/plateimages/\n"
  },
  {
    "path": "distros/debian/openalpr-daemon.init",
    "chars": 4325,
    "preview": "#!/bin/sh\n### BEGIN INIT INFO\n# Provides:          openalpr-daemon\n# Required-Start:    $local_fs $network $remote_fs $s"
  },
  {
    "path": "distros/debian/openalpr-daemon.install",
    "chars": 84,
    "preview": "etc/openalpr/alprd.conf\nusr/share/openalpr/config/alprd.defaults.conf\nusr/bin/alprd\n"
  },
  {
    "path": "distros/debian/openalpr-daemon.postinst",
    "chars": 406,
    "preview": "#!/bin/bash\nset -e\n\n# Source debconf library.\n. /usr/share/debconf/confmodule\n\n# Create openalpr:openalpr if it doesn't "
  },
  {
    "path": "distros/debian/openalpr-utils.install",
    "chars": 179,
    "preview": "usr/bin/openalpr-utils-classifychars\nusr/bin/openalpr-utils-benchmark\nusr/bin/openalpr-utils-prepcharsfortraining\nusr/bi"
  },
  {
    "path": "distros/debian/openalpr.install",
    "chars": 13,
    "preview": "usr/bin/alpr\n"
  },
  {
    "path": "distros/debian/openalpr.manpages",
    "chars": 15,
    "preview": "doc/man/alpr.1\n"
  },
  {
    "path": "distros/debian/patches/series",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "distros/debian/python-openalpr.install",
    "chars": 40,
    "preview": "usr/lib/python2.7/dist-packages/openalpr"
  },
  {
    "path": "distros/debian/rules",
    "chars": 3057,
    "preview": "#!/usr/bin/make -f\n# See debhelper(7) (uncomment to enable)\n# output every command that modifies files on the build syst"
  },
  {
    "path": "distros/debian/source/format",
    "chars": 12,
    "preview": "3.0 (quilt)\n"
  },
  {
    "path": "distros/debian/source/local-options",
    "chars": 42,
    "preview": "unapply-patches\nabort-on-upstream-changes\n"
  },
  {
    "path": "distros/debian/watch",
    "chars": 101,
    "preview": "  version=3\n  https://github.com/openalpr/openalpr/tags .*/v?(\\d.*)\\.(?:tgz|tbz2|tar\\.(?:gz|bz2|xz))\n"
  },
  {
    "path": "doc/.gitignore",
    "chars": 34,
    "preview": "build/\nvenv/\nswagger/\nswagger-ui/\n"
  },
  {
    "path": "doc/man/alpr.1",
    "chars": 5459,
    "preview": ".TH \"openalpr\" \"1\" \"10 May 2014\" \"\" \"\"\n.SH \"NAME\"\nOpenALPR \\- Automatic License Plate Recognition Library\n.SH \"SYNOPSIS\""
  },
  {
    "path": "runtime_data/cameras.yaml",
    "chars": 9568,
    "preview": "--- \nversion: 1\nmanufacturers:\n  A-Linking: \n    mjpeg: \n      - \"http://[username]:[password]@[ip_address]/GetData.cgi\""
  },
  {
    "path": "runtime_data/config/au.conf",
    "chars": 1214,
    "preview": "; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_range = 0.15\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/auwide.conf",
    "chars": 1194,
    "preview": "\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_range = 0.15\nchar_analysis_height"
  },
  {
    "path": "runtime_data/config/br.conf",
    "chars": 1215,
    "preview": "; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_range = 0.15\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/br2.conf",
    "chars": 876,
    "preview": "char_analysis_min_pct =0.15\r\nchar_analysis_height_range =0.30\r\nchar_analysis_height_step_size =0.20\r\nchar_analysis_heigh"
  },
  {
    "path": "runtime_data/config/eu.conf",
    "chars": 1248,
    "preview": "; One-line European style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/fr.conf",
    "chars": 1273,
    "preview": "; One-line European style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/gb.conf",
    "chars": 1273,
    "preview": "; One-line European style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/in.conf",
    "chars": 1275,
    "preview": "; One-line indian style style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_hei"
  },
  {
    "path": "runtime_data/config/kr.conf",
    "chars": 1236,
    "preview": "\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_range = 0.15\nchar_analysis_height"
  },
  {
    "path": "runtime_data/config/kr2.conf",
    "chars": 1322,
    "preview": "; 30-50, 40-60, 50-70, 60-80\nchar_analysis_min_pct = 0.30\nchar_analysis_height_range = 0.20\nchar_analysis_height_step_si"
  },
  {
    "path": "runtime_data/config/mx.conf",
    "chars": 1236,
    "preview": "; 30-50, 40-60, 50-70, 60-80\nchar_analysis_min_pct = 0.30\nchar_analysis_height_range = 0.20\nchar_analysis_height_step_si"
  },
  {
    "path": "runtime_data/config/sg.conf",
    "chars": 1112,
    "preview": "; One-line European style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.35\nchar_analysis_height_"
  },
  {
    "path": "runtime_data/config/us.conf",
    "chars": 1211,
    "preview": "; 30-50, 40-60, 50-70, 60-80\nchar_analysis_min_pct = 0.30\nchar_analysis_height_range = 0.20\nchar_analysis_height_step_si"
  },
  {
    "path": "runtime_data/config/vn2.conf",
    "chars": 1239,
    "preview": "; Two-line Vietnam style plates\n\n; 35-50; 45-60, 55-70, 65-80, 75-90\nchar_analysis_min_pct = 0.05 \nchar_analysis_height_"
  },
  {
    "path": "runtime_data/postprocess/au.patterns",
    "chars": 165,
    "preview": "act\t[Y]@@##@\nact\t[T]#####\nnsw\t@@##@@\nnsw\t@@@##@\nnsw\t[T][AR]##@@\nnt\t@@##@@\nnt\t[T]@####\nqld\t###@@@\nsa\t[S]###@@@\ntas\t@##@@\n"
  },
  {
    "path": "runtime_data/postprocess/br.patterns",
    "chars": 3106,
    "preview": "ac MZ[N-Z]####\nac NA[A-G]####\nac NX[R-T]####\nac OVG####\nac OXP####\nac QL[U-Z]####\n\nal MU@####\nal MV[A-K]####\nal NL[V-Z]#"
  },
  {
    "path": "runtime_data/postprocess/eu.patterns",
    "chars": 2223,
    "preview": "ad\t@####\n\nal\t@@###@@\n\nam\t###@@###\nam\t##@@###\nam\t###@@##\nam\t##@@##\n\nat\t@@???\nat\t@@????\nat\t@@?????\nat\t@@??????\nat\t@???\nat\t"
  },
  {
    "path": "runtime_data/postprocess/gb.patterns",
    "chars": 11,
    "preview": "gb\t@@##@@@\n"
  },
  {
    "path": "runtime_data/postprocess/in.patterns",
    "chars": 52,
    "preview": "in\t@@##@@####\nin\t@@##@####\nin\t@@#@@####\nin\t@@#@####\n"
  },
  {
    "path": "runtime_data/postprocess/kr.patterns",
    "chars": 10,
    "preview": "kr\t##@####"
  },
  {
    "path": "runtime_data/postprocess/mx.patterns",
    "chars": 53,
    "preview": "mx\t@@@####\nmx\t@##@@@\nmx\t@@@###@\nmx\t@@#####\nmx\t####@@\n"
  },
  {
    "path": "runtime_data/postprocess/readme.txt",
    "chars": 364,
    "preview": "Each line is a possible lp pattern organized by region/state and then likelihood.\n\nThe parser goes through each line and"
  },
  {
    "path": "runtime_data/postprocess/sg.patterns",
    "chars": 48,
    "preview": "sg\t@[A-HJ-NP-Z][A-HJ-NP-Z]####[A-EGHJ-MPR-UX-Z]\n"
  },
  {
    "path": "runtime_data/postprocess/us.patterns",
    "chars": 2739,
    "preview": "base\t\t@@@####\nbase\t\t@@@###\nbase\t\t###@@@\nal\t\t#@@####\nal\t\t##@@###\nal\t\t#@##@##\nal\t\t##@##@#\nal\t\t@@#####\nal\t\t#####@@\nal\t\t#@##"
  },
  {
    "path": "runtime_data/region/au.xml",
    "chars": 30067,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "runtime_data/region/br.xml",
    "chars": 68142,
    "preview": "<?xml version=\"1.0\"?>\r\n<opencv_storage>\r\n<cascade>\r\n  <stageType>BOOST</stageType>\r\n  <featureType>LBP</featureType>\r\n  "
  },
  {
    "path": "runtime_data/region/br2.xml",
    "chars": 24157,
    "preview": "<?xml version=\"1.0\"?>\r\n<opencv_storage>\r\n<cascade>\r\n  <stageType>BOOST</stageType>\r\n  <featureType>LBP</featureType>\r\n  "
  },
  {
    "path": "runtime_data/region/eu.xml",
    "chars": 28771,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "runtime_data/region/in.xml",
    "chars": 27292,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "runtime_data/region/kr2.xml",
    "chars": 15338,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "runtime_data/region/us.xml",
    "chars": 90802,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "runtime_data/region/vn2.xml",
    "chars": 22078,
    "preview": "<?xml version=\"1.0\"?>\n<opencv_storage>\n<cascade>\n  <stageType>BOOST</stageType>\n  <featureType>LBP</featureType>\n  <heig"
  },
  {
    "path": "src/CMakeLists.txt",
    "chars": 8997,
    "preview": "project(src)\n\nset(CMAKE_BUILD_TYPE RelWithDebugInfo)\n#set(CMAKE_BUILD_TYPE Debug)\n\ncmake_minimum_required (VERSION 2.6)\n"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/AlprNetGuiTest.csproj",
    "chars": 6314,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microso"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Form1.Designer.cs",
    "chars": 8401,
    "preview": "namespace AlprNetGuiTest\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variable.\n"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Form1.cs",
    "chars": 6352,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n *\n * This file is part of OpenALPR.\n *\n * OpenALPR is free software:"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Form1.resx",
    "chars": 5895,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Program.cs",
    "chars": 1175,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n *\n * This file is part of OpenALPR.\n *\n * OpenALPR is free software"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Properties/AssemblyInfo.cs",
    "chars": 1411,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Properties/Resources.Designer.cs",
    "chars": 2791,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Properties/Resources.resx",
    "chars": 5494,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Properties/Settings.Designer.cs",
    "chars": 1069,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/Properties/Settings.settings",
    "chars": 240,
    "preview": "<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\""
  },
  {
    "path": "src/bindings/csharp/AlprNetGuiTest/app.config",
    "chars": 156,
    "preview": "<?xml version=\"1.0\"?>\n<configuration>\n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.0,Profile="
  },
  {
    "path": "src/bindings/csharp/AlprNetTest/AlprNetTest.csproj",
    "chars": 3566,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/bindings/csharp/AlprNetTest/App.config",
    "chars": 151,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        \n    <supportedRuntime version=\"v2.0.50727"
  },
  {
    "path": "src/bindings/csharp/AlprNetTest/Program.cs",
    "chars": 1620,
    "preview": "using System;\n\n\nnamespace AlprNetTest\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n     "
  },
  {
    "path": "src/bindings/csharp/AlprNetTest/Properties/AssemblyInfo.cs",
    "chars": 1395,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "src/bindings/csharp/alprnet/Alpr.cs",
    "chars": 15401,
    "preview": "using System;\nusing System.Runtime.InteropServices;\nusing Newtonsoft.Json;\n\nusing AlprNet.Models;\n\nnamespace AlprNet\n{\n"
  },
  {
    "path": "src/bindings/csharp/alprnet/AlprNet.csproj",
    "chars": 3645,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "src/bindings/csharp/alprnet/Models/AlprResponse.cs",
    "chars": 500,
    "preview": "using System.Collections.Generic;\n\nnamespace AlprNet.Models\n{\n    public class AlprResponse\n    {\n        public int ve"
  },
  {
    "path": "src/bindings/csharp/alprnet/Models/AlprResult.cs",
    "chars": 604,
    "preview": "using System.Collections.Generic;\n\n\nnamespace AlprNet.Models\n{\n    public class AlprResult\n    {\n        public string "
  },
  {
    "path": "src/bindings/csharp/alprnet/Models/Candidate.cs",
    "chars": 210,
    "preview": "\n\nnamespace AlprNet.Models\n{\n    public class Candidate\n    {\n        public string plate { get; set; }\n        public "
  },
  {
    "path": "src/bindings/csharp/alprnet/Models/Coordinate.cs",
    "chars": 142,
    "preview": "\n\nnamespace AlprNet.Models\n{\n    public class Coordinate\n    {\n        public int x { get; set; }\n        public int y "
  },
  {
    "path": "src/bindings/csharp/alprnet/Models/RegionOfInterest.cs",
    "chars": 227,
    "preview": "\n\nnamespace AlprNet.Models\n{\n    public class RegionOfInterest\n    {\n        public int x { get; set; }\n        public "
  },
  {
    "path": "src/bindings/csharp/alprnet/Properties/AssemblyInfo.cs",
    "chars": 1387,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "src/bindings/csharp/alprnet/alprnet.sln",
    "chars": 3675,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMini"
  },
  {
    "path": "src/bindings/csharp/alprnet/packages.config",
    "chars": 137,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"8.0.3\" targetFramework=\"net2"
  },
  {
    "path": "src/bindings/csharp/readme.md",
    "chars": 810,
    "preview": "OpenALPR C# Binding\n======================\n\nThis .NET binding enables OpenALPR to be used directly from C#.  The binding"
  },
  {
    "path": "src/bindings/go/CMakeLists.txt",
    "chars": 940,
    "preview": "cmake_minimum_required (VERSION 2.6)\n\nset(go_source_files\n  openalprgo.cpp\n)\n\nadd_library(openalprgo SHARED ${go_source_"
  },
  {
    "path": "src/bindings/go/main.go",
    "chars": 717,
    "preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n)\n\nimport \"github.com/openalpr/openalpr/src/bindings/go/openalpr\"\n\nfunc main("
  },
  {
    "path": "src/bindings/go/make.sh",
    "chars": 328,
    "preview": "#!/bin/bash\n\nOPENALPR_INCLUDE_DIR=$(pwd)/../../openalpr\nOPENALPR_LIB_DIR=$(pwd)/../../build/openalpr\n\nexport LD_LIBRARY_"
  },
  {
    "path": "src/bindings/go/openalpr/openalpr.go",
    "chars": 3457,
    "preview": "package openalpr\n\n/*\n#cgo pkg-config: openalpr\n#include <openalprgo.h>\n#include <stdlib.h>\n*/\nimport \"C\"\nimport (\n\t\"enco"
  },
  {
    "path": "src/bindings/go/openalprgo.cpp",
    "chars": 2146,
    "preview": "#include <string>\n#include <string.h>\n#include <vector>\n\n#include <alpr.h>\n#include \"openalprgo.h\"\n\nextern \"C\" {\n\n\n    /"
  },
  {
    "path": "src/bindings/go/openalprgo.h",
    "chars": 765,
    "preview": "\n#if defined(_MSC_VER)\n//  Microsoft\n#define OPENALPR_EXPORT __declspec(dllexport)\n#else\n//  do nothing\n#define OPENALPR"
  },
  {
    "path": "src/bindings/java/.gitignore",
    "chars": 26,
    "preview": "*.class\n.idea/\n*.so\n*.iml\n"
  },
  {
    "path": "src/bindings/java/CMakeLists.txt",
    "chars": 594,
    "preview": "\ncmake_minimum_required (VERSION 2.6)\n\n\nfind_package(JNI)\n\nif (${JNI_FOUND} MATCHES \"TRUE\")\n  include_directories(\n    ."
  },
  {
    "path": "src/bindings/java/com_openalpr_jni_Alpr.h",
    "chars": 2353,
    "preview": "/* DO NOT EDIT THIS FILE - it is machine generated */\n#include <jni.h>\n/* Header for class com_openalpr_jni_Alpr */\n\n#if"
  },
  {
    "path": "src/bindings/java/make.sh",
    "chars": 695,
    "preview": "#!/bin/sh\n \n# openbsd 4.9\n# gcc 4.2.1\n# openjdk 1.7.0\n\nOPENALPR_INCLUDE_DIR=/storage/projects/alpr/src/openalpr/\nOPENALP"
  },
  {
    "path": "src/bindings/java/openalprjni.cpp",
    "chars": 4098,
    "preview": "#include <alpr.h>\n \n#include \"com_openalpr_jni_Alpr.h\"\n\nusing namespace alpr;\n\nbool initialized = false;\nstatic Alpr* na"
  },
  {
    "path": "src/bindings/java/src/Main.java",
    "chars": 2121,
    "preview": "import com.openalpr.jni.Alpr;\r\nimport com.openalpr.jni.AlprPlate;\r\nimport com.openalpr.jni.AlprPlateResult;\r\nimport com."
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/Alpr.java",
    "chars": 2538,
    "preview": "package com.openalpr.jni;\n\nimport com.openalpr.jni.json.JSONException;\n\npublic class Alpr {\n    static {\n        // Load"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprCoordinate.java",
    "chars": 451,
    "preview": "package com.openalpr.jni;\n\n\nimport com.openalpr.jni.json.JSONException;\nimport com.openalpr.jni.json.JSONObject;\n\npublic"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprException.java",
    "chars": 139,
    "preview": "package com.openalpr.jni;\n\n\npublic class AlprException extends Exception {\n\n    public AlprException(String s) {\n       "
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprPlate.java",
    "chars": 760,
    "preview": "package com.openalpr.jni;\n\n\nimport com.openalpr.jni.json.JSONException;\nimport com.openalpr.jni.json.JSONObject;\n\npublic"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprPlateResult.java",
    "chars": 3040,
    "preview": "package com.openalpr.jni;\n\n\nimport com.openalpr.jni.json.JSONArray;\nimport com.openalpr.jni.json.JSONException;\nimport c"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprRegionOfInterest.java",
    "chars": 699,
    "preview": "package com.openalpr.jni;\n\nimport com.openalpr.jni.json.JSONException;\nimport com.openalpr.jni.json.JSONObject;\n\n\npublic"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/AlprResults.java",
    "chars": 2083,
    "preview": "package com.openalpr.jni;\n\nimport com.openalpr.jni.json.JSONArray;\nimport com.openalpr.jni.json.JSONException;\nimport co"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSON.java",
    "chars": 3897,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSONArray.java",
    "chars": 19400,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSONException.java",
    "chars": 1665,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSONObject.java",
    "chars": 25009,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSONStringer.java",
    "chars": 13199,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/java/src/com/openalpr/jni/json/JSONTokener.java",
    "chars": 20681,
    "preview": "/*\n * Copyright (C) 2010 The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the \"Lice"
  },
  {
    "path": "src/bindings/python/.gitignore",
    "chars": 36,
    "preview": "*.pyc\n*.so\n*.so.*\n.idea/\n*.egg-info\n"
  },
  {
    "path": "src/bindings/python/CMakeLists.txt",
    "chars": 518,
    "preview": "\ncmake_minimum_required (VERSION 2.6)\n\n\ninclude_directories(../../openalpr/)\n\n\nset(python_source_files\n openalprpy.cpp\n)"
  },
  {
    "path": "src/bindings/python/make.sh",
    "chars": 328,
    "preview": "#!/bin/bash\n\nOPENALPR_INCLUDE_DIR=/storage/projects/alpr/src/openalpr/\nOPENALPR_LIB_DIR=/storage/projects/alpr/src/build"
  },
  {
    "path": "src/bindings/python/openalpr/__init__.py",
    "chars": 119,
    "preview": "import sys as _sys\n\nif _sys.version_info.major >= 3:\n    from .openalpr import Alpr\nelse:\n    from openalpr import Alpr"
  },
  {
    "path": "src/bindings/python/openalpr/openalpr.py",
    "chars": 10322,
    "preview": "import ctypes\nimport json\nimport platform\n\n# We need to do things slightly differently for Python 2 vs. 3\n# ... because "
  },
  {
    "path": "src/bindings/python/openalprpy.cpp",
    "chars": 4596,
    "preview": "#include <stdlib.h>\n#include <string>\n#include <string.h>\n\n#include <alpr.h>\n\nextern \"C\" {\n\n#if defined(WIN32)\n    //  M"
  },
  {
    "path": "src/bindings/python/setup.py",
    "chars": 290,
    "preview": "#!/usr/bin/env python\n\nfrom distutils.core import setup\n\nsetup(name='openalpr',\n      version='1.0',\n      description='"
  },
  {
    "path": "src/bindings/python/test.py",
    "chars": 1893,
    "preview": "from openalpr import Alpr\nfrom argparse import ArgumentParser\n\nparser = ArgumentParser(description='OpenALPR Python Test"
  },
  {
    "path": "src/cmake_modules/FindTesseract.cmake",
    "chars": 2913,
    "preview": "# - Try to find Tesseract-OCR\n# Once done, this will define\n#\n#  Tesseract_FOUND - system has Tesseract\n#  Tesseract_INC"
  },
  {
    "path": "src/cmake_modules/Findlog4cplus.cmake",
    "chars": 930,
    "preview": "# - Try to find log4cplus\n# Once done, this will define\n#\n#  log4cplus_FOUND - system has log4cplus\n#  log4cplus_INCLUDE"
  },
  {
    "path": "src/cmake_modules/LibFindMacros.cmake",
    "chars": 4128,
    "preview": "# Works the same as find_package, but forwards the \"REQUIRED\" and \"QUIET\" arguments\n# used for the current package. For "
  },
  {
    "path": "src/cmake_modules/templates/cmake_uninstall.cmake.in",
    "chars": 1035,
    "preview": "if(NOT EXISTS \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\")\n  message(FATAL_ERROR \"Cannot find install manifest: @C"
  },
  {
    "path": "src/cmake_modules/templates/openalpr.pc.in",
    "chars": 261,
    "preview": "prefix=@prefix@\nexec_prefix=@exec_prefix@\nlibdir=@libdir@\nincludedir=@includedir@\n\nName: OpenALPR\nDescription: Open sour"
  },
  {
    "path": "src/daemon/beanstalk.c",
    "chars": 19039,
    "preview": "#include \"beanstalk.h\"\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/time.h>\n#include <errno."
  },
  {
    "path": "src/daemon/beanstalk.cc",
    "chars": 8107,
    "preview": "#include \"beanstalk.hpp\"\n#include <sstream>\n#include <stdexcept>\n#include <stdlib.h>\n#include <string.h>\n\nusing namespac"
  },
  {
    "path": "src/daemon/beanstalk.h",
    "chars": 3475,
    "preview": "#pragma once\n\n#include <stddef.h>\n#include <stdint.h>\n#include <unistd.h>\n#include <sys/types.h>\n#include <sys/socket.h>"
  },
  {
    "path": "src/daemon/beanstalk.hpp",
    "chars": 2288,
    "preview": "#pragma once\n\n#include \"beanstalk.h\"\n#include <string>\n#include <vector>\n#include <map>\n\nnamespace Beanstalk {\n    typed"
  },
  {
    "path": "src/daemon/daemonconfig.cpp",
    "chars": 2338,
    "preview": "/*\n * Copyright (c) 2016 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/daemon/daemonconfig.h",
    "chars": 592,
    "preview": "\n#ifndef OPENALPR_DAEMONCONFIG_H\n#define\tOPENALPR_DAEMONCONFIG_H\n\n#include <string>\n#include <vector>\n#include \"simplein"
  },
  {
    "path": "src/daemon.cpp",
    "chars": 13768,
    "preview": "\n\n#include <unistd.h>\n#include <sstream>\n#include <execinfo.h>\n\n#include \"daemon/beanstalk.hpp\"\n#include \"video/logging_"
  },
  {
    "path": "src/inc/safequeue.h",
    "chars": 806,
    "preview": "#ifndef SAFE_QUEUE_H_\n#define SAFE_QUEUE_H_\n\n#include <queue>\n#include \"support/tinythread.h\"\n\ntemplate <typename T>\ncla"
  },
  {
    "path": "src/main.cpp",
    "chars": 12526,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/CMakeLists.txt",
    "chars": 1866,
    "preview": "\nADD_EXECUTABLE( openalpr-utils-sortstate sortstate.cpp  )\nTARGET_LINK_LIBRARIES(openalpr-utils-sortstate\n    ${OPENALPR"
  },
  {
    "path": "src/misc_utilities/binarizefontsheet.cpp",
    "chars": 9407,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/calibrate.cpp",
    "chars": 10186,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/classifychars.cpp",
    "chars": 12515,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/prepcharsfortraining.cpp",
    "chars": 7834,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/sortstate.cpp",
    "chars": 3095,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/misc_utilities/tagplates.cpp",
    "chars": 6005,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/CMakeLists.txt",
    "chars": 1899,
    "preview": "\n\n\nset(lpr_source_files\n alpr.cpp\n alpr_impl.cpp\n alpr_c.cpp\n config.cpp\n config_helper.cpp\n detection/detector.cpp\n det"
  },
  {
    "path": "src/openalpr/TRexpp.h",
    "chars": 2865,
    "preview": "#ifndef _TREXPP_H_\n#define _TREXPP_H_\n/***************************************************************\n\tT-Rex a tiny reg"
  },
  {
    "path": "src/openalpr/alpr.cpp",
    "chars": 3403,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/alpr.h",
    "chars": 4704,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/alpr_c.cpp",
    "chars": 3910,
    "preview": "/*\n * Copyright (c) 2016 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/alpr_c.h",
    "chars": 3002,
    "preview": "/*\n * Copyright (c) 2016 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/alpr_impl.cpp",
    "chars": 27882,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/alpr_impl.h",
    "chars": 3711,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/binarize_wolf.cpp",
    "chars": 6780,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/binarize_wolf.h",
    "chars": 1484,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/cjson.c",
    "chars": 23284,
    "preview": "/*\n  Copyright (c) 2009 Dave Gamble\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of"
  },
  {
    "path": "src/openalpr/cjson.h",
    "chars": 6798,
    "preview": "/*\n  Copyright (c) 2009 Dave Gamble\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of"
  },
  {
    "path": "src/openalpr/colorfilter.cpp",
    "chars": 12450,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/colorfilter.h",
    "chars": 1517,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/config.cpp",
    "chars": 14903,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/config.h",
    "chars": 4353,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/config_helper.cpp",
    "chars": 5166,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/config_helper.h",
    "chars": 2147,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/constants.h",
    "chars": 1423,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detector.cpp",
    "chars": 8374,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detector.h",
    "chars": 1826,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detector_types.h",
    "chars": 990,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorcpu.cpp",
    "chars": 2032,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorcpu.h",
    "chars": 1385,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorcuda.cpp",
    "chars": 2935,
    "preview": "/*\n * Copyright (c) 2013 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorcuda.h",
    "chars": 1660,
    "preview": "/*\n * Copyright (c) 2013 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorfactory.cpp",
    "chars": 1277,
    "preview": "#include \"detectorfactory.h\"\n#include \"detectormorph.h\"\n#include \"detectorocl.h\"\n\nnamespace alpr\n{\n  Detector* createDet"
  },
  {
    "path": "src/openalpr/detection/detectorfactory.h",
    "chars": 1035,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectormask.cpp",
    "chars": 5084,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectormask.h",
    "chars": 1593,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectormorph.cpp",
    "chars": 7850,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectormorph.h",
    "chars": 1450,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorocl.cpp",
    "chars": 4086,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/detection/detectorocl.h",
    "chars": 1451,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/edgefinder.cpp",
    "chars": 12086,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/edgefinder.h",
    "chars": 1551,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/platecorners.cpp",
    "chars": 13255,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/platecorners.h",
    "chars": 2188,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/platelines.cpp",
    "chars": 7715,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/platelines.h",
    "chars": 1740,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/scorekeeper.cpp",
    "chars": 2343,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/scorekeeper.h",
    "chars": 1269,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/edges/textlinecollection.cpp",
    "chars": 4675,
    "preview": "/* \n * File:   textlinecollection.cpp\n * Author: mhill\n * \n * Created on October 25, 2014, 4:06 PM\n */\n\n#include \"textli"
  },
  {
    "path": "src/openalpr/edges/textlinecollection.h",
    "chars": 919,
    "preview": "/* \n * File:   textlinecollection.h\n * Author: mhill\n *\n * Created on October 25, 2014, 4:06 PM\n */\n\n#ifndef OPENALPR_TE"
  },
  {
    "path": "src/openalpr/licenseplatecandidate.cpp",
    "chars": 4975,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/licenseplatecandidate.h",
    "chars": 1819,
    "preview": "/*\n * Copyright (c) 2015 OpenALPR Technology, Inc.\n * Open source Automated License Plate Recognition [http://www.openal"
  },
  {
    "path": "src/openalpr/motiondetector.cpp",
    "chars": 2207,
    "preview": "#include \"motiondetector.h\"\n\nusing namespace cv;\n\nnamespace alpr\n{\n  \nMotionDetector::MotionDetector()\n{\n\t#if OPENCV_MAJ"
  }
]

// ... and 175 more files (download for full content)

About this extraction

This page contains the full source code of the openalpr/openalpr GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 375 files (2.9 MB), approximately 780.8k tokens, and a symbol index with 2363 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!