# Path: haystack/argparse_utils.py
# def readable(f):
# def writeable(f):
# def int16(s):
# 
# Path: haystack/basicmodel.py
# def get_field_type(record, fieldname):
# def get_fields(record):
# def get_record_type_fields(record_type):
#     def __init__(self, memory_handler, my_constraints, target_ctypes=None):
#     def _get_constraints_for(self, record):
#     def _get_dynamic_constraints_for(self, record):
#     def get_orig_addr(self, record):
#     def is_valid(self, record):
#     def _is_valid_dynamic_constraints(self, record):
#     def _is_valid(self, record, record_constraints):
#     def _is_valid_attr(self, attr, attrname, attrtype, record_constraints):
#     def _is_loadable_member(self, attr, attrname, attrtype):
#     def load_members(self, record, max_depth):
#     def _load_member(self, record, attr, attrname, attrtype, record_constraints, max_depth):
#     def is_valid_address(self, obj, structType=None):
#     def is_valid_address_value(self, addr, structType=None):
#     def __str__(self):
# class CTypesRecordConstraintValidator(interfaces.IRecordConstraintsValidator):
#     MAX_CSTRING_SIZE = 1024
# 
# Path: haystack/constraints.py
# class ConstraintsConfigHandler(interfaces.IConstraintsConfigHandler):
# class ModuleConstraints(interfaces.IModuleConstraints):
# class RecordConstraints(interfaces.IRecordConstraints, dict):
# class IgnoreMember(interfaces.IConstraint):
# class ListLimitDepthValidation(interfaces.IConstraint):
# class RangeValue(interfaces.IConstraint):
# class NotValue(interfaces.IConstraint):
# class NotNullComparable(interfaces.IConstraint):
# class BytesComparable(interfaces.IConstraint):
#     def read(self, filename):
#     def _parse(self, value):
#     def _parse_c(self, value):
#     def _try_numbers(self, _arg):
#     def __init__(self):
#     def get_constraints(self):
#     def set_constraints(self, record_type_name, record_constraints):
#     def get_dynamic_constraints(self):
#     def set_dynamic_constraints(self, record_type_name, record_constraints):
#     def get_fields(self):
#     def get_constraints_for_field(self, field_name):
#     def __contains__(self, obj):
#     def __init__(self, max_depth):
#     def __contains__(self, obj):
#     def __init__(self, low, high):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __init__(self, not_value):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __init__(self, seq):
#     def __contains__(self, obj):
#     def __cmp__(self, obj):
# 
# Path: haystack/search/api.py
# class HaystackError(Exception):
# def search_record(memory_handler, record_type, search_constraints=None, extended_search=False):
# def search_record_hint(memory_handler, record_type, hint, search_constraints=None, extended_search=False):
# def output_to_string(memory_handler, results):
# def output_to_python(memory_handler, results):
# def output_to_json(memory_handler, results):
# def output_to_pickle(memory_handler, results):
# def load_record(memory_handler, struct_type, memory_address, load_constraints=None):
# def validate_record(memory_handler, instance, record_constraints=None, max_depth=10):


import argparse
import logging
import os
import sys
import time
import pkg_resources
            import code
            import code
    from urllib.parse import urlparse
    from urlparse import urlparse
from haystack import argparse_utils
from haystack import basicmodel
from haystack import constraints
from haystack.search import api
        from haystack.mappings import rek
        logging.basicConfig(level=level, filename=flog, filemode='w')
        print('[+] **** COMPLETE debug log to %s' % flog)
    else:
        logging.basicConfig(level=level)
    # 2.6, 2.7 compat
    sh = logging.StreamHandler(sys.stdout)
    logging.getLogger('haystack').addHandler(sh)
    return


def live_watch():
    argv = sys.argv[1:]
    desc = WATCH_DESC + DUMPTYPE_LIVE_DESC
    rootparser = base_argparser(program_name=os.path.basename(sys.argv[0]), description=desc)
    rootparser.add_argument('pid', type=int, help='Target PID on the local system')
    watch_argparser(rootparser)
    output_argparser(rootparser)
    opts = rootparser.parse_args(argv)
    opts.dumptype = DUMPTYPE_LIVE
    # apply verbosity
    set_logging_level(opts)
    # execute function
    opts.func(opts)
    return


def volatility_dump():
    argv = sys.argv[1:]
    desc = DUMP_DESC + DUMPTYPE_VOL_DESC
    rootparser = base_argparser(program_name=os.path.basename(sys.argv[0]), description=desc)

# Path: haystack/argparse_utils.py
# def readable(f):
# def writeable(f):
# def int16(s):
# 
# Path: haystack/basicmodel.py
# def get_field_type(record, fieldname):
# def get_fields(record):
# def get_record_type_fields(record_type):
#     def __init__(self, memory_handler, my_constraints, target_ctypes=None):
#     def _get_constraints_for(self, record):
#     def _get_dynamic_constraints_for(self, record):
#     def get_orig_addr(self, record):
#     def is_valid(self, record):
#     def _is_valid_dynamic_constraints(self, record):
#     def _is_valid(self, record, record_constraints):
#     def _is_valid_attr(self, attr, attrname, attrtype, record_constraints):
#     def _is_loadable_member(self, attr, attrname, attrtype):
#     def load_members(self, record, max_depth):
#     def _load_member(self, record, attr, attrname, attrtype, record_constraints, max_depth):
#     def is_valid_address(self, obj, structType=None):
#     def is_valid_address_value(self, addr, structType=None):
#     def __str__(self):
# class CTypesRecordConstraintValidator(interfaces.IRecordConstraintsValidator):
#     MAX_CSTRING_SIZE = 1024
# 
# Path: haystack/constraints.py
# class ConstraintsConfigHandler(interfaces.IConstraintsConfigHandler):
# class ModuleConstraints(interfaces.IModuleConstraints):
# class RecordConstraints(interfaces.IRecordConstraints, dict):
# class IgnoreMember(interfaces.IConstraint):
# class ListLimitDepthValidation(interfaces.IConstraint):
# class RangeValue(interfaces.IConstraint):
# class NotValue(interfaces.IConstraint):
# class NotNullComparable(interfaces.IConstraint):
# class BytesComparable(interfaces.IConstraint):
#     def read(self, filename):
#     def _parse(self, value):
#     def _parse_c(self, value):
#     def _try_numbers(self, _arg):
#     def __init__(self):
#     def get_constraints(self):
#     def set_constraints(self, record_type_name, record_constraints):
#     def get_dynamic_constraints(self):
#     def set_dynamic_constraints(self, record_type_name, record_constraints):
#     def get_fields(self):
#     def get_constraints_for_field(self, field_name):
#     def __contains__(self, obj):
#     def __init__(self, max_depth):
#     def __contains__(self, obj):
#     def __init__(self, low, high):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __init__(self, not_value):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __contains__(self, obj):
#     def __eq__(self, obj):
#     def __init__(self, seq):
#     def __contains__(self, obj):
#     def __cmp__(self, obj):
# 
# Path: haystack/search/api.py
# class HaystackError(Exception):
# def search_record(memory_handler, record_type, search_constraints=None, extended_search=False):
# def search_record_hint(memory_handler, record_type, hint, search_constraints=None, extended_search=False):
# def output_to_string(memory_handler, results):
# def output_to_python(memory_handler, results):
# def output_to_json(memory_handler, results):
# def output_to_pickle(memory_handler, results):
# def load_record(memory_handler, struct_type, memory_address, load_constraints=None):
# def validate_record(memory_handler, instance, record_constraints=None, max_depth=10):


# Path: haystack/cli.py
import argparse
import logging
import os
import sys
import time
import pkg_resources
            import code
            import code
    from urllib.parse import urlparse
    from urlparse import urlparse
from haystack import argparse_utils
from haystack import basicmodel
from haystack import constraints
from haystack.search import api
        from haystack.mappings import rek

        logging.basicConfig(level=level, filename=flog, filemode='w')
        print('[+] **** COMPLETE debug log to %s' % flog)
    else:
        logging.basicConfig(level=level)
    # 2.6, 2.7 compat
    sh = logging.StreamHandler(sys.stdout)
    logging.getLogger('haystack').addHandler(sh)
    return


def live_watch():
    argv = sys.argv[1:]
    desc = WATCH_DESC + DUMPTYPE_LIVE_DESC
    rootparser = base_argparser(program_name=os.path.basename(sys.argv[0]), description=desc)
    rootparser.add_argument('pid', type=int, help='Target PID on the local system')
    watch_argparser(rootparser)
    output_argparser(rootparser)
    opts = rootparser.parse_args(argv)
    opts.dumptype = DUMPTYPE_LIVE
    # apply verbosity
    set_logging_level(opts)
    # execute function
    opts.func(opts)
    return


def volatility_dump():
    argv = sys.argv[1:]
    desc = DUMP_DESC + DUMPTYPE_VOL_DESC
    rootparser = base_argparser(program_name=os.path.basename(sys.argv[0]), description=desc)

    rootparser.add_argument('dump_filename', type=argparse_utils.readable, help='Use this memory dump file')