SYMBOL INDEX (6187 symbols across 407 files) FILE: bbot/cli.py function _main (line 32) | async def _main(): function main (line 307) | def main(): FILE: bbot/core/config/files.py class BBOTConfigFiles (line 12) | class BBOTConfigFiles: method __init__ (line 18) | def __init__(self, core): method _get_config (line 21) | def _get_config(self, filename, name="config"): method get_custom_config (line 34) | def get_custom_config(self): method get_default_config (line 40) | def get_default_config(self): FILE: bbot/core/config/logger.py class ColoredFormatter (line 18) | class ColoredFormatter(logging.Formatter): method format (line 26) | def format(self, record): class BBOTLogger (line 40) | class BBOTLogger: method __init__ (line 48) | def __init__(self, core): method cleanup_logging (line 80) | def cleanup_logging(self): method setup_queue_handler (line 98) | def setup_queue_handler(self, logging_queue=None, log_level=logging.DE... method addLoggingLevel (line 111) | def addLoggingLevel(self, levelName, levelNum, methodName=None): method loggers (line 162) | def loggers(self): method add_log_handler (line 170) | def add_log_handler(self, handler, formatter=None): method remove_log_handler (line 178) | def remove_log_handler(self, handler): method include_logger (line 186) | def include_logger(self, logger): method stderr_filter (line 194) | def stderr_filter(self, record): method log_handlers (line 202) | def log_handlers(self): method log_level (line 236) | def log_level(self): method log_level (line 242) | def log_level(self, level): method set_log_level (line 245) | def set_log_level(self, level, logger=None): method toggle_log_level (line 254) | def toggle_log_level(self, logger=None): FILE: bbot/core/core.py class BBOTCore (line 15) | class BBOTCore: method __init__ (line 34) | def __init__(self): method _prep_multiprocessing (line 47) | def _prep_multiprocessing(self): method home (line 64) | def home(self): method cache_dir (line 68) | def cache_dir(self): method tools_dir (line 72) | def tools_dir(self): method temp_dir (line 76) | def temp_dir(self): method lib_dir (line 80) | def lib_dir(self): method scans_dir (line 84) | def scans_dir(self): method config (line 88) | def config(self): method default_config (line 101) | def default_config(self): method default_config (line 114) | def default_config(self, value): method custom_config (line 123) | def custom_config(self): method custom_config (line 134) | def custom_config(self, value): method no_secrets_config (line 143) | def no_secrets_config(self, config): method secrets_only_config (line 156) | def secrets_only_config(self, config): method merge_custom (line 169) | def merge_custom(self, config): method merge_default (line 175) | def merge_default(self, config): method copy (line 181) | def copy(self): method files_config (line 190) | def files_config(self): method create_process (line 201) | def create_process(self, *args, **kwargs): method create_thread (line 216) | def create_thread(self, *args, **kwargs): method logger (line 222) | def logger(self): FILE: bbot/core/engine.py class EngineBase (line 28) | class EngineBase: method __init__ (line 45) | def __init__(self, debug=False): method pickle (line 50) | def pickle(self, obj): method unpickle (line 58) | def unpickle(self, binary): method _infinite_retry (line 67) | async def _infinite_retry(self, callback, *args, **kwargs): method engine_debug (line 84) | def engine_debug(self, *args, **kwargs): class EngineClient (line 89) | class EngineClient(EngineBase): method __init__ (line 124) | def __init__(self, debug=False, **kwargs): method check_error (line 141) | def check_error(self, message): method run_and_return (line 151) | async def run_and_return(self, command, *args, **kwargs): method run_and_yield (line 179) | async def run_and_yield(self, command, *args, **kwargs): method send_cancel_message (line 215) | async def send_cancel_message(self, socket, context): method send_shutdown_message (line 232) | async def send_shutdown_message(self): method check_stop (line 247) | def check_stop(self, message): method make_message (line 252) | def make_message(self, command, args=None, kwargs=None): method available_commands (line 265) | def available_commands(self): method start_server (line 268) | def start_server(self): method server_process (line 294) | def server_process(server_class, socket_path, **kwargs): method new_socket (line 312) | async def new_socket(self): method shutdown (line 331) | async def shutdown(self): class EngineServer (line 350) | class EngineServer(EngineBase): method __init__ (line 379) | def __init__(self, socket_path, debug=False): method client_id_context (line 403) | def client_id_context(self, value): method run_and_return (line 410) | async def run_and_return(self, client_id, command_fn, *args, **kwargs): method run_and_yield (line 440) | async def run_and_yield(self, client_id, command_fn, *args, **kwargs): method send_socket_multipart (line 473) | async def send_socket_multipart(self, client_id, message): method check_error (line 481) | def check_error(self, message): method worker (line 485) | async def worker(self): method _shutdown (line 549) | async def _shutdown(self): method task_pool (line 566) | async def task_pool(self, fn, args_kwargs, threads=10, timeout=300, gl... method new_child_task (line 607) | def new_child_task(self, coro): method finished_tasks (line 633) | async def finished_tasks(self, tasks, timeout=None): method cancel_task (line 654) | async def cancel_task(self, client_id): method _await_cancelled_task (line 670) | async def _await_cancelled_task(self, task): method cancel_all_tasks (line 682) | async def cancel_all_tasks(self): FILE: bbot/core/event/base.py class BaseEvent (line 49) | class BaseEvent: method __init__ (line 173) | def __init__( method data (line 285) | def data(self): method confidence (line 289) | def confidence(self): method confidence (line 293) | def confidence(self, confidence): method cumulative_confidence (line 297) | def cumulative_confidence(self): method resolved_hosts (line 310) | def resolved_hosts(self): method data (line 318) | def data(self, data): method internal (line 327) | def internal(self): method internal (line 331) | def internal(self, value): method host (line 355) | def host(self): method host (line 372) | def host(self, host): method host_original (line 378) | def host_original(self): method host_filterable (line 387) | def host_filterable(self): method port (line 402) | def port(self): method netloc (line 414) | def netloc(self): method host_stem (line 420) | def host_stem(self): method discovery_context (line 431) | def discovery_context(self): method discovery_context (line 435) | def discovery_context(self, context): method discovery_path (line 447) | def discovery_path(self): method parent_chain (line 457) | def parent_chain(self): method words (line 467) | def words(self): method _words (line 472) | def _words(self): method tags (line 476) | def tags(self): method tags (line 480) | def tags(self, tags): method add_tag (line 487) | def add_tag(self, tag): method add_tags (line 490) | def add_tags(self, tags): method remove_tag (line 494) | def remove_tag(self, tag): method always_emit (line 499) | def always_emit(self): method id (line 508) | def id(self): method uuid (line 517) | def uuid(self): method data_hash (line 524) | def data_hash(self): method scope_distance (line 533) | def scope_distance(self): method scope_distance (line 537) | def scope_distance(self, scope_distance): method refresh_scope_tags (line 567) | def refresh_scope_tags(self): method scope_description (line 580) | def scope_description(self): method parent (line 593) | def parent(self): method parent (line 597) | def parent(self, parent): method children (line 638) | def children(self): method parent_id (line 642) | def parent_id(self): method parent_uuid (line 649) | def parent_uuid(self): method validators (line 656) | def validators(self): method get_parent (line 669) | def get_parent(self): method get_parents (line 677) | def get_parents(self, omit=False, include_self=False): method clone (line 695) | def clone(self): method _host (line 702) | def _host(self): method _sanitize_data (line 705) | def _sanitize_data(self, data): method sanitize_data (line 726) | def sanitize_data(self, data): method data_human (line 730) | def data_human(self): method _data_human (line 736) | def _data_human(self): method _data_load (line 742) | def _data_load(self, data): method data_id (line 749) | def data_id(self): method _data_id (line 755) | def _data_id(self): method pretty_string (line 759) | def pretty_string(self): method _pretty_string (line 773) | def _pretty_string(self): method data_graph (line 777) | def data_graph(self): method data_json (line 784) | def data_json(self): method __contains__ (line 790) | def __contains__(self, other): method json (line 820) | def json(self, mode="json", siem_friendly=False): method from_json (line 907) | def from_json(j): method module_sequence (line 922) | def module_sequence(self): method module_priority (line 937) | def module_priority(self): method module_priority (line 944) | def module_priority(self, priority): method priority (line 948) | def priority(self): method type (line 959) | def type(self): method type (line 963) | def type(self, val): method _host_size (line 969) | def _host_size(self): method __iter__ (line 986) | def __iter__(self): method __lt__ (line 992) | def __lt__(self, other): method __gt__ (line 998) | def __gt__(self, other): method __eq__ (line 1004) | def __eq__(self, other): method __hash__ (line 1015) | def __hash__(self): method __str__ (line 1020) | def __str__(self): method __repr__ (line 1025) | def __repr__(self): class SCAN (line 1029) | class SCAN(BaseEvent): method _data_human (line 1030) | def _data_human(self): method discovery_path (line 1034) | def discovery_path(self): method parent_chain (line 1038) | def parent_chain(self): class FINISHED (line 1042) | class FINISHED(BaseEvent): method __init__ (line 1047) | def __init__(self, *args, **kwargs): class DefaultEvent (line 1052) | class DefaultEvent(BaseEvent): method sanitize_data (line 1053) | def sanitize_data(self, data): class DictEvent (line 1057) | class DictEvent(BaseEvent): method sanitize_data (line 1058) | def sanitize_data(self, data): method _data_load (line 1064) | def _data_load(self, data): class DictHostEvent (line 1070) | class DictHostEvent(DictEvent): method _host (line 1071) | def _host(self): class ClosestHostEvent (line 1080) | class ClosestHostEvent(DictHostEvent): method __init__ (line 1083) | def __init__(self, *args, **kwargs): class DictPathEvent (line 1108) | class DictPathEvent(DictEvent): method sanitize_data (line 1109) | def sanitize_data(self, data): method _tar_directory (line 1136) | def _tar_directory(self, dir_path): class ASN (line 1144) | class ASN(DictEvent): class CODE_REPOSITORY (line 1149) | class CODE_REPOSITORY(DictHostEvent): class _data_validator (line 1152) | class _data_validator(BaseModel): method _pretty_string (line 1156) | def _pretty_string(self): class IP_ADDRESS (line 1160) | class IP_ADDRESS(BaseEvent): method __init__ (line 1161) | def __init__(self, *args, **kwargs): method sanitize_data (line 1169) | def sanitize_data(self, data): method _host (line 1172) | def _host(self): class DnsEvent (line 1176) | class DnsEvent(BaseEvent): method __init__ (line 1177) | def __init__(self, *args, **kwargs): class IP_RANGE (line 1204) | class IP_RANGE(DnsEvent): method __init__ (line 1205) | def __init__(self, *args, **kwargs): method sanitize_data (line 1209) | def sanitize_data(self, data): method _host (line 1212) | def _host(self): class DNS_NAME (line 1216) | class DNS_NAME(DnsEvent): method sanitize_data (line 1217) | def sanitize_data(self, data): method _host (line 1220) | def _host(self): method _words (line 1223) | def _words(self): class OPEN_TCP_PORT (line 1236) | class OPEN_TCP_PORT(BaseEvent): method sanitize_data (line 1237) | def sanitize_data(self, data): method _host (line 1240) | def _host(self): method _words (line 1244) | def _words(self): class OPEN_UDP_PORT (line 1250) | class OPEN_UDP_PORT(OPEN_TCP_PORT): class URL_UNVERIFIED (line 1254) | class URL_UNVERIFIED(BaseEvent): method __init__ (line 1257) | def __init__(self, *args, **kwargs): method _data_id (line 1261) | def _data_id(self): method sanitize_data (line 1285) | def sanitize_data(self, data): method add_tag (line 1307) | def add_tag(self, tag): method is_spider_max (line 1332) | def is_spider_max(self): method with_port (line 1339) | def with_port(self): method _words (line 1343) | def _words(self): method _host (line 1349) | def _host(self): method http_status (line 1353) | def http_status(self): class URL (line 1361) | class URL(URL_UNVERIFIED): method __init__ (line 1362) | def __init__(self, *args, **kwargs): method resolved_hosts (line 1371) | def resolved_hosts(self): method pretty_string (line 1376) | def pretty_string(self): class STORAGE_BUCKET (line 1380) | class STORAGE_BUCKET(DictEvent, URL_UNVERIFIED): class _data_validator (line 1384) | class _data_validator(BaseModel): method sanitize_data (line 1389) | def sanitize_data(self, data): method _words (line 1394) | def _words(self): class URL_HINT (line 1398) | class URL_HINT(URL_UNVERIFIED): class WEB_PARAMETER (line 1402) | class WEB_PARAMETER(DictHostEvent): method children (line 1404) | def children(self): method sanitize_data (line 1423) | def sanitize_data(self, data): method _data_id (line 1433) | def _data_id(self): method _outgoing_dedup_hash (line 1443) | def _outgoing_dedup_hash(self, event): method _url (line 1454) | def _url(self): method __str__ (line 1457) | def __str__(self): class EMAIL_ADDRESS (line 1463) | class EMAIL_ADDRESS(BaseEvent): method sanitize_data (line 1464) | def sanitize_data(self, data): method _host (line 1467) | def _host(self): method _words (line 1472) | def _words(self): class HTTP_RESPONSE (line 1476) | class HTTP_RESPONSE(URL_UNVERIFIED, DictEvent): method __init__ (line 1477) | def __init__(self, *args, **kwargs): method _data_id (line 1484) | def _data_id(self): method sanitize_data (line 1487) | def sanitize_data(self, data): method _words (line 1515) | def _words(self): method _pretty_string (line 1518) | def _pretty_string(self): method raw_response (line 1522) | def raw_response(self): method http_status (line 1531) | def http_status(self): method http_title (line 1538) | def http_title(self): method redirect_location (line 1546) | def redirect_location(self): class VULNERABILITY (line 1559) | class VULNERABILITY(ClosestHostEvent): method sanitize_data (line 1570) | def sanitize_data(self, data): class _data_validator (line 1574) | class _data_validator(BaseModel): method _pretty_string (line 1584) | def _pretty_string(self): class FINDING (line 1588) | class FINDING(ClosestHostEvent): class _data_validator (line 1592) | class _data_validator(BaseModel): method _pretty_string (line 1600) | def _pretty_string(self): class TECHNOLOGY (line 1604) | class TECHNOLOGY(DictHostEvent): class _data_validator (line 1605) | class _data_validator(BaseModel): method _data_id (line 1612) | def _data_id(self): method _pretty_string (line 1617) | def _pretty_string(self): class VHOST (line 1621) | class VHOST(DictHostEvent): class _data_validator (line 1622) | class _data_validator(BaseModel): method _pretty_string (line 1629) | def _pretty_string(self): class PROTOCOL (line 1633) | class PROTOCOL(DictHostEvent): class _data_validator (line 1634) | class _data_validator(BaseModel): method sanitize_data (line 1642) | def sanitize_data(self, data): method port (line 1648) | def port(self): method _pretty_string (line 1651) | def _pretty_string(self): class GEOLOCATION (line 1655) | class GEOLOCATION(BaseEvent): class PASSWORD (line 1660) | class PASSWORD(BaseEvent): class HASHED_PASSWORD (line 1665) | class HASHED_PASSWORD(BaseEvent): class USERNAME (line 1670) | class USERNAME(BaseEvent): class SOCIAL (line 1675) | class SOCIAL(DictHostEvent): class WEBSCREENSHOT (line 1681) | class WEBSCREENSHOT(DictPathEvent, DictHostEvent): class AZURE_TENANT (line 1686) | class AZURE_TENANT(DictEvent): class WAF (line 1691) | class WAF(DictHostEvent): class _data_validator (line 1695) | class _data_validator(BaseModel): method _pretty_string (line 1703) | def _pretty_string(self): class FILESYSTEM (line 1707) | class FILESYSTEM(DictPathEvent): method __init__ (line 1708) | def __init__(self, *args, **kwargs): class RAW_DNS_RECORD (line 1732) | class RAW_DNS_RECORD(DictHostEvent, DnsEvent): class MOBILE_APP (line 1737) | class MOBILE_APP(DictEvent): method _sanitize_data (line 1740) | def _sanitize_data(self, data): method _pretty_string (line 1761) | def _pretty_string(self): function update_event (line 1765) | def update_event( function make_event (line 1814) | def make_event( function event_from_json (line 1921) | def event_from_json(j, siem_friendly=False): function is_event (line 1978) | def is_event(e): FILE: bbot/core/event/helpers.py class EventSeedRegistry (line 24) | class EventSeedRegistry(type): method __new__ (line 29) | def __new__(mcs, name, bases, attrs): function EventSeed (line 38) | def EventSeed(input): class BaseEventSeed (line 53) | class BaseEventSeed(metaclass=EventSeedRegistry): method __init__ (line 59) | def __init__(self, data): method handle_match (line 64) | def handle_match(match): method _sanitize_and_extract_host (line 70) | def _sanitize_and_extract_host(self, data): method _override_input (line 79) | def _override_input(self, input): method type (line 83) | def type(self): method _hash (line 87) | def _hash(self): method __hash__ (line 90) | def __hash__(self): method __eq__ (line 93) | def __eq__(self, other): method __str__ (line 96) | def __str__(self): method __repr__ (line 99) | def __repr__(self): class IP_ADDRESS (line 103) | class IP_ADDRESS(BaseEventSeed): method precheck (line 107) | def precheck(data): method _sanitize_and_extract_host (line 114) | def _sanitize_and_extract_host(data): class DNS_NAME (line 119) | class DNS_NAME(BaseEventSeed): method _sanitize_and_extract_host (line 123) | def _sanitize_and_extract_host(data): class IP_RANGE (line 128) | class IP_RANGE(BaseEventSeed): method precheck (line 132) | def precheck(data): method _sanitize_and_extract_host (line 139) | def _sanitize_and_extract_host(data): class OPEN_TCP_PORT (line 144) | class OPEN_TCP_PORT(BaseEventSeed): method _sanitize_and_extract_host (line 148) | def _sanitize_and_extract_host(data): class URL_UNVERIFIED (line 155) | class URL_UNVERIFIED(BaseEventSeed): method _sanitize_and_extract_host (line 164) | def _sanitize_and_extract_host(data): class EMAIL_ADDRESS (line 174) | class EMAIL_ADDRESS(BaseEventSeed): method _sanitize_and_extract_host (line 178) | def _sanitize_and_extract_host(data): class ORG_STUB (line 185) | class ORG_STUB(BaseEventSeed): method _override_input (line 188) | def _override_input(self, input): method handle_match (line 192) | def handle_match(match): class USERNAME (line 196) | class USERNAME(BaseEventSeed): method _override_input (line 199) | def _override_input(self, input): method handle_match (line 203) | def handle_match(match): class FILESYSTEM (line 207) | class FILESYSTEM(BaseEventSeed): method _override_input (line 210) | def _override_input(self, input): method handle_match (line 214) | def handle_match(match): class MOBILE_APP (line 218) | class MOBILE_APP(BaseEventSeed): method _override_input (line 221) | def _override_input(self, input): method handle_match (line 225) | def handle_match(match): class BLACKLIST_REGEX (line 229) | class BLACKLIST_REGEX(BaseEventSeed): method _override_input (line 233) | def _override_input(self, input): method handle_match (line 237) | def handle_match(match): FILE: bbot/core/helpers/async_helpers.py class ShuffleQueue (line 14) | class ShuffleQueue(asyncio.Queue): method _put (line 15) | def _put(self, item): method _get (line 19) | def _get(self): class _Lock (line 23) | class _Lock(asyncio.Lock): method __init__ (line 24) | def __init__(self, name): class NamedLock (line 29) | class NamedLock: method __init__ (line 37) | def __init__(self, max_size=10000): method lock (line 41) | async def lock(self, name): class TaskCounter (line 51) | class TaskCounter: method __init__ (line 52) | def __init__(self): method value (line 57) | def value(self): method lock (line 61) | def lock(self): method count (line 66) | def count(self, task_name, n=1, asyncio_task=None, _log=True): class Task (line 71) | class Task: method __init__ (line 72) | def __init__(self, manager, task_name, n=1, _log=True, asyncio_task=... method __aenter__ (line 81) | async def __aenter__(self): method __aexit__ (line 90) | async def __aexit__(self, exc_type, exc_val, exc_tb): method asyncio_task (line 97) | def asyncio_task(self): method function_name (line 103) | def function_name(self): method cancel (line 108) | async def cancel(self): method running_for (line 114) | def running_for(self): method __str__ (line 117) | def __str__(self): function get_event_loop (line 121) | def get_event_loop(): function async_to_sync_gen (line 129) | def async_to_sync_gen(async_gen): function async_cachedmethod (line 138) | def async_cachedmethod(cache, key=keys.hashkey): FILE: bbot/core/helpers/bloom.py class BloomFilter (line 7) | class BloomFilter: method __init__ (line 19) | def __init__(self, size=8000000): method add (line 33) | def add(self, item): method check (line 40) | def check(self, item): method clear_all_bits (line 49) | def clear_all_bits(self): method _hashes (line 54) | def _hashes(self, item): method close (line 66) | def close(self): method __del__ (line 70) | def __del__(self): method __contains__ (line 76) | def __contains__(self, item): FILE: bbot/core/helpers/cache.py function cache_get (line 10) | def cache_get(self, key, text=True, cache_hrs=24 * 7): function cache_put (line 30) | def cache_put(self, key, content): function is_cached (line 44) | def is_cached(self, key, cache_hrs=24 * 7): function cache_filename (line 52) | def cache_filename(self, key): FILE: bbot/core/helpers/command.py function run (line 13) | async def run(self, *command, check=False, text=True, idle_timeout=None,... function run_live (line 79) | async def run_live(self, *command, check=False, text=True, idle_timeout=... function _spawn_proc (line 163) | async def _spawn_proc(self, *command, **kwargs): function _write_proc_line (line 208) | async def _write_proc_line(proc, chunk): function _write_stdin (line 222) | async def _write_stdin(proc, _input): function _prepare_command_kwargs (line 250) | def _prepare_command_kwargs(self, command, kwargs): FILE: bbot/core/helpers/depsinstaller/installer.py class DepsInstaller (line 25) | class DepsInstaller: method __init__ (line 113) | def __init__(self, parent_helper): method install (line 153) | async def install(self, *modules): method install_module (line 226) | async def install_module(self, module): method pip_install (line 267) | async def pip_install(self, packages, constraints=None): method apt_install (line 294) | def apt_install(self, packages): method _make_apt_ansible_args (line 310) | def _make_apt_ansible_args(self, packages): method shell (line 325) | def shell(self, module, commands): method tasks (line 347) | def tasks(self, module, tasks): method ansible_run (line 356) | def ansible_run(self, tasks=None, module=None, args=None, ansible_args... method read_setup_status (line 409) | def read_setup_status(self): method write_setup_status (line 417) | def write_setup_status(self): method ensure_root (line 421) | def ensure_root(self, message=""): method install_core_deps (line 445) | async def install_core_deps(self): method _setup_sudo_cache (line 502) | def _setup_sudo_cache(self): method encrypted_sudo_pw (line 518) | def encrypted_sudo_pw(self): method _encrypt_sudo_pw (line 523) | def _encrypt_sudo_pw(self, pw): method _install_sudo_askpass (line 534) | def _install_sudo_askpass(self): method all_modules_preloaded (line 544) | def all_modules_preloaded(self): FILE: bbot/core/helpers/depsinstaller/sudo_askpass.py function decrypt_password (line 12) | def decrypt_password(encrypted_data, key): function main (line 21) | def main(): FILE: bbot/core/helpers/diff.py class HttpCompare (line 11) | class HttpCompare: method __init__ (line 12) | def __init__( method merge_dictionaries (line 38) | def merge_dictionaries(headers1, headers2): method _baseline (line 46) | async def _baseline(self): method gen_cache_buster (line 132) | def gen_cache_buster(self): method compare_headers (line 135) | def compare_headers(self, headers_1, headers_2): method compare_body (line 156) | def compare_body(self, content_1, content_2): method compare (line 174) | async def compare( method canary_check (line 266) | async def canary_check(self, url, mode, rounds=3): FILE: bbot/core/helpers/dns/brute.py class DNSBrute (line 8) | class DNSBrute: method __init__ (line 22) | def __init__(self, parent_helper): method __call__ (line 34) | async def __call__(self, *args, **kwargs): method dnsbrute_lock (line 38) | def dnsbrute_lock(self): method dnsbrute (line 43) | async def dnsbrute(self, module, domain, subdomains, type=None): method _massdns (line 85) | async def _massdns(self, module, domain, subdomains, rdtype): method gen_subdomains (line 148) | async def gen_subdomains(self, prefixes, domain): method resolver_file (line 154) | async def resolver_file(self): method gen_random_subdomains (line 167) | def gen_random_subdomains(self, n=50): method has_excessive_digits (line 180) | def has_excessive_digits(self, d): FILE: bbot/core/helpers/dns/dns.py class DNSHelper (line 18) | class DNSHelper(EngineClient): method __init__ (line 53) | def __init__(self, parent_helper): method resolve (line 86) | async def resolve(self, query, **kwargs): method resolve_raw (line 89) | async def resolve_raw(self, query, **kwargs): method resolve_batch (line 92) | async def resolve_batch(self, queries, **kwargs): method resolve_raw_batch (line 101) | async def resolve_raw_batch(self, queries): method brute (line 111) | def brute(self): method is_wildcard (line 122) | async def is_wildcard(self, query, rdtypes, raw_dns_records=None): method is_wildcard_domain (line 167) | async def is_wildcard_domain(self, domain, rdtypes): method _wildcard_prevalidation (line 174) | def _wildcard_prevalidation(self, host): method _mock_dns (line 195) | async def _mock_dns(self, mock_data, custom_lookup_fn=None): FILE: bbot/core/helpers/dns/engine.py class DNSEngine (line 26) | class DNSEngine(EngineServer): method __init__ (line 37) | def __init__(self, socket_path, config={}, debug=False): method resolve (line 89) | async def resolve(self, query, **kwargs): method resolve_raw (line 124) | async def resolve_raw(self, query, **kwargs): method _resolve_hostname (line 167) | async def _resolve_hostname(self, query, **kwargs): method _resolve_ip (line 267) | async def _resolve_ip(self, query, **kwargs): method resolve_batch (line 328) | async def resolve_batch(self, queries, threads=10, **kwargs): method resolve_raw_batch (line 352) | async def resolve_raw_batch(self, queries, threads=10, **kwargs): method _catch (line 361) | async def _catch(self, callback, *args, **kwargs): method is_wildcard (line 394) | async def is_wildcard(self, query, rdtypes, raw_dns_records=None): method is_wildcard_domain (line 517) | async def is_wildcard_domain(self, domain, rdtypes): method _is_wildcard_zone (line 562) | async def _is_wildcard_zone(self, host, rdtype): method _is_wildcard (line 603) | async def _is_wildcard(self, query, rdtypes, dns_children): method dns_connectivity_lock (line 608) | def dns_connectivity_lock(self): method _connectivity_check (line 613) | async def _connectivity_check(self, interval=5): method debug (line 644) | def debug(self, *args, **kwargs): method in_tests (line 649) | def in_tests(self): method _mock_dns (line 652) | async def _mock_dns(self, mock_data, custom_lookup_fn=None): FILE: bbot/core/helpers/dns/helpers.py function extract_targets (line 157) | def extract_targets(record): function service_record (line 212) | def service_record(host, rdtype=None): FILE: bbot/core/helpers/dns/mock.py class MockResolver (line 7) | class MockResolver: method __init__ (line 8) | def __init__(self, mock_data=None, custom_lookup_fn=None): method resolve_address (line 13) | async def resolve_address(self, ipaddr, *args, **kwargs): method _lookup (line 19) | def _lookup(self, query, rdtype): method create_dns_response (line 33) | def create_dns_response(self, query_name, answers, rdtype): method resolve (line 52) | async def resolve(self, query_name, rdtype=None): FILE: bbot/core/helpers/files.py function tempfile (line 12) | def tempfile(self, content, pipe=True, extension=None): function _feed_pipe (line 52) | def _feed_pipe(self, pipe, content, text=True): function feed_pipe (line 96) | def feed_pipe(self, pipe, content, text=True): function tempfile_tail (line 116) | def tempfile_tail(self, callback): function tail (line 146) | def tail(filename, callback): FILE: bbot/core/helpers/git.py function sanitize_git_repo (line 4) | def sanitize_git_repo(repo_folder: Path): FILE: bbot/core/helpers/helper.py class ConfigAwareHelper (line 24) | class ConfigAwareHelper: method __init__ (line 58) | def __init__(self, preset): method dns (line 99) | def dns(self): method web (line 105) | def web(self): method cloudcheck (line 111) | def cloudcheck(self): method bloom_filter (line 118) | def bloom_filter(self, size): method interactsh (line 123) | def interactsh(self, *args, **kwargs): method http_compare (line 126) | def http_compare( method temp_filename (line 151) | def temp_filename(self, extension=None): method clean_old_scans (line 160) | def clean_old_scans(self): method make_target (line 166) | def make_target(self, *targets, **kwargs): method config (line 170) | def config(self): method web_config (line 174) | def web_config(self): method scan (line 178) | def scan(self): method loop (line 182) | def loop(self): method run_in_executor (line 190) | def run_in_executor(self, callback, *args, **kwargs): method run_in_executor_mp (line 201) | def run_in_executor_mp(self, callback, *args, **kwargs): method in_tests (line 214) | def in_tests(self): method __getattribute__ (line 217) | def __getattribute__(self, attr): FILE: bbot/core/helpers/interactsh.py class Interactsh (line 21) | class Interactsh: method __init__ (line 81) | def __init__(self, parent_helper, poll_interval=10): method register (line 90) | async def register(self, callback=None): method deregister (line 169) | async def deregister(self): method poll (line 202) | async def poll(self): method poll_loop (line 256) | async def poll_loop(self, callback): method _poll_loop (line 276) | async def _poll_loop(self, callback): method _decrypt (line 294) | def _decrypt(self, aes_key, data): FILE: bbot/core/helpers/libmagic.py function get_magic_info (line 4) | def get_magic_info(file): function get_compression (line 13) | def get_compression(mime_type): FILE: bbot/core/helpers/misc.py function is_domain (line 29) | def is_domain(d): function is_subdomain (line 64) | def is_subdomain(d): function is_ptr (line 99) | def is_ptr(d): function is_url (line 122) | def is_url(u): function is_uri (line 152) | def is_uri(u, return_scheme=False): function split_host_port (line 187) | def split_host_port(d): function parent_domain (line 258) | def parent_domain(d): function domain_parents (line 293) | def domain_parents(d, include_self=False): function subdomain_depth (line 328) | def subdomain_depth(d): function parent_url (line 345) | def parent_url(u): function url_parents (line 377) | def url_parents(u): function best_http_status (line 407) | def best_http_status(code1, code2): function tldextract (line 451) | def tldextract(data): function split_domain (line 474) | def split_domain(hostname): function domain_stem (line 503) | def domain_stem(domain): function ip_network_parents (line 524) | def ip_network_parents(i, include_self=False): function is_port (line 547) | def is_port(p): function is_dns_name (line 568) | def is_dns_name(d): function is_ip (line 594) | def is_ip(d, version=None, include_network=False): function is_ip_type (line 630) | def is_ip_type(i, network=None): function make_ip_type (line 658) | def make_ip_type(s): function sha1 (line 692) | def sha1(data): function smart_decode (line 713) | def smart_decode(data): function smart_encode (line 735) | def smart_encode(data): function ensure_utf8_compliant (line 760) | def ensure_utf8_compliant(text): function recursive_decode (line 764) | def recursive_decode(data, max_depth=5): function rand_string (line 806) | def rand_string(length=10, digits=True, numeric_only=False): function truncate_string (line 838) | def truncate_string(s: str, n: int) -> str: function extract_params_json (line 847) | def extract_params_json(json_data, compare_mode="getparam"): function extract_params_xml (line 891) | def extract_params_xml(xml_data, compare_mode="getparam"): function validate_parameter (line 942) | def validate_parameter(param, compare_mode): function extract_words (line 952) | def extract_words(data, acronyms=True, wordninja=True, model=None, max_l... function closest_match (line 1009) | def closest_match(s, choices, n=1, cutoff=0.0): function get_closest_match (line 1040) | def get_closest_match(s, choices, msg=None): function kill_children (line 1064) | def kill_children(parent_pid=None, sig=None): function str_or_file (line 1093) | def str_or_file(s): function chain_lists (line 1122) | def chain_lists( function list_files (line 1183) | def list_files(directory, filter=lambda x: True): function rm_at_exit (line 1207) | def rm_at_exit(path): function delete_file (line 1221) | def delete_file(path): function read_file (line 1237) | def read_file(filename): function gen_numbers (line 1258) | def gen_numbers(n, padding=2): function make_netloc (line 1285) | def make_netloc(host, port=None): function which (line 1318) | def which(*executables, path=None): function search_dict_by_key (line 1343) | def search_dict_by_key(key, d): function search_format_dict (line 1368) | def search_format_dict(d, **kwargs): function search_dict_values (line 1393) | def search_dict_values(d, *regexes): function grouper (line 1435) | def grouper(iterable, n): function split_list (line 1456) | def split_list(alist, wanted_parts=2): function mkdir (line 1475) | def mkdir(path, check_writable=True, raise_error=True): function make_date (line 1512) | def make_date(d=None, microseconds=False): function error_and_exit (line 1539) | def error_and_exit(msg): function get_file_extension (line 1544) | def get_file_extension(s): function backup_file (line 1570) | def backup_file(filename, max_backups=10): function latest_mtime (line 1605) | def latest_mtime(d): function filesize (line 1633) | def filesize(f): function rm_rf (line 1655) | def rm_rf(f, ignore_errors=False): function clean_old (line 1669) | def clean_old(d, keep=10, filter=lambda x: True, key=latest_mtime, rever... function extract_emails (line 1704) | def extract_emails(s): function extract_host (line 1726) | def extract_host(s): function smart_encode_punycode (line 1781) | def smart_encode_punycode(text: str) -> str: function smart_decode_punycode (line 1799) | def smart_decode_punycode(text: str) -> str: function can_sudo_without_password (line 1817) | def can_sudo_without_password(): function verify_sudo_password (line 1841) | def verify_sudo_password(sudo_pass): function make_table (line 1870) | def make_table(rows, header, **kwargs): function human_timedelta (line 1924) | def human_timedelta(d): function bytes_to_human (line 1960) | def bytes_to_human(_bytes): function human_to_bytes (line 1995) | def human_to_bytes(filesize): function integer_to_ordinal (line 2035) | def integer_to_ordinal(n): function cpu_architecture (line 2079) | def cpu_architecture(): function cpu_architecture_golang (line 2098) | def cpu_architecture_golang(): function cpu_architecture_rust (line 2112) | def cpu_architecture_rust(): function os_platform (line 2123) | def os_platform(): function os_platform_friendly (line 2141) | def os_platform_friendly(): function tagify (line 2163) | def tagify(s, delimiter=None, maxlen=None): function memory_status (line 2188) | def memory_status(): function swap_status (line 2213) | def swap_status(): function get_size (line 2237) | def get_size(obj, max_depth=5, seen=None): function is_file (line 2297) | def is_file(f): function is_async_function (line 2319) | def is_async_function(f): function execute_sync_or_async (line 2340) | async def execute_sync_or_async(callback, *args, **kwargs): function get_exception_chain (line 2370) | def get_exception_chain(e): function in_exception_chain (line 2397) | def in_exception_chain(e, exc_types): function get_traceback_details (line 2418) | def get_traceback_details(e): function cancel_tasks (line 2446) | async def cancel_tasks(tasks, ignore_errors=True): function cancel_tasks_sync (line 2481) | def cancel_tasks_sync(tasks): function weighted_shuffle (line 2504) | def weighted_shuffle(items, weights): function parse_port_string (line 2551) | def parse_port_string(port_string): function as_completed (line 2598) | async def as_completed(coros): function clean_dns_record (line 2624) | def clean_dns_record(record): function truncate_filename (line 2651) | def truncate_filename(file_path, max_length=255): function get_keys_in_dot_syntax (line 2686) | def get_keys_in_dot_syntax(config): function filter_dict (line 2728) | def filter_dict(d, *key_names, fuzzy=False, exclude_keys=None, _prev_key... function clean_dict (line 2765) | def clean_dict(d, *key_names, fuzzy=False, exclude_keys=None, _prev_key=... function calculate_entropy (line 2796) | def calculate_entropy(data): function top_tcp_ports (line 2814) | def top_tcp_ports(n, as_string=False): class SafeDict (line 2836) | class SafeDict(dict): method __missing__ (line 2837) | def __missing__(self, key): function safe_format (line 2841) | def safe_format(s, **kwargs): function get_python_constraints (line 2848) | def get_python_constraints(): function is_printable (line 2866) | def is_printable(s): FILE: bbot/core/helpers/names_generator.py function random_name (line 707) | def random_name(): FILE: bbot/core/helpers/ntlm.py class StrStruct (line 13) | class StrStruct(object): method __init__ (line 14) | def __init__(self, pos_tup, raw): function decode_ntlm_challenge (line 37) | def decode_ntlm_challenge(st): function ntlmdecode (line 68) | def ntlmdecode(authenticate_header): FILE: bbot/core/helpers/process.py class BBOTThread (line 9) | class BBOTThread(threading.Thread): method __init__ (line 12) | def __init__(self, *args, **kwargs): method run (line 18) | def run(self): class BBOTProcess (line 25) | class BBOTProcess(SpawnProcess): method __init__ (line 28) | def __init__(self, *args, **kwargs): method run (line 35) | def run(self): FILE: bbot/core/helpers/ratelimiter.py class RateLimiter (line 8) | class RateLimiter: method __init__ (line 23) | def __init__(self, rate, name): method lock (line 33) | def lock(self): method __aenter__ (line 38) | async def __aenter__(self): method __aexit__ (line 60) | async def __aexit__(self, exc_type, exc_val, exc_tb): FILE: bbot/core/helpers/regex.py class RegexHelper (line 6) | class RegexHelper: method __init__ (line 17) | def __init__(self, parent_helper): method ensure_compiled_regex (line 20) | def ensure_compiled_regex(self, r): method compile (line 27) | def compile(self, *args, **kwargs): method search (line 30) | async def search(self, compiled_regex, *args, **kwargs): method match (line 34) | async def match(self, compiled_regex, *args, **kwargs): method sub (line 38) | async def sub(self, compiled_regex, *args, **kwargs): method findall (line 42) | async def findall(self, compiled_regex, *args, **kwargs): method findall_multi (line 46) | async def findall_multi(self, compiled_regexes, *args, threads=10, **k... method finditer (line 78) | async def finditer(self, compiled_regex, *args, **kwargs): method finditer_multi (line 82) | async def finditer_multi(self, compiled_regexes, *args, **kwargs): method _finditer_multi (line 90) | def _finditer_multi(self, compiled_regexes, *args, **kwargs): method _finditer (line 97) | def _finditer(self, compiled_regex, *args, **kwargs): method extract_params_html (line 100) | async def extract_params_html(self, *args, **kwargs): method extract_emails (line 103) | async def extract_emails(self, *args, **kwargs): method search_dict_values (line 106) | async def search_dict_values(self, *args, **kwargs): method recursive_decode (line 112) | async def recursive_decode(self, *args, **kwargs): FILE: bbot/core/helpers/url.py function parse_url (line 12) | def parse_url(url): function add_get_params (line 35) | def add_get_params(url, params, encode=True): function get_get_params (line 78) | def get_get_params(url): function charset (line 105) | def charset(p): function param_type (line 145) | def param_type(p): function hash_url (line 178) | def hash_url(url): function url_depth (line 214) | def url_depth(url): FILE: bbot/core/helpers/validators.py function validator (line 15) | def validator(func): function validate_port (line 42) | def validate_port(port: Union[str, int]): function validate_open_port (line 69) | def validate_open_port(open_port: Union[str, int]): function validate_host (line 78) | def validate_host(host: Union[str, ipaddress.IPv4Address, ipaddress.IPv6... function validate_severity (line 133) | def validate_severity(severity: str): function validate_email (line 141) | def validate_email(email: str): function clean_url (line 148) | def clean_url(url: str, url_querystring_remove=True): function collapse_urls (line 202) | def collapse_urls(*args, **kwargs): function _collapse_urls (line 206) | def _collapse_urls(urls, threshold=10): function validate_url (line 248) | def validate_url(url: str): function validate_url_parsed (line 253) | def validate_url_parsed(url: str): function soft_validate (line 260) | def soft_validate(s, t): function is_email (line 294) | def is_email(email): class Validators (line 302) | class Validators: method __init__ (line 303) | def __init__(self, parent_helper): method clean_url (line 306) | def clean_url(self, url: str): method validate_url_parsed (line 310) | def validate_url_parsed(self, url: str): FILE: bbot/core/helpers/web/client.py class DummyCookies (line 8) | class DummyCookies(Cookies): method extract_cookies (line 9) | def extract_cookies(self, *args, **kwargs): class BBOTAsyncClient (line 13) | class BBOTAsyncClient(httpx.AsyncClient): method from_config (line 32) | def from_config(cls, config, target, *args, **kwargs): method __init__ (line 46) | def __init__(self, *args, **kwargs): method build_request (line 87) | def build_request(self, *args, **kwargs): method _merge_cookies (line 112) | def _merge_cookies(self, cookies): method retries (line 118) | def retries(self): FILE: bbot/core/helpers/web/engine.py class HTTPEngine (line 16) | class HTTPEngine(EngineServer): method __init__ (line 29) | def __init__(self, socket_path, target, config={}, debug=False): method AsyncClient (line 39) | def AsyncClient(self, *args, **kwargs): method request (line 52) | async def request(self, *args, **kwargs): method request_batch (line 98) | async def request_batch(self, urls, threads=10, **kwargs): method request_custom_batch (line 104) | async def request_custom_batch(self, urls_and_kwargs, threads=10, **kw... method download (line 110) | async def download(self, url, **kwargs): method stream_request (line 133) | async def stream_request(self, url, **kwargs): method ssl_context_noverify (line 165) | def ssl_context_noverify(self): method _acatch (line 177) | async def _acatch(self, url, raise_error): FILE: bbot/core/helpers/web/envelopes.py class EnvelopeChildTracker (line 21) | class EnvelopeChildTracker(type): method __new__ (line 28) | def __new__(mcs, name, bases, class_dict): class BaseEnvelope (line 38) | class BaseEnvelope(metaclass=EnvelopeChildTracker): method __init__ (line 50) | def __init__(self, s): method final_envelope (line 69) | def final_envelope(self): method friendly_name (line 76) | def friendly_name(self): method pack (line 82) | def pack(self, data=None): method unpack (line 89) | def unpack(self, s): method _pack (line 92) | def _pack(self, s): method _unpack (line 98) | def _unpack(self, s): method unpacked_data (line 104) | def unpacked_data(self, recursive=True): method detect (line 115) | def detect(cls, s): method get_subparams (line 136) | def get_subparams(self, key=None, data=None, recursive=True): method get_subparam (line 152) | def get_subparam(self, key=None, recursive=True): method pack_value (line 169) | def pack_value(self, value, key=None): method set_subparam (line 199) | def set_subparam(self, key=None, value=None, recursive=True): method name (line 221) | def name(self): method num_envelopes (line 225) | def num_envelopes(self): method summary (line 235) | def summary(self): method to_dict (line 249) | def to_dict(self): method __str__ (line 252) | def __str__(self): class HexEnvelope (line 258) | class HexEnvelope(BaseEnvelope): method _pack (line 267) | def _pack(self, s): method _unpack (line 270) | def _unpack(self, s): class B64Envelope (line 274) | class B64Envelope(BaseEnvelope): method unpack (line 283) | def unpack(self, s): method _pack (line 289) | def _pack(self, s): method _unpack (line 292) | def _unpack(self, s): class URLEnvelope (line 296) | class URLEnvelope(BaseEnvelope): method unpack (line 303) | def unpack(self, s): method _pack (line 309) | def _pack(self, s): method _unpack (line 312) | def _unpack(self, s): class TextEnvelope (line 316) | class TextEnvelope(BaseEnvelope): method _pack (line 327) | def _pack(self, s): method _unpack (line 330) | def _unpack(self, s): class JSONEnvelope (line 351) | class JSONEnvelope(BaseEnvelope): method _pack (line 361) | def _pack(self, s): method _unpack (line 364) | def _unpack(self, s): class XMLEnvelope (line 368) | class XMLEnvelope(BaseEnvelope): method _pack (line 378) | def _pack(self, s): method _unpack (line 381) | def _unpack(self, s): FILE: bbot/core/helpers/web/web.py class WebHelper (line 21) | class WebHelper(EngineClient): method __init__ (line 48) | def __init__(self, parent_helper): method AsyncClient (line 64) | def AsyncClient(self, *args, **kwargs): method request (line 77) | async def request(self, *args, **kwargs): method request_batch (line 132) | async def request_batch(self, urls, *args, **kwargs): method request_custom_batch (line 154) | async def request_custom_batch(self, urls_and_kwargs): method download (line 184) | async def download(self, url, **kwargs): method wordlist (line 235) | async def wordlist(self, path, lines=None, zip=False, zip_filename=Non... method curl (line 306) | async def curl(self, *args, **kwargs): method beautifulsoup (line 434) | def beautifulsoup( method response_to_json (line 492) | def response_to_json(self, response): FILE: bbot/core/helpers/wordcloud.py class WordCloud (line 15) | class WordCloud(dict): method __init__ (line 79) | def __init__(self, parent_helper, *args, **kwargs): method mutations (line 89) | def mutations( method modifiers (line 137) | def modifiers(self, devops=True, cloud=True, letters=True, numbers=5, ... method absorb_event (line 149) | def absorb_event(self, event): method absorb_word (line 167) | def absorb_word(self, word, wordninja=True): method add_word (line 191) | def add_word(self, word, lowercase=True): method get_number_mutations (line 215) | def get_number_mutations(self, base, n=5, padding=2): method truncate (line 286) | def truncate(self, limit): method json (line 303) | def json(self, limit=None): method default_filename (line 324) | def default_filename(self): method save (line 327) | def save(self, filename=None, limit=None): method load (line 368) | def load(self, filename=None): class Mutator (line 405) | class Mutator(dict): method mutations (line 411) | def mutations(self, words, max_mutations=None): method mutate (line 421) | def mutate(self, word, max_mutations=None, mutations=None): method top_mutations (line 433) | def top_mutations(self, n=None): method _add_mutation (line 439) | def _add_mutation(self, mutation): method add_word (line 448) | def add_word(self, word): class DNSMutator (line 452) | class DNSMutator(Mutator): method __init__ (line 484) | def __init__(self, *args, **kwargs): method mutations (line 490) | def mutations(self, words, max_mutations=None): method add_word (line 499) | def add_word(self, word): FILE: bbot/core/helpers/yara_helper.py class YaraHelper (line 4) | class YaraHelper: method __init__ (line 5) | def __init__(self, parent_helper): method compile_strings (line 8) | def compile_strings(self, strings: list[str], nocase=False): method compile (line 35) | def compile(self, *args, **kwargs): method match (line 38) | async def match(self, compiled_rules, text): FILE: bbot/core/modules.py class ModuleLoader (line 37) | class ModuleLoader: method __init__ (line 53) | def __init__(self): method copy (line 75) | def copy(self): method preload_cache_file (line 81) | def preload_cache_file(self): method module_dirs (line 85) | def module_dirs(self): method add_module_dir (line 88) | def add_module_dir(self, module_dir): method file_filter (line 104) | def file_filter(self, file): method preload (line 111) | def preload(self, module_dirs=None): method preload_cache (line 215) | def preload_cache(self): method preload_cache (line 225) | def preload_cache(self, value): method save_preload_cache (line 231) | def save_preload_cache(self): method _preloaded (line 235) | def _preloaded(self): method get_recursive_dirs (line 238) | def get_recursive_dirs(self, *dirs): method preloaded (line 248) | def preloaded(self, type=None): method configs (line 256) | def configs(self, type=None): method find_and_replace (line 264) | def find_and_replace(self, **kwargs): method check_type (line 268) | def check_type(self, module, type): method preload_module (line 271) | def preload_module(self, module_file): method load_modules (line 473) | def load_modules(self, module_names): method load_module (line 485) | def load_module(self, module_name): method check_dependency (line 531) | def check_dependency(self, event_type, modname, produced): method add_or_create (line 539) | def add_or_create(d, k, *items): method modules_table (line 545) | def modules_table(self, modules=None, mod_type=None, include_author=Fa... method modules_options (line 601) | def modules_options(self, modules=None, mod_type=None): method modules_options_table (line 617) | def modules_options_table(self, modules=None, mod_type=None): method flags (line 624) | def flags(self, flags=None): method flags_table (line 638) | def flags_table(self, flags=None): method events (line 648) | def events(self): method events_table (line 666) | def events_table(self): method filter_modules (line 677) | def filter_modules(self, modules=None, mod_type=None): method ensure_config_files (line 687) | def ensure_config_files(self): FILE: bbot/core/multiprocess.py class SharedInterpreterState (line 6) | class SharedInterpreterState: method __init__ (line 13) | def __init__(self): method is_main_process (line 19) | def is_main_process(self): method is_scan_process (line 24) | def is_scan_process(self): method main_pid (line 29) | def main_pid(self): method scan_pid (line 38) | def scan_pid(self): method update_scan_pid (line 46) | def update_scan_pid(self): method cleanup (line 49) | def cleanup(self): FILE: bbot/db/sql/models.py function naive_datetime_validator (line 17) | def naive_datetime_validator(d: datetime): class CustomJSONEncoder (line 30) | class CustomJSONEncoder(json.JSONEncoder): method default (line 31) | def default(self, obj): class BBOTBaseModel (line 38) | class BBOTBaseModel(SQLModel): method __init__ (line 41) | def __init__(self, *args, **kwargs): method validated (line 46) | def validated(self): method to_json (line 54) | def to_json(self, **kwargs): method _pk_column_names (line 58) | def _pk_column_names(cls): method __hash__ (line 61) | def __hash__(self): method __eq__ (line 64) | def __eq__(self, other): class Event (line 71) | class Event(BBOTBaseModel, table=True): method __init__ (line 72) | def __init__(self, *args, **kwargs): method get_data (line 79) | def get_data(self): method _get_data (line 83) | def _get_data(data, type): class Scan (line 122) | class Scan(BBOTBaseModel, table=True): class Target (line 137) | class Target(BBOTBaseModel, table=True): FILE: bbot/errors.py class BBOTError (line 1) | class BBOTError(Exception): class ScanError (line 5) | class ScanError(BBOTError): class ValidationError (line 9) | class ValidationError(BBOTError): class ConfigLoadError (line 13) | class ConfigLoadError(BBOTError): class HttpCompareError (line 17) | class HttpCompareError(BBOTError): class DirectoryCreationError (line 21) | class DirectoryCreationError(BBOTError): class DirectoryDeletionError (line 25) | class DirectoryDeletionError(BBOTError): class NTLMError (line 29) | class NTLMError(BBOTError): class InteractshError (line 33) | class InteractshError(BBOTError): class WordlistError (line 37) | class WordlistError(BBOTError): class CurlError (line 41) | class CurlError(BBOTError): class PresetNotFoundError (line 45) | class PresetNotFoundError(BBOTError): class EnableModuleError (line 49) | class EnableModuleError(BBOTError): class EnableFlagError (line 53) | class EnableFlagError(BBOTError): class BBOTArgumentError (line 57) | class BBOTArgumentError(BBOTError): class PresetConditionError (line 61) | class PresetConditionError(BBOTError): class PresetAbortError (line 65) | class PresetAbortError(PresetConditionError): class BBOTEngineError (line 69) | class BBOTEngineError(BBOTError): class WebError (line 73) | class WebError(BBOTEngineError): class DNSError (line 77) | class DNSError(BBOTEngineError): class ExcavateError (line 81) | class ExcavateError(BBOTError): FILE: bbot/logger.py function colorize (line 36) | def colorize(s, level="INFO"): function log_to_stderr (line 42) | def log_to_stderr(msg, level="INFO", logname=True): class GzipRotatingFileHandler (line 57) | class GzipRotatingFileHandler(logging.handlers.RotatingFileHandler): method __init__ (line 63) | def __init__(self, *args, **kwargs): method rotation_filename (line 68) | def rotation_filename(self, default_name): method rotate (line 74) | def rotate(self, source, dest): method emit (line 85) | def emit(self, record): FILE: bbot/modules/ajaxpro.py class ajaxpro (line 6) | class ajaxpro(BaseModule): method handle_event (line 21) | async def handle_event(self, event): method check_url_event (line 27) | async def check_url_event(self, event): method check_http_response_event (line 38) | async def check_http_response_event(self, event): method emit_technology (line 47) | async def emit_technology(self, event, detection_url): method confirm_exploitability (line 61) | async def confirm_exploitability(self, detection_url, event): FILE: bbot/modules/anubisdb.py class anubisdb (line 4) | class anubisdb(subdomain_enum): method request_url (line 21) | async def request_url(self, query): method abort_if_pre (line 25) | def abort_if_pre(self, hostname): method abort_if (line 35) | async def abort_if(self, event): method parse_results (line 41) | async def parse_results(self, r, query): FILE: bbot/modules/apkpure.py class apkpure (line 6) | class apkpure(BaseModule): method setup (line 20) | async def setup(self): method filter_event (line 29) | async def filter_event(self, event): method handle_event (line 35) | async def handle_event(self, event): method download_apk (line 47) | async def download_apk(self, app_id): FILE: bbot/modules/aspnet_bin_exposure.py class aspnet_bin_exposure (line 4) | class aspnet_bin_exposure(BaseModule): method normalize_url (line 24) | def normalize_url(url): method _incoming_dedup_hash (line 27) | def _incoming_dedup_hash(self, event): method handle_event (line 30) | async def handle_event(self, event): method filter_event (line 77) | async def filter_event(self, event): FILE: bbot/modules/azure_realm.py class azure_realm (line 4) | class azure_realm(BaseModule): method setup (line 14) | async def setup(self): method handle_event (line 18) | async def handle_event(self, event): method getuserrealm (line 34) | async def getuserrealm(self, domain): FILE: bbot/modules/azure_tenant.py class azure_tenant (line 4) | class azure_tenant(BaseModule): method setup (line 18) | async def setup(self): method handle_event (line 22) | async def handle_event(self, event): method query (line 70) | async def query(self, domain): FILE: bbot/modules/baddns.py class baddns (line 9) | class baddns(BaseModule): method select_modules (line 27) | def select_modules(self): method set_modules (line 34) | def set_modules(self): method setup (line 39) | async def setup(self): method handle_event (line 57) | async def handle_event(self, event): FILE: bbot/modules/baddns_direct.py class baddns_direct (line 8) | class baddns_direct(BaseModule): method setup (line 26) | async def setup(self): method select_modules (line 35) | def select_modules(self): method handle_event (line 42) | async def handle_event(self, event): method filter_event (line 73) | async def filter_event(self, event): FILE: bbot/modules/baddns_zone.py class baddns_zone (line 4) | class baddns_zone(baddns_module): method set_modules (line 21) | def set_modules(self): method filter_event (line 25) | async def filter_event(self, event): FILE: bbot/modules/badsecrets.py class badsecrets (line 7) | class badsecrets(BaseModule): method setup (line 22) | async def setup(self): method _module_threads (line 36) | def _module_threads(self): method handle_event (line 39) | async def handle_event(self, event): FILE: bbot/modules/base.py class BaseModule (line 13) | class BaseModule: method __init__ (line 126) | def __init__(self, scan): method setup (line 181) | async def setup(self): method setup_deps (line 219) | async def setup_deps(self): method handle_event (line 227) | async def handle_event(self, event, **kwargs): method handle_batch (line 243) | async def handle_batch(self, *events): method filter_event (line 259) | async def filter_event(self, event): method finish (line 275) | async def finish(self): method report (line 288) | async def report(self): method cleanup (line 301) | async def cleanup(self): method require_api_key (line 314) | async def require_api_key(self): method api_key (line 343) | def api_key(self): method api_key (line 348) | def api_key(self, api_keys): method cycle_api_key (line 353) | def cycle_api_key(self): method api_retries (line 361) | def api_retries(self): method api_failure_abort_threshold (line 365) | def api_failure_abort_threshold(self): method ping (line 368) | async def ping(self, url=None): method batch_size (line 407) | def batch_size(self): method module_threads (line 416) | def module_threads(self): method event_handler_timeout (line 423) | def event_handler_timeout(self): method auth_secret (line 430) | def auth_secret(self): method event_received (line 441) | def event_received(self): method get_watched_events (line 446) | def get_watched_events(self): method _handle_batch (line 458) | async def _handle_batch(self): method make_event (line 500) | def make_event(self, *args, **kwargs): method update_event (line 540) | def update_event(self, event, **kwargs): method emit_event (line 573) | async def emit_event(self, *args, **kwargs): method _events_waiting (line 631) | async def _events_waiting(self, batch_size=None): method num_incoming_events (line 673) | def num_incoming_events(self): method start (line 679) | def start(self): method _setup (line 690) | async def _setup(self, deps_only=False): method _worker (line 717) | async def _worker(self): method max_scope_distance (line 796) | def max_scope_distance(self): method _event_precheck (line 806) | def _event_precheck(self, event): method _event_postcheck (line 858) | async def _event_postcheck(self, event): method _event_postcheck_inner (line 874) | async def _event_postcheck_inner(self, event): method _scope_distance_check (line 919) | def _scope_distance_check(self, event): method _cleanup (line 933) | async def _cleanup(self): method run_task (line 942) | async def run_task(self, coro, name, n=1): method _event_handler_watchdog (line 952) | async def _event_handler_watchdog(self): method queue_event (line 972) | async def queue_event(self, event): method queue_outgoing_event (line 1011) | async def queue_outgoing_event(self, event, **kwargs): method set_error_state (line 1036) | def set_error_state(self, message=None, clear_outgoing_queue=False, cr... method is_incoming_duplicate (line 1082) | def is_incoming_duplicate(self, event, add=False): method _incoming_dedup_hash (line 1099) | def _incoming_dedup_hash(self, event): method _outgoing_dedup_hash (line 1111) | def _outgoing_dedup_hash(self, event): method get_per_host_hash (line 1120) | def get_per_host_hash(self, event): method get_per_hostport_hash (line 1138) | def get_per_hostport_hash(self, event): method get_per_domain_hash (line 1162) | def get_per_domain_hash(self, event): method name (line 1182) | def name(self): method helpers (line 1186) | def helpers(self): method status (line 1190) | def status(self): method running (line 1216) | def running(self): method finished (line 1228) | def finished(self): method run_process (line 1241) | async def run_process(self, *args, **kwargs): method run_process_live (line 1245) | async def run_process_live(self, *args, **kwargs): method prepare_api_request (line 1250) | def prepare_api_request(self, url, kwargs): method api_request (line 1261) | async def api_request(self, *args, **kwargs): method api_download (line 1314) | async def api_download(self, url, **kwargs): method _get_retry_after (line 1332) | def _get_retry_after(self, r): method _prepare_api_iter_req (line 1348) | def _prepare_api_iter_req(self, url, page, page_size, offset, **reques... method _api_response_is_success (line 1355) | def _api_response_is_success(self, r): method api_page_iter (line 1359) | async def api_page_iter(self, url, page_size=100, _json=True, next_key... method preset (line 1423) | def preset(self): method config (line 1427) | def config(self): method incoming_event_queue (line 1442) | def incoming_event_queue(self): method outgoing_event_queue (line 1451) | def outgoing_event_queue(self): method priority (line 1457) | def priority(self): method auth_required (line 1474) | def auth_required(self): method http_timeout (line 1478) | def http_timeout(self): method log (line 1485) | def log(self): method memory_usage (line 1491) | def memory_usage(self): method __str__ (line 1505) | def __str__(self): method log_table (line 1508) | def log_table(self, *args, **kwargs): method _is_graph_important (line 1541) | def _is_graph_important(self, event): method preserve_graph (line 1545) | def preserve_graph(self): method debug (line 1551) | def debug(self, *args, trace=False, **kwargs): method verbose (line 1567) | def verbose(self, *args, trace=False, **kwargs): method hugeverbose (line 1583) | def hugeverbose(self, *args, trace=False, **kwargs): method info (line 1599) | def info(self, *args, trace=False, **kwargs): method hugeinfo (line 1615) | def hugeinfo(self, *args, trace=False, **kwargs): method success (line 1631) | def success(self, *args, trace=False, **kwargs): method hugesuccess (line 1647) | def hugesuccess(self, *args, trace=False, **kwargs): method warning (line 1663) | def warning(self, *args, trace=True, **kwargs): method hugewarning (line 1679) | def hugewarning(self, *args, trace=True, **kwargs): method error (line 1695) | def error(self, *args, trace=True, **kwargs): method trace (line 1711) | def trace(self, msg=None): method critical (line 1731) | def critical(self, *args, trace=True, **kwargs): method help_text (line 1748) | def help_text(self): class BaseInterceptModule (line 1790) | class BaseInterceptModule(BaseModule): method _worker (line 1805) | async def _worker(self): method get_incoming_event (line 1878) | async def get_incoming_event(self): method forward_event (line 1884) | async def forward_event(self, event, kwargs): method queue_outgoing_event (line 1890) | async def queue_outgoing_event(self, event, **kwargs): method queue_event (line 1898) | async def queue_event(self, event, kwargs=None): method _event_postcheck (line 1909) | async def _event_postcheck(self, event): FILE: bbot/modules/bevigil.py class bevigil (line 4) | class bevigil(subdomain_enum_apikey): method setup (line 23) | async def setup(self): method prepare_api_request (line 28) | def prepare_api_request(self, url, kwargs): method handle_event (line 32) | async def handle_event(self, event): method request_subdomains (line 55) | async def request_subdomains(self, query): method request_urls (line 59) | async def request_urls(self, query): method parse_subdomains (line 63) | async def parse_subdomains(self, r, query=None): method parse_urls (line 70) | async def parse_urls(self, r, query=None): FILE: bbot/modules/bucket_amazon.py class bucket_amazon (line 4) | class bucket_amazon(bucket_template): FILE: bbot/modules/bucket_digitalocean.py class bucket_digitalocean (line 4) | class bucket_digitalocean(bucket_template): method build_url (line 23) | def build_url(self, bucket_name, base_domain, region): FILE: bbot/modules/bucket_file_enum.py class bucket_file_enum (line 5) | class bucket_file_enum(BaseModule): method setup (line 26) | async def setup(self): method handle_event (line 30) | async def handle_event(self, event): method handle_aws (line 35) | async def handle_aws(self, event): FILE: bbot/modules/bucket_firebase.py class bucket_firebase (line 4) | class bucket_firebase(bucket_template): method filter_bucket (line 22) | def filter_bucket(self, event): method build_url (line 28) | def build_url(self, bucket_name, base_domain, region): method check_bucket_open (line 31) | async def check_bucket_open(self, bucket_name, url): FILE: bbot/modules/bucket_google.py class bucket_google (line 4) | class bucket_google(bucket_template): method filter_bucket (line 38) | def filter_bucket(self, event): method build_url (line 43) | def build_url(self, bucket_name, base_domain, region): method check_bucket_open (line 46) | async def check_bucket_open(self, bucket_name, url): method check_bucket_exists (line 63) | def check_bucket_exists(self, bucket_name, response): FILE: bbot/modules/bucket_microsoft.py class bucket_microsoft (line 4) | class bucket_microsoft(bucket_template): method build_bucket_request (line 24) | def build_bucket_request(self, bucket_name, base_domain, region): method check_bucket_exists (line 29) | def check_bucket_exists(self, bucket_name, response): method clean_bucket_url (line 34) | def clean_bucket_url(self, url): FILE: bbot/modules/bufferoverrun.py class BufferOverrun (line 4) | class BufferOverrun(subdomain_enum_apikey): method setup (line 20) | async def setup(self): method prepare_api_request (line 24) | def prepare_api_request(self, url, kwargs): method request_url (line 32) | async def request_url(self, query): method parse_results (line 36) | async def parse_results(self, r, query): FILE: bbot/modules/builtwith.py class builtwith (line 16) | class builtwith(subdomain_enum_apikey): method handle_event (line 30) | async def handle_event(self, event): method request_domains (line 59) | async def request_domains(self, query): method request_redirects (line 63) | async def request_redirects(self, query): method parse_domains (line 67) | async def parse_domains(self, r, query): method parse_redirects (line 97) | async def parse_redirects(self, r, query): FILE: bbot/modules/bypass403.py class bypass403 (line 78) | class bypass403(BaseModule): method do_checks (line 85) | async def do_checks(self, compare_helper, event, collapse_threshold): method handle_event (line 130) | async def handle_event(self, event): method filter_event (line 162) | async def filter_event(self, event): method format_signature (line 167) | def format_signature(self, sig, event): FILE: bbot/modules/c99.py class c99 (line 4) | class c99(subdomain_enum_apikey): method ping (line 20) | async def ping(self): method request_url (line 25) | async def request_url(self, query): method parse_results (line 29) | async def parse_results(self, r, query): FILE: bbot/modules/censys_dns.py class censys_dns (line 4) | class censys_dns(censys): method setup (line 25) | async def setup(self): method query (line 29) | async def query(self, query): FILE: bbot/modules/censys_ip.py class censys_ip (line 4) | class censys_ip(censys): method setup (line 34) | async def setup(self): method filter_event (line 41) | async def filter_event(self, event): method handle_event (line 48) | async def handle_event(self, event): method _emit_host (line 163) | async def _emit_host(self, host, event, seen, source): FILE: bbot/modules/certspotter.py class certspotter (line 4) | class certspotter(subdomain_enum): method request_url (line 16) | def request_url(self, query): method parse_results (line 20) | async def parse_results(self, r, query): FILE: bbot/modules/chaos.py class chaos (line 4) | class chaos(subdomain_enum_apikey): method prepare_api_request (line 20) | def prepare_api_request(self, url, kwargs): method request_url (line 24) | async def request_url(self, query): method parse_results (line 29) | async def parse_results(self, r, query): FILE: bbot/modules/code_repository.py class code_repository (line 5) | class code_repository(BaseModule): method setup (line 27) | async def setup(self): method handle_event (line 37) | async def handle_event(self, event): FILE: bbot/modules/credshed.py class credshed (line 6) | class credshed(subdomain_enum): method setup (line 24) | async def setup(self): method handle_event (line 45) | async def handle_event(self, event): FILE: bbot/modules/crt.py class crt (line 4) | class crt(subdomain_enum): method setup (line 17) | async def setup(self): method request_url (line 21) | async def request_url(self, query): method parse_results (line 26) | async def parse_results(self, r, query): FILE: bbot/modules/crt_db.py class crt_db (line 7) | class crt_db(subdomain_enum): method setup (line 25) | async def setup(self): method request_url (line 29) | async def request_url(self, query): method parse_results (line 59) | async def parse_results(self, results, query): method cleanup (line 68) | async def cleanup(self): FILE: bbot/modules/deadly/legba.py function map_protocol_to_legba_plugin_name (line 14) | def map_protocol_to_legba_plugin_name(common_protocol_name: str) -> str: class legba (line 18) | class legba(BaseModule): method setup (line 70) | async def setup(self): method filter_event (line 78) | async def filter_event(self, event): method handle_event (line 87) | async def handle_event(self, event): method parse_output (line 105) | async def parse_output(self, output_filepath, event): method construct_command (line 150) | async def construct_command(self, host, port, protocol): FILE: bbot/modules/dehashed.py class dehashed (line 6) | class dehashed(subdomain_enum): method setup (line 22) | async def setup(self): method handle_event (line 36) | async def handle_event(self, event): method query (line 90) | async def query(self, domain): FILE: bbot/modules/digitorus.py class digitorus (line 6) | class digitorus(subdomain_enum): method request_url (line 18) | async def request_url(self, query): method parse_results (line 22) | async def parse_results(self, r, query): FILE: bbot/modules/dnsbimi.py class dnsbimi (line 46) | class dnsbimi(BaseModule): method setup (line 66) | async def setup(self): method _incoming_dedup_hash (line 73) | def _incoming_dedup_hash(self, event): method filter_event (line 78) | async def filter_event(self, event): method inspectBIMI (line 88) | async def inspectBIMI(self, event, domain): method handle_event (line 141) | async def handle_event(self, event): FILE: bbot/modules/dnsbrute.py class dnsbrute (line 4) | class dnsbrute(subdomain_enum): method setup_deps (line 26) | async def setup_deps(self): method setup (line 32) | async def setup(self): method filter_event (line 38) | async def filter_event(self, event): method handle_event (line 55) | async def handle_event(self, event): FILE: bbot/modules/dnsbrute_mutations.py class dnsbrute_mutations (line 6) | class dnsbrute_mutations(BaseModule): method setup (line 24) | async def setup(self): method handle_event (line 33) | async def handle_event(self, event): method get_parent_event (line 45) | async def get_parent_event(self, subdomain): method finish (line 52) | async def finish(self): method abort_if (line 150) | def abort_if(self, event): FILE: bbot/modules/dnscaa.py class dnscaa (line 41) | class dnscaa(BaseModule): method setup (line 61) | async def setup(self): method filter_event (line 68) | async def filter_event(self, event): method handle_event (line 78) | async def handle_event(self, event): FILE: bbot/modules/dnscommonsrv.py class dnscommonsrv (line 5) | class dnscommonsrv(subdomain_enum): method setup (line 16) | async def setup(self): method filter_event (line 21) | async def filter_event(self, event): method handle_event (line 27) | async def handle_event(self, event): FILE: bbot/modules/dnsdumpster.py class dnsdumpster (line 6) | class dnsdumpster(subdomain_enum): method setup (line 18) | async def setup(self): method query (line 22) | async def query(self, domain): FILE: bbot/modules/dnstlsrpt.py class dnstlsrpt (line 34) | class dnstlsrpt(BaseModule): method setup (line 54) | async def setup(self): method _incoming_dedup_hash (line 60) | def _incoming_dedup_hash(self, event): method filter_event (line 65) | async def filter_event(self, event): method handle_event (line 75) | async def handle_event(self, event): FILE: bbot/modules/docker_pull.py class docker_pull (line 8) | class docker_pull(BaseModule): method setup (line 25) | async def setup(self): method filter_event (line 45) | async def filter_event(self, event): method handle_event (line 51) | async def handle_event(self, event): method get_registry_and_repository (line 67) | def get_registry_and_repository(self, repository_url): method docker_api_request (line 77) | async def docker_api_request(self, url: str): method get_tags (line 101) | async def get_tags(self, registry, repository): method get_manifest (line 122) | async def get_manifest(self, registry, repository, tag): method get_layers (line 136) | async def get_layers(self, manifest): method download_blob (line 145) | async def download_blob(self, registry, repository, digest): method create_local_manifest (line 153) | async def create_local_manifest(self, config, repository, tag, layers): method download_and_get_filename (line 157) | async def download_and_get_filename(self, registry, repository, digest): method write_file_to_tar (line 166) | async def write_file_to_tar(self, tar, filename, file_content): method download_docker_repo (line 174) | async def download_docker_repo(self, repository_url): method download_and_write_to_tar (line 182) | async def download_and_write_to_tar(self, registry, repository, tag): FILE: bbot/modules/dockerhub.py class dockerhub (line 4) | class dockerhub(BaseModule): method filter_event (line 19) | async def filter_event(self, event): method handle_event (line 25) | async def handle_event(self, event): method handle_org_stub (line 31) | async def handle_org_stub(self, event): method handle_social (line 49) | async def handle_social(self, event): method get_repos (line 64) | async def get_repos(self, username): FILE: bbot/modules/dotnetnuke.py class dotnetnuke (line 5) | class dotnetnuke(BaseModule): method setup (line 29) | async def setup(self): method interactsh_callback (line 43) | async def interactsh_callback(self, r): method handle_event (line 67) | async def handle_event(self, event): method cleanup (line 191) | async def cleanup(self): method finish (line 201) | async def finish(self): FILE: bbot/modules/emailformat.py class emailformat (line 4) | class emailformat(BaseModule): method setup (line 18) | async def setup(self): method handle_event (line 22) | async def handle_event(self, event): FILE: bbot/modules/extractous.py class extractous (line 6) | class extractous(BaseModule): method setup (line 71) | async def setup(self): method filter_event (line 75) | async def filter_event(self, event): method handle_event (line 83) | async def handle_event(self, event): function extract_text (line 102) | def extract_text(file_path): FILE: bbot/modules/ffuf.py class ffuf (line 9) | class ffuf(BaseModule): method setup_deps (line 40) | async def setup_deps(self): method setup (line 44) | async def setup(self): method handle_event (line 61) | async def handle_event(self, event): method filter_event (line 89) | async def filter_event(self, event): method baseline_ffuf (line 95) | async def baseline_ffuf(self, url, exts=[""], prefix="", suffix="", mo... method execute_ffuf (line 202) | async def execute_ffuf( method generate_templist (line 328) | def generate_templist(self, prefix=None): method generate_wordlist (line 342) | def generate_wordlist(self, wordlist_file): FILE: bbot/modules/ffuf_shortnames.py class ffuf_shortnames (line 9) | class ffuf_shortnames(ffuf): method generate_templist (line 51) | def generate_templist(self, hint, shortname_type): method predict (line 62) | def predict(self, prefix, n=25, model="endpoint"): method find_common_prefixes (line 68) | def find_common_prefixes(strings, minimum_set_length=4): method setup_deps (line 90) | async def setup_deps(self): method setup (line 98) | async def setup(self): method build_extension_list (line 167) | def build_extension_list(self, event): method find_delimiter (line 180) | def find_delimiter(self, hint): method filter_event (line 188) | async def filter_event(self, event): method find_subword (line 195) | def find_subword(self, word): method handle_event (line 203) | async def handle_event(self, event): method finish (line 321) | async def finish(self): FILE: bbot/modules/filedownload.py class filedownload (line 7) | class filedownload(BaseModule): method setup_deps (line 97) | async def setup_deps(self): method setup (line 103) | async def setup(self): method filter_event (line 122) | async def filter_event(self, event): method hash_event (line 133) | def hash_event(self, event): method handle_event (line 138) | async def handle_event(self, event): method download_file (line 152) | async def download_file(self, url, content_type=None, source_event=None): method make_filename (line 168) | def make_filename(self, url, content_type=None): method report (line 200) | async def report(self): FILE: bbot/modules/fingerprintx.py class fingerprintx (line 6) | class fingerprintx(BaseModule): method setup (line 54) | async def setup(self): method filter_event (line 58) | async def filter_event(self, event): method handle_batch (line 65) | async def handle_batch(self, *events): FILE: bbot/modules/fullhunt.py class fullhunt (line 4) | class fullhunt(subdomain_enum_apikey): method setup (line 19) | async def setup(self): method ping (line 23) | async def ping(self): method prepare_api_request (line 29) | def prepare_api_request(self, url, kwargs): method request_url (line 33) | async def request_url(self, query): method parse_results (line 38) | async def parse_results(self, r, query): FILE: bbot/modules/generic_ssrf.py class BaseSubmodule (line 37) | class BaseSubmodule: method __init__ (line 42) | def __init__(self, generic_ssrf): method set_base_url (line 46) | def set_base_url(self, event): method create_paths (line 49) | def create_paths(self): method test (line 52) | async def test(self, event): method process (line 66) | def process(self, event, r, subdomain_tag): class Generic_SSRF (line 81) | class Generic_SSRF(BaseSubmodule): method set_base_url (line 85) | def set_base_url(self, event): method create_paths (line 88) | def create_paths(self): class Generic_SSRF_POST (line 100) | class Generic_SSRF_POST(BaseSubmodule): method set_base_url (line 104) | def set_base_url(self, event): method test (line 107) | async def test(self, event): class Generic_XXE (line 129) | class Generic_XXE(BaseSubmodule): method test (line 134) | async def test(self, event): class generic_ssrf (line 152) | class generic_ssrf(BaseModule): method setup (line 167) | async def setup(self): method handle_event (line 195) | async def handle_event(self, event): method interactsh_callback (line 199) | async def interactsh_callback(self, r): method cleanup (line 245) | async def cleanup(self): method finish (line 255) | async def finish(self): FILE: bbot/modules/git.py class git (line 6) | class git(BaseModule): method handle_event (line 20) | async def handle_event(self, event): FILE: bbot/modules/git_clone.py class git_clone (line 6) | class git_clone(github): method setup (line 25) | async def setup(self): method filter_event (line 31) | async def filter_event(self, event): method handle_event (line 36) | async def handle_event(self, event): method clone_git_repository (line 47) | async def clone_git_repository(self, repository_url): FILE: bbot/modules/gitdumper.py class gitdumper (line 7) | class gitdumper(BaseModule): method setup (line 29) | async def setup(self): method filter_event (line 110) | async def filter_event(self, event): method handle_event (line 116) | async def handle_event(self, event): method directory_listing_enabled (line 141) | async def directory_listing_enabled(self, repo_url): method recursive_dir_list (line 148) | async def recursive_dir_list(self, dir_listing): method git_fuzz (line 169) | async def git_fuzz(self, repo_url, repo_folder): method download_current_branch (line 186) | async def download_current_branch(self, repo_url, repo_folder): method download_git_objects (line 192) | async def download_git_objects(self, url, folder): method download_git_packs (line 196) | async def download_git_packs(self, url, folder): method regex_files (line 204) | async def regex_files(self, regex, folder=Path(), file=Path(), files=[]): method regex_file (line 218) | async def regex_file(self, regex, file=Path()): method download_object (line 227) | async def download_object(self, object, repo_url, repo_folder): method download_files (line 235) | async def download_files(self, urls, folder): method git_catfile (line 251) | async def git_catfile(self, hash, option="-t", folder=Path()): method git_checkout (line 260) | async def git_checkout(self, folder): FILE: bbot/modules/github_codesearch.py class github_codesearch (line 5) | class github_codesearch(github, subdomain_enum): method setup (line 20) | async def setup(self): method handle_event (line 24) | async def handle_event(self, event): method query (line 42) | async def query(self, query): method raw_url (line 84) | def raw_url(self, url): FILE: bbot/modules/github_org.py class github_org (line 4) | class github_org(github): method setup (line 22) | async def setup(self): method _api_response_is_success (line 27) | def _api_response_is_success(self, r): method filter_event (line 31) | async def filter_event(self, event): method handle_event (line 41) | async def handle_event(self, event): method query_org_repos (line 108) | async def query_org_repos(self, query): method query_org_members (line 136) | async def query_org_members(self, query): method query_user_repos (line 164) | async def query_user_repos(self, query): method validate_org (line 192) | async def validate_org(self, org): FILE: bbot/modules/github_usersearch.py class github_usersearch (line 5) | class github_usersearch(github, subdomain_enum): method handle_event (line 18) | async def handle_event(self, event): method query_users (line 39) | async def query_users(self, query): FILE: bbot/modules/github_workflows.py class github_workflows (line 8) | class github_workflows(github): method setup (line 27) | async def setup(self): method _api_response_is_success (line 40) | def _api_response_is_success(self, r): method filter_event (line 44) | async def filter_event(self, event): method handle_event (line 51) | async def handle_event(self, event): method get_workflows (line 100) | async def get_workflows(self, owner, repo): method get_workflow_runs (line 127) | async def get_workflow_runs(self, owner, repo, workflow_id): method download_run_logs (line 150) | async def download_run_logs(self, owner, repo, run_id): method get_run_artifacts (line 188) | async def get_run_artifacts(self, owner, repo, run_id): method download_run_artifacts (line 211) | async def download_run_artifacts(self, owner, repo, artifact_id, artif... FILE: bbot/modules/gitlab_com.py class gitlab_com (line 4) | class gitlab_com(GitLabBaseModule): method handle_event (line 22) | async def handle_event(self, event): method filter_event (line 25) | async def filter_event(self, event): FILE: bbot/modules/gitlab_onprem.py class gitlab_onprem (line 4) | class gitlab_onprem(GitLabBaseModule): method handle_event (line 28) | async def handle_event(self, event): method filter_event (line 36) | async def filter_event(self, event): method handle_http_response (line 54) | async def handle_http_response(self, event): method handle_technology (line 73) | async def handle_technology(self, event): FILE: bbot/modules/google_playstore.py class google_playstore (line 4) | class google_playstore(BaseModule): method setup (line 16) | async def setup(self): method filter_event (line 20) | async def filter_event(self, event): method handle_event (line 26) | async def handle_event(self, event): method handle_url (line 32) | async def handle_url(self, event): method handle_org_stub (line 43) | async def handle_org_stub(self, event): method query (line 60) | async def query(self, query): method validate_apk (line 76) | async def validate_apk(self, apk_name): FILE: bbot/modules/gowitness.py class gowitness (line 13) | class gowitness(BaseModule): method setup (line 56) | async def setup(self): method prep (line 130) | def prep(self): method filter_event (line 139) | async def filter_event(self, event): method handle_batch (line 155) | async def handle_batch(self, *events): method construct_command (line 226) | def construct_command(self): method get_new_screenshots (line 253) | async def get_new_screenshots(self): method get_new_network_logs (line 268) | async def get_new_network_logs(self): method get_new_technologies (line 282) | async def get_new_technologies(self): method cur_execute (line 296) | async def cur_execute(self, cur, query): method report (line 303) | async def report(self): FILE: bbot/modules/graphql_introspection.py class graphql_introspection (line 6) | class graphql_introspection(BaseModule): method setup (line 24) | async def setup(self): method filter_event (line 32) | async def filter_event(self, event): method handle_event (line 37) | async def handle_event(self, event): FILE: bbot/modules/hackertarget.py class hackertarget (line 4) | class hackertarget(subdomain_enum): method request_url (line 16) | async def request_url(self, query): method parse_results (line 21) | async def parse_results(self, r, query): FILE: bbot/modules/host_header.py class host_header (line 5) | class host_header(BaseModule): method setup (line 20) | async def setup(self): method rand_string (line 34) | def rand_string(self, *args, **kwargs): method interactsh_callback (line 37) | async def interactsh_callback(self, r): method finish (line 62) | async def finish(self): method cleanup (line 71) | async def cleanup(self): method handle_event (line 81) | async def handle_event(self, event): FILE: bbot/modules/httpx.py class httpx (line 11) | class httpx(BaseModule): method setup (line 56) | async def setup(self): method filter_event (line 64) | async def filter_event(self, event): method make_url_metadata (line 86) | def make_url_metadata(self, event): method _incoming_dedup_hash (line 101) | def _incoming_dedup_hash(self, event): method handle_batch (line 105) | async def handle_batch(self, *events): method cleanup (line 226) | async def cleanup(self): FILE: bbot/modules/hunt.py class hunt (line 282) | class hunt(BaseModule): method handle_event (line 292) | async def handle_event(self, event): FILE: bbot/modules/hunterio.py class hunterio (line 4) | class hunterio(subdomain_enum_apikey): method handle_event (line 21) | async def handle_event(self, event): method query (line 51) | async def query(self, query): FILE: bbot/modules/iis_shortnames.py function encode_all (line 8) | def encode_all(string): class IISShortnamesError (line 12) | class IISShortnamesError(Exception): class iis_shortnames (line 16) | class iis_shortnames(BaseModule): method detect (line 35) | async def detect(self, target): method setup (line 70) | async def setup(self): method normalize_url (line 75) | def normalize_url(url): method directory_confirm (line 78) | async def directory_confirm(self, target, method, url_hint, affirmativ... method duplicate_check (line 89) | async def duplicate_check(self, target, method, url_hint, affirmative_... method solve_valid_chars (line 119) | async def solve_valid_chars(self, method, target, affirmative_status_c... method solve_shortname_recursive (line 145) | async def solve_shortname_recursive( method handle_event (line 218) | async def handle_event(self, event): method filter_event (line 360) | async def filter_event(self, event): FILE: bbot/modules/internal/aggregate.py class aggregate (line 4) | class aggregate(BaseReportModule): method report (line 13) | async def report(self): FILE: bbot/modules/internal/base.py class BaseInternalModule (line 6) | class BaseInternalModule(BaseModule): method log (line 13) | def log(self): FILE: bbot/modules/internal/cloudcheck.py class CloudCheck (line 8) | class CloudCheck(BaseInterceptModule): method setup (line 19) | async def setup(self): method filter_event (line 26) | async def filter_event(self, event): method handle_event (line 31) | async def handle_event(self, event, **kwargs): method cloud_hostname_regexes (line 90) | async def cloud_hostname_regexes(self): FILE: bbot/modules/internal/dnsresolve.py class DNSResolve (line 10) | class DNSResolve(BaseInterceptModule): class HostModule (line 17) | class HostModule(BaseModule): method module_threads (line 22) | def module_threads(self): method setup (line 25) | async def setup(self): method filter_event (line 47) | async def filter_event(self, event): method handle_event (line 52) | async def handle_event(self, event, **kwargs): method handle_wildcard_event (line 136) | async def handle_wildcard_event(self, event): method emit_dns_children (line 175) | async def emit_dns_children(self, event): method emit_dns_children_raw (line 203) | async def emit_dns_children_raw(self, event, dns_tags): method check_scope (line 221) | def check_scope(self, event): method resolve_event (line 248) | async def resolve_event(self, event, types): method get_dns_parent (line 287) | def get_dns_parent(self, event): method emit_raw_records (line 315) | def emit_raw_records(self): method _dns_search_distance (line 324) | def _dns_search_distance(self): method _make_dummy_module (line 327) | def _make_dummy_module(self, name): FILE: bbot/modules/internal/excavate.py function find_subclasses (line 15) | def find_subclasses(obj, base_class): function _exclude_key (line 43) | def _exclude_key(original_dict, key_to_exclude): function extract_params_url (line 65) | def extract_params_url(parsed_url): function extract_params_location (line 84) | def extract_params_location(location_header_value, original_parsed_url): class YaraRuleSettings (line 107) | class YaraRuleSettings: method __init__ (line 108) | def __init__(self, description, tags, emit_match): class ExcavateRule (line 114) | class ExcavateRule: method __init__ (line 127) | def __init__(self, excavate): method preprocess (line 132) | async def preprocess(self, r, event, discovery_context): method process (line 172) | async def process(self, yara_results, event, yara_rule_settings, disco... method report_prep (line 202) | async def report_prep(self, event_data, event_type, event, tags): method report (line 230) | async def report( class CustomExtractor (line 275) | class CustomExtractor(ExcavateRule): method __init__ (line 278) | def __init__(self, excavate): method process (line 281) | async def process(self, yara_results, event, yara_rule_settings, disco... class excavate (line 296) | class excavate(BaseInternalModule, BaseInterceptModule): method in_bl (line 334) | def in_bl(self, value): method url_unparse (line 347) | def url_unparse(self, param_type, parsed_url): class ParameterExtractor (line 365) | class ParameterExtractor(ExcavateRule): class ParameterExtractorRule (line 369) | class ParameterExtractorRule: method extract (line 372) | async def extract(self): method __init__ (line 375) | def __init__(self, excavate, result): class GetJquery (line 379) | class GetJquery(ParameterExtractorRule): method extract (line 385) | async def extract(self): method convert_to_dict (line 399) | async def convert_to_dict(self, extracted_str): class PostJquery (line 411) | class PostJquery(GetJquery): class HtmlTags (line 417) | class HtmlTags(ParameterExtractorRule): method extract (line 423) | async def extract(self): class AjaxJquery (line 438) | class AjaxJquery(ParameterExtractorRule): method extract (line 450) | async def extract(self): class GetForm (line 493) | class GetForm(ParameterExtractorRule): method extract (line 510) | async def extract(self): class GetForm2 (line 547) | class GetForm2(GetForm): class PostForm (line 550) | class PostForm(GetForm): class PostForm2 (line 556) | class PostForm2(PostForm): class PostForm_NoAction (line 559) | class PostForm_NoAction(PostForm): class _GenericForm (line 564) | class _GenericForm(GetForm): method __init__ (line 571) | def __init__(self, excavate): method process (line 585) | async def process(self, yara_results, event, yara_rule_settings, dis... class CSPExtractor (line 653) | class CSPExtractor(ExcavateRule): method process (line 660) | async def process(self, yara_results, event, yara_rule_settings, dis... class EmailExtractor (line 667) | class EmailExtractor(ExcavateRule): method process (line 674) | async def process(self, yara_results, event, yara_rule_settings, dis... class JWTExtractor (line 682) | class JWTExtractor(ExcavateRule): class ErrorExtractor (line 688) | class ErrorExtractor(ExcavateRule): method __init__ (line 708) | def __init__(self, excavate): method process (line 718) | async def process(self, yara_results, event, yara_rule_settings, dis... class SerializationExtractor (line 726) | class SerializationExtractor(ExcavateRule): method __init__ (line 739) | def __init__(self, excavate): method process (line 749) | async def process(self, yara_results, event, yara_rule_settings, dis... class FunctionalityExtractor (line 757) | class FunctionalityExtractor(ExcavateRule): class NonHttpSchemeExtractor (line 764) | class NonHttpSchemeExtractor(ExcavateRule): method process (line 772) | async def process(self, yara_results, event, yara_rule_settings, dis... class URLExtractor (line 813) | class URLExtractor(ExcavateRule): method process (line 847) | async def process(self, yara_results, event, yara_rule_settings, dis... method report_prep (line 898) | async def report_prep(self, event_data, event_type, event, tags, **k... class HostnameExtractor (line 911) | class HostnameExtractor(ExcavateRule): method __init__ (line 916) | def __init__(self, excavate): method process (line 920) | async def process(self, yara_results, event, yara_rule_settings, dis... class LoginPageExtractor (line 925) | class LoginPageExtractor(ExcavateRule): method process (line 941) | async def process(self, yara_results, event, yara_rule_settings, dis... method add_yara_rule (line 945) | def add_yara_rule(self, rule_name, rule_content, rule_instance): method extract_yara_rules (line 950) | async def extract_yara_rules(self, rules_content): method emit_web_parameter (line 954) | async def emit_web_parameter( method emit_custom_parameters (line 968) | async def emit_custom_parameters(self, event, config_key, param_type, ... method setup (line 984) | async def setup(self): method search (line 1073) | async def search(self, data, event, content_type, discovery_context="H... method handle_event (line 1131) | async def handle_event(self, event, **kwargs): method help_text (line 1282) | def help_text(self): FILE: bbot/modules/internal/speculate.py class speculate (line 8) | class speculate(BaseInternalModule): method setup (line 46) | async def setup(self): method handle_event (line 79) | async def handle_event(self, event): FILE: bbot/modules/internal/unarchive.py class unarchive (line 7) | class unarchive(BaseInternalModule): method setup (line 17) | async def setup(self): method filter_event (line 31) | async def filter_event(self, event): method handle_event (line 48) | async def handle_event(self, event): method extract_file (line 69) | async def extract_file(self, path, output_dir): FILE: bbot/modules/ip2location.py class IP2Location (line 4) | class IP2Location(BaseModule): method setup (line 29) | async def setup(self): method ping (line 33) | async def ping(self): method build_url (line 37) | def build_url(self, data): method handle_event (line 43) | async def handle_event(self, event): FILE: bbot/modules/ipneighbor.py class ipneighbor (line 6) | class ipneighbor(BaseModule): method setup (line 19) | async def setup(self): method filter_event (line 24) | async def filter_event(self, event): method handle_event (line 29) | async def handle_event(self, event): FILE: bbot/modules/ipstack.py class Ipstack (line 4) | class Ipstack(BaseModule): method setup (line 28) | async def setup(self): method handle_event (line 31) | async def handle_event(self, event): FILE: bbot/modules/jadx.py class jadx (line 6) | class jadx(BaseModule): method setup (line 40) | async def setup(self): method filter_event (line 44) | async def filter_event(self, event): method handle_event (line 52) | async def handle_event(self, event): method decompile_apk (line 70) | async def decompile_apk(self, path, output_dir): FILE: bbot/modules/leakix.py class leakix (line 4) | class leakix(subdomain_enum_apikey): method setup (line 20) | async def setup(self): method prepare_api_request (line 27) | def prepare_api_request(self, url, kwargs): method request_url (line 33) | async def request_url(self, query): method parse_results (line 38) | async def parse_results(self, r, query=None): FILE: bbot/modules/lightfuzz/lightfuzz.py class lightfuzz (line 7) | class lightfuzz(BaseModule): method setup (line 39) | async def setup(self): method interactsh_callback (line 76) | async def interactsh_callback(self, r): method _outgoing_dedup_hash (line 98) | def _outgoing_dedup_hash(self, event): method run_submodule (line 110) | async def run_submodule(self, submodule, event): method handle_event (line 131) | async def handle_event(self, event): method cleanup (line 180) | async def cleanup(self): method finish (line 190) | async def finish(self): method filter_event (line 199) | async def filter_event(self, event): method help_text (line 215) | def help_text(self): FILE: bbot/modules/lightfuzz/submodules/base.py class BaseLightfuzz (line 7) | class BaseLightfuzz: method __init__ (line 11) | def __init__(self, lightfuzz, event): method is_hex (line 18) | def is_hex(s): method is_base64 (line 26) | def is_base64(s): method additional_params_process (line 35) | def additional_params_process(self, additional_params, additional_para... method conditional_urlencode (line 57) | def conditional_urlencode(self, probe, event_type, skip_urlencoding=Fa... method build_query_string (line 66) | def build_query_string(self, probe, parameter_name, additional_params=... method prepare_request (line 73) | def prepare_request( method compare_baseline (line 123) | def compare_baseline( method baseline_probe (line 158) | async def baseline_probe(self, cookies): method compare_probe (line 176) | async def compare_probe( method standard_probe (line 216) | async def standard_probe( method conversion_note (line 241) | def conversion_note(self): method metadata (line 248) | def metadata(self): method incoming_probe_value (line 256) | def incoming_probe_value(self, populate_empty=True): method outgoing_probe_value (line 273) | def outgoing_probe_value(self, outgoing_probe_value): method get_submodule_name (line 290) | def get_submodule_name(self): method log (line 294) | def log(self, level, message, *args, **kwargs): method debug (line 300) | def debug(self, message, *args, **kwargs): method verbose (line 303) | def verbose(self, message, *args, **kwargs): method info (line 306) | def info(self, message, *args, **kwargs): method hugeinfo (line 309) | def hugeinfo(self, message, *args, **kwargs): method warning (line 312) | def warning(self, message, *args, **kwargs): method hugewarning (line 315) | def hugewarning(self, message, *args, **kwargs): method error (line 318) | def error(self, message, *args, **kwargs): method critical (line 321) | def critical(self, message, *args, **kwargs): FILE: bbot/modules/lightfuzz/submodules/cmdi.py class cmdi (line 7) | class cmdi(BaseLightfuzz): method fuzz (line 26) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/crypto.py class crypto (line 12) | class crypto(BaseLightfuzz): method is_hex (line 38) | def is_hex(s): method is_base64 (line 46) | def is_base64(s): method compiled_rules (line 77) | def compiled_rules(self): method format_agnostic_decode (line 87) | def format_agnostic_decode(input_string, urldecode=False): method format_agnostic_encode (line 112) | def format_agnostic_encode(data, encoding, urlencode=False): method modify_string (line 138) | def modify_string(input_string, action="truncate", position=None, exte... method is_likely_encrypted (line 183) | def is_likely_encrypted(self, data, threshold=4.5): method cryptanalysis (line 188) | def cryptanalysis(self, input_string): method possible_block_sizes (line 200) | def possible_block_sizes(ciphertext_length): method padding_oracle_execute (line 209) | async def padding_oracle_execute(self, original_data, encoding, block_... method padding_oracle (line 287) | async def padding_oracle(self, probe_value, cookies): method error_string_search (line 313) | async def error_string_search(self, text_dict, baseline_text): method identify_hash_function (line 354) | def identify_hash_function(hash_bytes): method fuzz (line 367) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/esi.py class esi (line 4) | class esi(BaseLightfuzz): method check_probe (line 16) | async def check_probe(self, cookies, probe, match): method fuzz (line 31) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/path.py class path (line 7) | class path(BaseLightfuzz): method fuzz (line 28) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/serial.py class serial (line 5) | class serial(BaseLightfuzz): method is_possibly_serialized (line 56) | def is_possibly_serialized(self, value): method fuzz (line 81) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/sqli.py class sqli (line 7) | class sqli(BaseLightfuzz): method evaluate_delay (line 41) | def evaluate_delay(self, mean_baseline, measured_delay): method fuzz (line 72) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/ssti.py class ssti (line 4) | class ssti(BaseLightfuzz): method fuzz (line 16) | async def fuzz(self): FILE: bbot/modules/lightfuzz/submodules/xss.py class xss (line 6) | class xss(BaseLightfuzz): method determine_context (line 26) | async def determine_context(self, cookies, html, random_string): method determine_javascript_quote_context (line 61) | async def determine_javascript_quote_context(self, target, text): method check_probe (line 87) | async def check_probe(self, cookies, probe, match, context): method fuzz (line 100) | async def fuzz(self): FILE: bbot/modules/medusa.py class medusa (line 5) | class medusa(BaseModule): method setup_deps (line 104) | async def setup_deps(self): method setup (line 108) | async def setup(self): method filter_event (line 114) | async def filter_event(self, event): method handle_event (line 123) | async def handle_event(self, event): method parse_output (line 148) | async def parse_output(self, output, protocol_version): method construct_command (line 168) | async def construct_command(self, host, port, protocol, protocol_versi... method create_vuln_event (line 219) | def create_vuln_event(self, severity, description, source_event): FILE: bbot/modules/myssl.py class myssl (line 4) | class myssl(subdomain_enum): method request_url (line 16) | async def request_url(self, query): method parse_results (line 20) | async def parse_results(self, r, query): FILE: bbot/modules/newsletters.py class newsletters (line 18) | class newsletters(BaseModule): method find_type (line 30) | def find_type(self, soup): method handle_event (line 38) | async def handle_event(self, event): FILE: bbot/modules/ntlm.py class ntlm (line 62) | class ntlm(BaseModule): method setup (line 82) | async def setup(self): method handle_event (line 87) | async def handle_event(self, event): method filter_event (line 136) | async def filter_event(self, event): FILE: bbot/modules/nuclei.py class nuclei (line 7) | class nuclei(BaseModule): method setup (line 64) | async def setup(self): method handle_batch (line 143) | async def handle_batch(self, *events): method correlate_event (line 196) | def correlate_event(self, events, host): method execute_nuclei (line 204) | async def execute_nuclei(self, nuclei_input): method log_nuclei_status (line 287) | def log_nuclei_status(self, line): method cleanup (line 307) | async def cleanup(self): method filter_event (line 311) | async def filter_event(self, event): class NucleiBudget (line 321) | class NucleiBudget: method __init__ (line 322) | def __init__(self, nuclei_module): method get_yaml_list (line 330) | def get_yaml_list(self): method find_budget_paths (line 334) | def find_budget_paths(self, budget): method get_yaml_request_attr (line 348) | def get_yaml_request_attr(self, yf, attr): method get_yaml_info_attr (line 358) | def get_yaml_info_attr(self, yf, attr): method find_collapsible_templates (line 366) | def find_collapsible_templates(self): method parse_yaml (line 409) | def parse_yaml(self, yamlfile): FILE: bbot/modules/oauth.py class OAUTH (line 6) | class OAUTH(BaseModule): method setup (line 22) | async def setup(self): method filter_event (line 28) | async def filter_event(self, event): method handle_event (line 35) | async def handle_event(self, event): method url_and_base (line 118) | def url_and_base(self, url): method getoidc (line 125) | async def getoidc(self, url): method getoauth (line 147) | async def getoauth(self, url): FILE: bbot/modules/otx.py class otx (line 4) | class otx(subdomain_enum_apikey): method prepare_api_request (line 19) | def prepare_api_request(self, url, kwargs): method request_url (line 23) | def request_url(self, query): method parse_results (line 27) | async def parse_results(self, r, query): FILE: bbot/modules/output/asset_inventory.py class asset_inventory (line 23) | class asset_inventory(CSV): method setup (line 65) | async def setup(self): method filter_event (line 75) | async def filter_event(self, event): method handle_event (line 86) | async def handle_event(self, event): method report (line 93) | async def report(self): method finish (line 163) | async def finish(self): method _run_hooks (line 222) | def _run_hooks(self): class Asset (line 235) | class Asset: method __init__ (line 236) | def __init__(self, host, recheck): method absorb_csv_row (line 254) | def absorb_csv_row(self, row): method absorb_event (line 289) | def absorb_event(self, event): method hostkey (line 348) | def hostkey(self): method http_status_full (line 352) | def http_status_full(self): function _make_hostkey (line 356) | def _make_hostkey(host, ips): function _make_ip_list (line 369) | def _make_ip_list(ips): FILE: bbot/modules/output/base.py class BaseOutputModule (line 6) | class BaseOutputModule(BaseModule): method human_event_str (line 13) | def human_event_str(self, event): method _event_precheck (line 21) | def _event_precheck(self, event): method _event_postcheck (line 56) | async def _event_postcheck(self, event): method is_incoming_duplicate (line 63) | def is_incoming_duplicate(self, event, add=False): method _prep_output_dir (line 70) | def _prep_output_dir(self, filename): method _scope_distance_check (line 79) | def _scope_distance_check(self, event): method file (line 83) | def file(self): method log (line 89) | def log(self): FILE: bbot/modules/output/csv.py class CSV (line 7) | class CSV(BaseOutputModule): method setup (line 25) | async def setup(self): method writer (line 33) | def writer(self): method file (line 40) | def file(self): method fieldnames (line 48) | def fieldnames(self): method writerow (line 51) | def writerow(self, row): method handle_event (line 55) | async def handle_event(self, event): method cleanup (line 72) | async def cleanup(self): method report (line 77) | async def report(self): method add_custom_headers (line 81) | def add_custom_headers(self, headers): FILE: bbot/modules/output/discord.py class Discord (line 4) | class Discord(WebhookOutputModule): FILE: bbot/modules/output/emails.py class Emails (line 5) | class Emails(TXT): method setup (line 20) | async def setup(self): method _scope_distance_check (line 24) | def _scope_distance_check(self, event): method handle_event (line 27) | async def handle_event(self, event): method report (line 33) | async def report(self): FILE: bbot/modules/output/http.py class HTTP (line 4) | class HTTP(BaseOutputModule): method setup (line 30) | async def setup(self): method handle_event (line 52) | async def handle_event(self, event): FILE: bbot/modules/output/json.py class JSON (line 7) | class JSON(BaseOutputModule): method setup (line 21) | async def setup(self): method handle_event (line 26) | async def handle_event(self, event): method cleanup (line 33) | async def cleanup(self): method report (line 38) | async def report(self): FILE: bbot/modules/output/mysql.py class MySQL (line 4) | class MySQL(SQLTemplate): method create_database (line 28) | async def create_database(self): FILE: bbot/modules/output/neo4j.py class neo4j (line 13) | class neo4j(BaseOutputModule): method setup (line 46) | async def setup(self): method handle_batch (line 61) | async def handle_batch(self, *all_events): method merge_events (line 101) | async def merge_events(self, events, event_type, id_only=False): method merge_relationships (line 135) | async def merge_relationships(self, relationships): method cleanup (line 159) | async def cleanup(self): FILE: bbot/modules/output/nmap_xml.py class NmapHost (line 10) | class NmapHost: method __init__ (line 13) | def __init__(self): class Nmap_XML (line 19) | class Nmap_XML(BaseOutputModule): method setup (line 25) | async def setup(self): method handle_event (line 30) | async def handle_event(self, event): method report (line 76) | async def report(self): FILE: bbot/modules/output/postgres.py class Postgres (line 4) | class Postgres(SQLTemplate): method create_database (line 28) | async def create_database(self): FILE: bbot/modules/output/python.py class python (line 4) | class python(BaseOutputModule): method _worker (line 8) | async def _worker(self): FILE: bbot/modules/output/slack.py class Slack (line 6) | class Slack(WebhookOutputModule): method format_message_str (line 22) | def format_message_str(self, event): method format_message_other (line 26) | def format_message_other(self, event): FILE: bbot/modules/output/splunk.py class Splunk (line 5) | class Splunk(BaseOutputModule): method setup (line 27) | async def setup(self): method handle_event (line 43) | async def handle_event(self, event): FILE: bbot/modules/output/sqlite.py class SQLite (line 6) | class SQLite(SQLTemplate): method setup (line 21) | async def setup(self): method connection_string (line 32) | def connection_string(self, mask_password=False): FILE: bbot/modules/output/stdout.py class Stdout (line 7) | class Stdout(BaseOutputModule): method setup (line 21) | async def setup(self): method filter_event (line 34) | async def filter_event(self, event): method handle_event (line 40) | async def handle_event(self, event): method handle_text (line 51) | async def handle_text(self, event, event_json): method handle_json (line 68) | async def handle_json(self, event, event_json): FILE: bbot/modules/output/subdomains.py class Subdomains (line 5) | class Subdomains(TXT): method setup (line 20) | async def setup(self): method filter_event (line 25) | async def filter_event(self, event): method _scope_distance_check (line 30) | def _scope_distance_check(self, event): method handle_event (line 33) | async def handle_event(self, event): method report (line 39) | async def report(self): FILE: bbot/modules/output/teams.py class Teams (line 4) | class Teams(WebhookOutputModule): method handle_event (line 19) | async def handle_event(self, event): method trim_message (line 27) | def trim_message(self, message): method format_message_str (line 32) | def format_message_str(self, event): method format_message_other (line 39) | def format_message_other(self, event): method get_severity_color (line 47) | def get_severity_color(self, event): method format_message (line 61) | def format_message(self, event): FILE: bbot/modules/output/txt.py class TXT (line 6) | class TXT(BaseOutputModule): method setup (line 14) | async def setup(self): method handle_event (line 18) | async def handle_event(self, event): method cleanup (line 25) | async def cleanup(self): method report (line 30) | async def report(self): FILE: bbot/modules/output/web_parameters.py class Web_parameters (line 7) | class Web_parameters(BaseOutputModule): method setup (line 22) | async def setup(self): method handle_event (line 27) | async def handle_event(self, event): method cleanup (line 32) | async def cleanup(self): method report (line 37) | async def report(self): FILE: bbot/modules/output/web_report.py class web_report (line 6) | class web_report(BaseOutputModule): method setup (line 20) | async def setup(self): method handle_event (line 39) | async def handle_event(self, event): method report (line 81) | async def report(self): FILE: bbot/modules/output/websocket.py class Websocket (line 9) | class Websocket(BaseOutputModule): method setup (line 20) | async def setup(self): method handle_event (line 28) | async def handle_event(self, event): method ws (line 32) | async def ws(self, rebuild=False): method send (line 49) | async def send(self, message): method cleanup (line 64) | async def cleanup(self): FILE: bbot/modules/paramminer_cookies.py class paramminer_cookies (line 4) | class paramminer_cookies(paramminer_headers): method check_batch (line 36) | async def check_batch(self, compare_helper, url, cookie_list): method gen_count_args (line 40) | def gen_count_args(self, url): FILE: bbot/modules/paramminer_getparams.py class paramminer_getparams (line 4) | class paramminer_getparams(paramminer_headers): method check_batch (line 34) | async def check_batch(self, compare_helper, url, getparam_list): method gen_count_args (line 40) | def gen_count_args(self, url): FILE: bbot/modules/paramminer_headers.py class paramminer_headers (line 7) | class paramminer_headers(BaseModule): method setup_deps (line 85) | async def setup_deps(self): method setup (line 93) | async def setup(self): method rand_string (line 109) | def rand_string(self, *args, **kwargs): method do_mining (line 112) | async def do_mining(self, wl, url, batch_size, compare_helper): method process_results (line 134) | async def process_results(self, event, results): method handle_event (line 163) | async def handle_event(self, event): method count_test (line 202) | async def count_test(self, url): method gen_count_args (line 213) | def gen_count_args(self, url): method binary_search (line 224) | async def binary_search(self, compare_helper, url, group, reasons=None... method check_batch (line 241) | async def check_batch(self, compare_helper, url, header_list): method finish (line 248) | async def finish(self): method filter_event (line 265) | async def filter_event(self, event): FILE: bbot/modules/passivetotal.py class passivetotal (line 4) | class passivetotal(subdomain_enum_apikey): method setup (line 19) | async def setup(self): method ping (line 22) | async def ping(self): method prepare_api_request (line 29) | def prepare_api_request(self, url, kwargs): method abort_if (line 34) | async def abort_if(self, event): method request_url (line 38) | async def request_url(self, query): method parse_results (line 42) | async def parse_results(self, r, query): FILE: bbot/modules/pgp.py class pgp (line 4) | class pgp(subdomain_enum): method handle_event (line 24) | async def handle_event(self, event): method query (line 37) | async def query(self, query): FILE: bbot/modules/portfilter.py class portfilter (line 4) | class portfilter(BaseInterceptModule): method setup (line 25) | async def setup(self): method handle_event (line 35) | async def handle_event(self, event, **kwargs): FILE: bbot/modules/portscan.py class portscan (line 12) | class portscan(BaseModule): method setup (line 52) | async def setup(self): method handle_batch (line 95) | async def handle_batch(self, *events): method masscan (line 115) | async def masscan(self, targets, correlator, ping=False): method make_targets (line 149) | async def make_targets(self, events, scanned_tracker): method emit_open_port (line 203) | async def emit_open_port(self, ip, port, parent_event): method parse_json_line (line 229) | def parse_json_line(self, line): method prep_blacklist (line 253) | def prep_blacklist(self): method _build_masscan_command (line 266) | def _build_masscan_command(self, target_file=None, ping=False, dry_run... method log_masscan_status (line 303) | def log_masscan_status(self, s): method cleanup (line 312) | async def cleanup(self): FILE: bbot/modules/postman.py class postman (line 4) | class postman(postman): method handle_event (line 17) | async def handle_event(self, event): method process_workspaces (line 41) | async def process_workspaces(self, user=None, org=None): method query (line 66) | async def query(self, query): FILE: bbot/modules/postman_download.py class postman_download (line 7) | class postman_download(postman): method setup (line 23) | async def setup(self): method filter_event (line 32) | async def filter_event(self, event): method handle_event (line 38) | async def handle_event(self, event): method save_workspace (line 58) | def save_workspace(self, workspace, environments, collections): method add_json_to_zip (line 83) | def add_json_to_zip(self, zip_path, data, filename): FILE: bbot/modules/rapiddns.py class rapiddns (line 4) | class rapiddns(subdomain_enum): method request_url (line 16) | async def request_url(self, query): method parse_results (line 21) | async def parse_results(self, r, query): FILE: bbot/modules/reflected_parameters.py class reflected_parameters (line 4) | class reflected_parameters(BaseModule): method handle_event (line 14) | async def handle_event(self, event): method detect_reflection (line 31) | async def detect_reflection(self, event, url): method send_probe_with_canary (line 52) | async def send_probe_with_canary(self, event, parameter_name, paramete... FILE: bbot/modules/report/affiliates.py class affiliates (line 4) | class affiliates(BaseReportModule): method setup (line 16) | async def setup(self): method handle_event (line 20) | async def handle_event(self, event): method report (line 23) | async def report(self): method add_affiliate (line 33) | def add_affiliate(self, event): FILE: bbot/modules/report/asn.py class asn (line 4) | class asn(BaseReportModule): method setup (line 18) | async def setup(self): method filter_event (line 32) | async def filter_event(self, event): method handle_event (line 39) | async def handle_event(self, event): method report (line 68) | async def report(self): method cache_put (line 85) | def cache_put(self, asn): method cache_get (line 94) | def cache_get(self, ip): method get_asn (line 105) | async def get_asn(self, ip, retries=1): method get_asn_ripe (line 124) | async def get_asn_ripe(self, ip): method get_asn_metadata_ripe (line 147) | async def get_asn_metadata_ripe(self, asn_number): method get_asn_bgpview (line 185) | async def get_asn_bgpview(self, ip): method get_emails_bgpview (line 223) | async def get_emails_bgpview(self, asn): method get_url (line 238) | async def get_url(self, url, data_type, cache=False): FILE: bbot/modules/report/base.py class BaseReportModule (line 4) | class BaseReportModule(BaseModule): FILE: bbot/modules/retirejs.py class RetireJSSeverity (line 6) | class RetireJSSeverity(IntEnum): method from_string (line 14) | def from_string(cls, severity_str): class retirejs (line 21) | class retirejs(BaseModule): method setup (line 114) | async def setup(self): method handle_event (line 135) | async def handle_event(self, event): method filter_event (line 198) | async def filter_event(self, event): method execute_retirejs (line 204) | async def execute_retirejs(self, js_file): FILE: bbot/modules/robots.py class robots (line 4) | class robots(BaseModule): method setup (line 20) | async def setup(self): method handle_event (line 23) | async def handle_event(self, event): FILE: bbot/modules/securitytrails.py class securitytrails (line 4) | class securitytrails(subdomain_enum_apikey): method setup (line 20) | async def setup(self): method request_url (line 24) | async def request_url(self, query): method parse_results (line 29) | async def parse_results(self, r, query): FILE: bbot/modules/securitytxt.py class securitytxt (line 58) | class securitytxt(BaseModule): method setup (line 76) | async def setup(self): method _incoming_dedup_hash (line 81) | def _incoming_dedup_hash(self, event): method filter_event (line 86) | async def filter_event(self, event): method handle_event (line 91) | async def handle_event(self, event): FILE: bbot/modules/shodan_dns.py class shodan_dns (line 4) | class shodan_dns(shodan): method handle_event (line 19) | async def handle_event(self, event): method make_url (line 22) | def make_url(self, query): method parse_results (line 25) | async def parse_results(self, json, query): FILE: bbot/modules/shodan_idb.py class shodan_idb (line 5) | class shodan_idb(BaseModule): method setup (line 64) | async def setup(self): method _incoming_dedup_hash (line 69) | def _incoming_dedup_hash(self, event): method api_retries (line 73) | def api_retries(self): method handle_event (line 77) | async def handle_event(self, event): method _parse_response (line 114) | async def _parse_response(self, data: dict, event, ip): method get_ip (line 152) | def get_ip(self, event): FILE: bbot/modules/sitedossier.py class sitedossier (line 4) | class sitedossier(subdomain_enum): method handle_event (line 17) | async def handle_event(self, event): method query (line 34) | async def query(self, query, parse_fn=None, request_fn=None): FILE: bbot/modules/skymem.py class skymem (line 6) | class skymem(emailformat): method setup (line 19) | async def setup(self): method handle_event (line 23) | async def handle_event(self, event): FILE: bbot/modules/smuggler.py class smuggler (line 11) | class smuggler(BaseModule): method handle_event (line 27) | async def handle_event(self, event): FILE: bbot/modules/social.py class social (line 5) | class social(BaseModule): method setup (line 33) | async def setup(self): method handle_event (line 37) | async def handle_event(self, event): FILE: bbot/modules/sslcert.py class sslcert (line 11) | class sslcert(BaseModule): method setup (line 28) | async def setup(self): method filter_event (line 43) | async def filter_event(self, event): method handle_event (line 48) | async def handle_event(self, event): method on_success_callback (line 99) | def on_success_callback(self, event): method visit_host (line 104) | async def visit_host(self, host, port): method get_cert_sans (line 172) | def get_cert_sans(cert): FILE: bbot/modules/subdomaincenter.py class subdomaincenter (line 4) | class subdomaincenter(subdomain_enum): method request_url (line 16) | async def request_url(self, query): method parse_results (line 21) | async def parse_results(self, r, query): FILE: bbot/modules/subdomainradar.py class SubdomainRadar (line 7) | class SubdomainRadar(subdomain_enum_apikey): method setup (line 31) | async def setup(self): method prepare_api_request (line 70) | def prepare_api_request(self, url, kwargs): method handle_event (line 75) | async def handle_event(self, event): method task_poll_loop (line 94) | async def task_poll_loop(self): method parse_response (line 115) | async def parse_response(self, response, query, event): method finish (line 132) | async def finish(self): FILE: bbot/modules/telerik.py class telerik (line 6) | class telerik(BaseModule): method normalize_url (line 183) | def normalize_url(url): method _incoming_dedup_hash (line 186) | def _incoming_dedup_hash(self, event): method handle_event (line 195) | async def handle_event(self, event): method create_url (line 386) | def create_url(self, baseurl, detector): method test_detector (line 389) | async def test_detector(self, baseurl, detector): method filter_event (line 395) | async def filter_event(self, event): FILE: bbot/modules/templates/bucket.py class bucket_template (line 7) | class bucket_template(BaseModule): method setup (line 23) | async def setup(self): method filter_event (line 35) | async def filter_event(self, event): method filter_bucket (line 44) | def filter_bucket(self, event): method handle_event (line 49) | async def handle_event(self, event): method handle_dns_name (line 55) | async def handle_dns_name(self, event): method handle_storage_bucket (line 73) | async def handle_storage_bucket(self, event): method emit_storage_bucket (line 99) | async def emit_storage_bucket(self, event_data, event_type, parent, ta... method brute_buckets (line 109) | async def brute_buckets(self, buckets, permutations=False, omit_base=F... method clean_bucket_url (line 134) | def clean_bucket_url(self, url): method build_bucket_request (line 138) | def build_bucket_request(self, bucket_name, base_domain, region): method _check_bucket_exists (line 142) | def _check_bucket_exists(self, bucket_name, response): method check_bucket_exists (line 146) | def check_bucket_exists(self, bucket_name, response): method _check_bucket_open (line 152) | async def _check_bucket_open(self, bucket_name, url): method check_bucket_open (line 156) | async def check_bucket_open(self, bucket_name, url): method valid_bucket_name (line 167) | def valid_bucket_name(self, bucket_name): method is_valid_bucket_name (line 176) | def is_valid_bucket_name(self, bucket_name): method bucket_name_regexes (line 180) | def bucket_name_regexes(self): method build_url (line 187) | def build_url(self, bucket_name, base_domain, region): method gen_tags_exists (line 190) | def gen_tags_exists(self, response): method gen_tags_open (line 193) | def gen_tags_open(self, response): FILE: bbot/modules/templates/censys.py class censys (line 6) | class censys(subdomain_enum_apikey): method setup (line 17) | async def setup(self): method ping (line 41) | async def ping(self): method prepare_api_request (line 51) | def prepare_api_request(self, url, kwargs): FILE: bbot/modules/templates/github.py class github (line 6) | class github(BaseModule): method prepare_api_request (line 16) | def prepare_api_request(self, url, kwargs): method setup (line 20) | async def setup(self): method github_graphql_request (line 48) | async def github_graphql_request(self, graphql_query, resp_key): FILE: bbot/modules/templates/gitlab.py class GitLabBaseModule (line 4) | class GitLabBaseModule(BaseModule): method setup (line 18) | async def setup(self): method handle_social (line 23) | async def handle_social(self, event): method handle_projects_url (line 38) | async def handle_projects_url(self, projects_url, event): method handle_groups_url (line 51) | async def handle_groups_url(self, groups_url, event): method gitlab_json_request (line 55) | async def gitlab_json_request(self, url): method handle_namespace (line 67) | async def handle_namespace(self, namespace, event): method get_base_url (line 94) | def get_base_url(self, event): FILE: bbot/modules/templates/postman.py class postman (line 4) | class postman(BaseModule): method setup (line 24) | async def setup(self): method prepare_api_request (line 53) | def prepare_api_request(self, url, kwargs): method get_workspace_id (line 58) | async def get_workspace_id(self, repo_url): method request_workspace (line 82) | async def request_workspace(self, id): method get_workspace (line 114) | async def get_workspace(self, workspace_id): method get_globals (line 129) | async def get_globals(self, workspace_id): method get_environment (line 144) | async def get_environment(self, environment_id): method get_collection (line 159) | async def get_collection(self, collection_id): method validate_workspace (line 174) | async def validate_workspace(self, workspace, environments, collections): FILE: bbot/modules/templates/shodan.py class shodan (line 6) | class shodan(subdomain_enum): method setup (line 13) | async def setup(self): FILE: bbot/modules/templates/sql.py class SQLTemplate (line 10) | class SQLTemplate(BaseOutputModule): method setup (line 29) | async def setup(self): method handle_event (line 39) | async def handle_event(self, event): method create_database (line 63) | async def create_database(self): method init_database (line 66) | async def init_database(self): method connection_string (line 78) | def connection_string(self, mask_password=False): method cleanup (line 93) | async def cleanup(self): FILE: bbot/modules/templates/subdomain_enum.py class subdomain_enum (line 4) | class subdomain_enum(BaseModule): method source_pretty_name (line 40) | def source_pretty_name(self): method _incoming_dedup_hash (line 43) | def _incoming_dedup_hash(self, event): method handle_event (line 49) | async def handle_event(self, event): method handle_event_paginated (line 69) | async def handle_event_paginated(self, event): method request_url (line 87) | async def request_url(self, query): method make_url (line 91) | def make_url(self, query): method make_query (line 94) | def make_query(self, event): method parse_results (line 109) | async def parse_results(self, r, query=None): method query (line 115) | async def query(self, query, request_fn=None, parse_fn=None): method query_paginated (line 142) | async def query_paginated(self, query): method _is_wildcard (line 155) | async def _is_wildcard(self, query): method filter_event (line 163) | async def filter_event(self, event): method abort_if (line 186) | async def abort_if(self, event): class subdomain_enum_apikey (line 193) | class subdomain_enum_apikey(subdomain_enum): method setup (line 206) | async def setup(self): FILE: bbot/modules/templates/webhook.py class WebhookOutputModule (line 6) | class WebhookOutputModule(BaseOutputModule): method setup (line 21) | async def setup(self): method api_retries (line 34) | def api_retries(self): method handle_event (line 37) | async def handle_event(self, event): method get_watched_events (line 46) | def get_watched_events(self): method filter_event (line 54) | async def filter_event(self, event): method format_message_str (line 61) | def format_message_str(self, event): method format_message_other (line 65) | def format_message_other(self, event): method get_severity_color (line 73) | def get_severity_color(self, event): method format_message (line 80) | def format_message(self, event): method evaluate_response (line 89) | def evaluate_response(self, response): FILE: bbot/modules/trickest.py class Trickest (line 4) | class Trickest(subdomain_enum_apikey): method prepare_api_request (line 26) | def prepare_api_request(self, url, kwargs): method handle_event (line 30) | async def handle_event(self, event): method make_url (line 33) | def make_url(self, query): method parse_results (line 39) | async def parse_results(self, j, query): FILE: bbot/modules/trufflehog.py class trufflehog (line 6) | class trufflehog(BaseModule): method setup_deps (line 44) | async def setup_deps(self): method setup (line 50) | async def setup(self): method filter_event (line 73) | async def filter_event(self, event): method handle_event (line 87) | async def handle_event(self, event): method execute_trufflehog (line 150) | async def execute_trufflehog(self, module, path=None, string=None): method log_trufflehog_status (line 206) | def log_trufflehog_status(self, path, line): FILE: bbot/modules/url_manipulation.py class url_manipulation (line 5) | class url_manipulation(BaseModule): method setup (line 21) | async def setup(self): method handle_event (line 45) | async def handle_event(self, event): method filter_event (line 92) | async def filter_event(self, event): method format_signature (line 100) | def format_signature(self, sig, event): FILE: bbot/modules/urlscan.py class urlscan (line 4) | class urlscan(subdomain_enum): method setup (line 18) | async def setup(self): method handle_event (line 22) | async def handle_event(self, event): method query (line 57) | async def query(self, query): FILE: bbot/modules/vhost.py class vhost (line 7) | class vhost(ffuf): method setup (line 30) | async def setup(self): method handle_event (line 35) | async def handle_event(self, event): method ffuf_vhost (line 74) | async def ffuf_vhost(self, host, basehost, event, wordlist=None, skip_... method mutations_check (line 104) | def mutations_check(self, vhost): method finish (line 112) | async def finish(self): FILE: bbot/modules/viewdns.py class viewdns (line 6) | class viewdns(BaseModule): method setup (line 24) | async def setup(self): method handle_event (line 28) | async def handle_event(self, event): method query (line 39) | async def query(self, query): FILE: bbot/modules/virustotal.py class virustotal (line 4) | class virustotal(subdomain_enum_apikey): method make_url (line 20) | def make_url(self, query): method prepare_api_request (line 23) | def prepare_api_request(self, url, kwargs): method parse_results (line 27) | async def parse_results(self, r, query): FILE: bbot/modules/wafw00f.py class wafw00f (line 11) | class wafw00f(BaseModule): method filter_event (line 33) | async def filter_event(self, event): method _incoming_dedup_hash (line 39) | def _incoming_dedup_hash(self, event): method handle_event (line 42) | async def handle_event(self, event): FILE: bbot/modules/wayback.py class wayback (line 6) | class wayback(subdomain_enum): method setup (line 24) | async def setup(self): method handle_event (line 29) | async def handle_event(self, event): method query (line 40) | async def query(self, query): FILE: bbot/modules/wpscan.py class wpscan (line 5) | class wpscan(BaseModule): method setup (line 66) | async def setup(self): method filter_event (line 79) | async def filter_event(self, event): method handle_event (line 93) | async def handle_event(self, event): method handle_http_response (line 99) | async def handle_http_response(self, source_event): method handle_technology (line 106) | async def handle_technology(self, source_event): method construct_command (line 113) | def construct_command(self, url): method parse_wpscan_output (line 142) | def parse_wpscan_output(self, output, base_url, source_event): method parse_wp_misc (line 157) | def parse_wp_misc(self, interesting_json, base_url, source_event): method parse_wp_version (line 182) | def parse_wp_version(self, version_json, url, source_event): method parse_wp_themes (line 205) | def parse_wp_themes(self, theme_json, url, source_event): method parse_wp_plugins (line 230) | def parse_wp_plugins(self, plugins_json, base_url, source_event): method vulnerability_to_s (line 259) | def vulnerability_to_s(self, vuln_json): method get_base_url (line 281) | def get_base_url(self, event): FILE: bbot/scanner/dispatcher.py class Dispatcher (line 7) | class Dispatcher: method set_scan (line 12) | def set_scan(self, scan): method on_start (line 15) | async def on_start(self, scan): method on_finish (line 18) | async def on_finish(self, scan): method on_status (line 21) | async def on_status(self, status, scan_id): method catch (line 27) | async def catch(self, callback, *args, **kwargs): FILE: bbot/scanner/manager.py class ScanIngress (line 8) | class ScanIngress(BaseInterceptModule): method priority (line 22) | def priority(self): method __init__ (line 26) | def __init__(self, *args, **kwargs): method init_events (line 33) | async def init_events(self, event_seeds=None): method handle_event (line 70) | async def handle_event(self, event, **kwargs): method non_intercept_modules (line 126) | def non_intercept_modules(self): method incoming_queues (line 132) | def incoming_queues(self): method module_priority_weights (line 137) | def module_priority_weights(self): method get_incoming_event (line 144) | async def get_incoming_event(self): method is_incoming_duplicate (line 152) | def is_incoming_duplicate(self, event, add=False): class ScanEgress (line 171) | class ScanEgress(BaseInterceptModule): method priority (line 183) | def priority(self): method handle_event (line 187) | async def handle_event(self, event, **kwargs): method forward_event (line 259) | async def forward_event(self, event, kwargs): FILE: bbot/scanner/preset/args.py class BBOTArgs (line 19) | class BBOTArgs: method __init__ (line 91) | def __init__(self, preset): method parsed (line 99) | def parsed(self): method preset_from_args (line 105) | def preset_from_args(self): method create_parser (line 217) | def create_parser(self, *args, **kwargs): method sanitize_args (line 403) | def sanitize_args(self): method validate (line 462) | def validate(self): FILE: bbot/scanner/preset/conditions.py class ConditionEvaluator (line 10) | class ConditionEvaluator: method __init__ (line 11) | def __init__(self, preset): method context (line 15) | def context(self): method abort (line 23) | def abort(self, message): method warn (line 27) | def warn(self, message): method evaluate (line 30) | def evaluate(self): method jinja_env (line 43) | def jinja_env(self): method check_condition (line 51) | def check_condition(self, condition_str, context): FILE: bbot/scanner/preset/environ.py function increase_limit (line 18) | def increase_limit(new_limit): function env_resolver (line 37) | def env_resolver(env_name, default=None): function add_to_path (line 41) | def add_to_path(v, k="PATH", environ=None): class BBOTEnviron (line 73) | class BBOTEnviron: method __init__ (line 74) | def __init__(self, preset): method flatten_config (line 77) | def flatten_config(self, config, base="bbot"): method prepare (line 90) | def prepare(self): FILE: bbot/scanner/preset/path.py class PresetPath (line 12) | class PresetPath: method __init__ (line 17) | def __init__(self): method find (line 20) | def find(self, filename): method __str__ (line 47) | def __str__(self): method add_path (line 50) | def add_path(self, path): method __iter__ (line 66) | def __iter__(self): FILE: bbot/scanner/preset/preset.py class BasePreset (line 27) | class BasePreset(type): method __call__ (line 28) | def __call__(cls, *args, include=None, presets=None, name=None, descri... class Preset (line 59) | class Preset(metaclass=BasePreset): method __init__ (line 116) | def __init__( method bbot_home (line 280) | def bbot_home(self): method target (line 284) | def target(self): method seeds (line 290) | def seeds(self): method whitelist (line 296) | def whitelist(self): method blacklist (line 302) | def blacklist(self): method preset_dir (line 308) | def preset_dir(self): method default_output_modules (line 312) | def default_output_modules(self): method default_internal_modules (line 322) | def default_internal_modules(self): method merge (line 330) | def merge(self, other): method bake (line 401) | def bake(self, scan=None): method parse_args (line 503) | def parse_args(self): method module_dirs (line 513) | def module_dirs(self): method module_dirs (line 517) | def module_dirs(self, module_dirs): method scan_modules (line 526) | def scan_modules(self): method output_modules (line 530) | def output_modules(self): method internal_modules (line 534) | def internal_modules(self): method add_module (line 537) | def add_module(self, module_name, module_type="scan", raise_error=True): method preloaded_module (line 549) | def preloaded_module(self, module): method config (line 553) | def config(self): method web_config (line 557) | def web_config(self): method scope_config (line 561) | def scope_config(self): method strict_scope (line 565) | def strict_scope(self): method apply_log_level (line 568) | def apply_log_level(self, apply_core=False): method helpers (line 598) | def helpers(self): method module_loader (line 606) | def module_loader(self): method environ (line 617) | def environ(self): method args (line 625) | def args(self): method in_scope (line 632) | def in_scope(self, host): method blacklisted (line 635) | def blacklisted(self, host): method whitelisted (line 638) | def whitelisted(self, host): method from_dict (line 642) | def from_dict(cls, preset_dict, name=None, _exclude=None, _log=False): method include_preset (line 684) | def include_preset(self, filename): method from_yaml_file (line 705) | def from_yaml_file(cls, filename, _exclude=None, _log=False): method from_yaml_string (line 739) | def from_yaml_string(cls, yaml_preset): method to_dict (line 755) | def to_dict(self, include_target=False, full_config=False, redact_secr... method to_yaml (line 835) | def to_yaml(self, include_target=False, full_config=False, sort_keys=F... method _is_valid_module (line 858) | def _is_valid_module(self, module, module_type, name_only=False, raise... method validate (line 902) | def validate(self): method all_presets (line 929) | def all_presets(self): method presets_table (line 980) | def presets_table(self, include_modules=True): method log_verbose (line 997) | def log_verbose(self, msg): method log_debug (line 1001) | def log_debug(self, msg): FILE: bbot/scanner/scanner.py class Scanner (line 25) | class Scanner: method __init__ (line 99) | def __init__( method _prep (line 271) | async def _prep(self): method start (line 331) | def start(self): method start_without_generator (line 335) | def start_without_generator(self): method async_start_without_generator (line 339) | async def async_start_without_generator(self): method async_start (line 343) | async def async_start(self): method _mark_finished (line 451) | async def _mark_finished(self): method _start_modules (line 482) | def _start_modules(self): method setup_modules (line 487) | async def setup_modules(self, remove_failed=True, deps_only=False): method load_modules (line 530) | async def load_modules(self): method modules_finished (line 622) | def modules_finished(self): method kill_module (line 626) | def kill_module(self, module_name, message=None): method incoming_event_queues (line 640) | def incoming_event_queues(self): method num_queued_events (line 644) | def num_queued_events(self): method modules_status (line 650) | def modules_status(self, _log=False): method stop (line 753) | def stop(self): method finish (line 773) | async def finish(self): method _drain_queues (line 800) | def _drain_queues(self): method _cancel_tasks (line 820) | def _cancel_tasks(self): method _report (line 850) | async def _report(self): method _cleanup (line 867) | async def _cleanup(self): method in_scope (line 898) | def in_scope(self, *args, **kwargs): method whitelisted (line 901) | def whitelisted(self, *args, **kwargs): method blacklisted (line 904) | def blacklisted(self, *args, **kwargs): method core (line 908) | def core(self): method config (line 912) | def config(self): method target (line 916) | def target(self): method seeds (line 920) | def seeds(self): method whitelist (line 924) | def whitelist(self): method blacklist (line 928) | def blacklist(self): method helpers (line 932) | def helpers(self): method force_start (line 936) | def force_start(self): method word_cloud (line 940) | def word_cloud(self): method stopping (line 944) | def stopping(self): method stopped (line 948) | def stopped(self): method running (line 952) | def running(self): method aborting (line 956) | def aborting(self): method status (line 960) | def status(self): method omitted_event_types (line 964) | def omitted_event_types(self): method status (line 970) | def status(self, status): method make_event (line 993) | def make_event(self, *args, **kwargs): method update_event (line 998) | def update_event(self, event, **kwargs): method root_event (line 1003) | def root_event(self): method finish_event (line 1028) | def finish_event(self, context=None, status=None): method make_root_event (line 1036) | def make_root_event(self, context): method dns_strings (line 1046) | def dns_strings(self): method _generate_dns_regexes (line 1062) | def _generate_dns_regexes(self, pattern): method dns_regexes (line 1081) | def dns_regexes(self): method dns_regexes_yara (line 1097) | def dns_regexes_yara(self): method dns_yara_rules_uncompiled (line 1106) | def dns_yara_rules_uncompiled(self): method dns_yara_rules (line 1126) | async def dns_yara_rules(self): method extract_in_scope_hostnames (line 1136) | async def extract_in_scope_hostnames(self, s): method json (line 1154) | def json(self): method debug (line 1175) | def debug(self, *args, trace=False, **kwargs): method verbose (line 1180) | def verbose(self, *args, trace=False, **kwargs): method hugeverbose (line 1185) | def hugeverbose(self, *args, trace=False, **kwargs): method info (line 1190) | def info(self, *args, trace=False, **kwargs): method hugeinfo (line 1195) | def hugeinfo(self, *args, trace=False, **kwargs): method success (line 1200) | def success(self, *args, trace=False, **kwargs): method hugesuccess (line 1205) | def hugesuccess(self, *args, trace=False, **kwargs): method warning (line 1210) | def warning(self, *args, trace=True, **kwargs): method hugewarning (line 1215) | def hugewarning(self, *args, trace=True, **kwargs): method error (line 1220) | def error(self, *args, trace=True, **kwargs): method trace (line 1225) | def trace(self, msg=None): method critical (line 1233) | def critical(self, *args, trace=True, **kwargs): method log_level (line 1239) | def log_level(self): method _log_handlers (line 1246) | def _log_handlers(self): method _start_log_handlers (line 1264) | def _start_log_handlers(self): method _stop_log_handlers (line 1275) | def _stop_log_handlers(self): method _fail_setup (line 1283) | def _fail_setup(self, msg): method _load_modules (line 1291) | def _load_modules(self, modules): method _status_ticker (line 1308) | async def _status_ticker(self, interval=15): method _acatch (line 1315) | async def _acatch(self, context="scan", finally_callback=None, unhandl... method _handle_exception (line 1331) | def _handle_exception(self, e, context="scan", finally_callback=None, ... method _make_dummy_module (line 1355) | def _make_dummy_module(self, name, _type="scan"): class DummyModule (line 1370) | class DummyModule(BaseModule): method __init__ (line 1373) | def __init__(self, *args, **kwargs): FILE: bbot/scanner/stats.py function _increment (line 8) | def _increment(d, k): class SpeedCounter (line 15) | class SpeedCounter: method __init__ (line 20) | def __init__(self, window=60): method tick (line 24) | def tick(self): method remove_old_timestamps (line 29) | def remove_old_timestamps(self, current_time): method speed (line 34) | def speed(self): class ScanStats (line 39) | class ScanStats: method __init__ (line 40) | def __init__(self, scan): method event_produced (line 46) | def event_produced(self, event): method event_consumed (line 52) | def event_consumed(self, event, module): method get (line 61) | def get(self, module): method table (line 71) | def table(self): method _make_table (line 93) | def _make_table(self): class ModuleStat (line 100) | class ModuleStat: method __init__ (line 101) | def __init__(self, module): method increment_produced (line 108) | def increment_produced(self, event): method increment_consumed (line 112) | def increment_consumed(self, event): FILE: bbot/scanner/target.py class BaseTarget (line 15) | class BaseTarget(RadixTarget): method __init__ (line 30) | def __init__(self, *targets, **kwargs): method inputs (line 37) | def inputs(self): method get (line 40) | def get(self, event, **kwargs): method _make_event_seed (line 70) | def _make_event_seed(self, target, raise_error=False): method add (line 80) | def add(self, targets, data=None): method __iter__ (line 97) | def __iter__(self): class ScanSeeds (line 101) | class ScanSeeds(BaseTarget): method get (line 108) | def get(self, event, single=True, **kwargs): method _add (line 114) | def _add(self, host, data): method _hash_value (line 131) | def _hash_value(self): class ACLTarget (line 136) | class ACLTarget(BaseTarget): method __init__ (line 137) | def __init__(self, *args, **kwargs): class ScanWhitelist (line 143) | class ScanWhitelist(ACLTarget): class ScanBlacklist (line 151) | class ScanBlacklist(ACLTarget): method __init__ (line 158) | def __init__(self, *args, **kwargs): method get (line 162) | def get(self, host, **kwargs): method _add (line 190) | def _add(self, host, data): method _hash_value (line 196) | def _hash_value(self): method __len__ (line 202) | def __len__(self): method __bool__ (line 205) | def __bool__(self): class BBOTTarget (line 209) | class BBOTTarget: method __init__ (line 219) | def __init__(self, *seeds, whitelist=None, blacklist=None, strict_scop... method json (line 230) | def json(self): method hash (line 244) | def hash(self): method scope_hash (line 251) | def scope_hash(self): method in_scope (line 258) | def in_scope(self, host): method blacklisted (line 275) | def blacklisted(self, host): method whitelisted (line 291) | def whitelisted(self, host): method __eq__ (line 307) | def __eq__(self, other): FILE: bbot/scripts/benchmark_report.py function run_command (line 17) | def run_command(cmd: List[str], cwd: Path = None, capture_output: bool =... function get_current_branch (line 29) | def get_current_branch() -> str: function checkout_branch (line 35) | def checkout_branch(branch: str, repo_path: Path = None): function run_benchmarks (line 41) | def run_benchmarks(output_file: Path, repo_path: Path = None) -> bool: function load_benchmark_data (line 71) | def load_benchmark_data(filepath: Path) -> Dict[str, Any]: function format_time (line 84) | def format_time(seconds: float) -> str: function format_ops (line 96) | def format_ops(ops: float) -> str: function calculate_change_percentage (line 104) | def calculate_change_percentage(old_value: float, new_value: float) -> T... function generate_benchmark_table (line 119) | def generate_benchmark_table(benchmarks: List[Dict[str, Any]], title: st... function generate_comparison_table (line 146) | def generate_comparison_table(current_data: Dict, base_data: Dict, curre... function generate_report (line 299) | def generate_report(current_data: Dict, base_data: Dict, current_branch:... function main (line 354) | def main(): FILE: bbot/scripts/docs.py function gen_chord_data (line 26) | def gen_chord_data(): function homedir_collapseuser (line 94) | def homedir_collapseuser(f): function enclose_tags (line 102) | def enclose_tags(text): function find_replace_markdown (line 108) | def find_replace_markdown(content, keyword, replace): function find_replace_file (line 123) | def find_replace_file(file, keyword, replace): function update_docs (line 133) | def update_docs(): FILE: bbot/test/bbot_fixtures.py function tempwordlist (line 35) | def tempwordlist(content): function tempapkfile (line 44) | def tempapkfile(): function clean_default_config (line 52) | def clean_default_config(monkeypatch): class SubstringRequestMatcher (line 61) | class SubstringRequestMatcher(pytest_httpserver.httpserver.RequestMatcher): method match_data (line 62) | def match_data(self, request: Request) -> bool: function bbot_scanner (line 78) | def bbot_scanner(): function scan (line 85) | def scan(): function helpers (line 96) | def helpers(scan): function events (line 148) | def events(scan): FILE: bbot/test/benchmarks/test_bloom_filter_benchmarks.py class TestBloomFilterBenchmarks (line 7) | class TestBloomFilterBenchmarks: method setup_method (line 15) | def setup_method(self): method _generate_random_strings (line 23) | def _generate_random_strings(self, n, length=10): method test_bloom_filter_dns_mutation_tracking_performance (line 30) | def test_bloom_filter_dns_mutation_tracking_performance(self, benchmark): method test_bloom_filter_large_scale_dns_brute_force (line 67) | def test_bloom_filter_large_scale_dns_brute_force(self, benchmark): FILE: bbot/test/benchmarks/test_closest_match_benchmarks.py class TestClosestMatchBenchmarks (line 6) | class TestClosestMatchBenchmarks: method setup_method (line 15) | def setup_method(self): method _generate_large_closest_match_choices (line 24) | def _generate_large_closest_match_choices(self): method _generate_realistic_closest_match_choices (line 34) | def _generate_realistic_closest_match_choices(self): method test_large_closest_match_lookup (line 59) | def test_large_closest_match_lookup(self, benchmark): method test_realistic_closest_match_workload (line 69) | def test_realistic_closest_match_workload(self, benchmark): FILE: bbot/test/benchmarks/test_event_validation_benchmarks.py class TestEventValidationBenchmarks (line 8) | class TestEventValidationBenchmarks: method setup_method (line 9) | def setup_method(self): method _generate_diverse_targets (line 22) | def _generate_diverse_targets(self, count=1000): method _generate_diverse_event_data (line 138) | def _generate_diverse_event_data(self, count=1000): method test_event_validation_full_scan_startup_small_batch (line 257) | def test_event_validation_full_scan_startup_small_batch(self, benchmark): method test_event_validation_full_scan_startup_large_batch (line 284) | def test_event_validation_full_scan_startup_large_batch(self, benchmark): method test_make_event_autodetection_small (line 331) | def test_make_event_autodetection_small(self, benchmark): method test_make_event_autodetection_large (line 366) | def test_make_event_autodetection_large(self, benchmark): method test_make_event_explicit_types (line 407) | def test_make_event_explicit_types(self, benchmark): FILE: bbot/test/benchmarks/test_excavate_benchmarks.py class TestExcavateDirectBenchmarks (line 6) | class TestExcavateDirectBenchmarks: method _generate_text_segments (line 22) | def _generate_text_segments(self, target_size, count): method _generate_realistic_content (line 45) | def _generate_realistic_content(self, index): method _run_excavate_single_thread (line 99) | async def _run_excavate_single_thread(self, text_segments): method _run_excavate_parallel_tasks (line 140) | async def _run_excavate_parallel_tasks(self, text_segments): method test_excavate_single_thread_small (line 179) | def test_excavate_single_thread_small(self, benchmark): method test_excavate_single_thread_large (line 216) | def test_excavate_single_thread_large(self, benchmark): method test_excavate_parallel_tasks_small (line 254) | def test_excavate_parallel_tasks_small(self, benchmark): method test_excavate_parallel_tasks_large (line 274) | def test_excavate_parallel_tasks_large(self, benchmark): FILE: bbot/test/benchmarks/test_ipaddress_benchmarks.py class TestIPAddressBenchmarks (line 7) | class TestIPAddressBenchmarks: method setup_method (line 16) | def setup_method(self): method _generate_valid_ips (line 26) | def _generate_valid_ips(self): method _generate_invalid_ips (line 58) | def _generate_invalid_ips(self): method _generate_mixed_data (line 86) | def _generate_mixed_data(self): method test_is_ip_performance (line 97) | def test_is_ip_performance(self, benchmark): method test_make_ip_type_performance (line 111) | def test_make_ip_type_performance(self, benchmark): method test_mixed_ip_operations (line 128) | def test_mixed_ip_operations(self, benchmark): FILE: bbot/test/benchmarks/test_weighted_shuffle_benchmarks.py class TestWeightedShuffleBenchmarks (line 6) | class TestWeightedShuffleBenchmarks: method setup_method (line 15) | def setup_method(self): method _generate_small_dataset (line 26) | def _generate_small_dataset(self): method _generate_medium_dataset (line 30) | def _generate_medium_dataset(self): method _generate_large_dataset (line 36) | def _generate_large_dataset(self): method _generate_priority_weights (line 42) | def _generate_priority_weights(self): method test_typical_queue_shuffle (line 51) | def test_typical_queue_shuffle(self, benchmark): method test_priority_queue_shuffle (line 62) | def test_priority_queue_shuffle(self, benchmark): FILE: bbot/test/conftest.py function assert_all_responses_were_requested (line 46) | def assert_all_responses_were_requested() -> bool: function silence_live_logging (line 51) | def silence_live_logging(): function stop_server (line 57) | def stop_server(server): function bbot_httpserver (line 64) | def bbot_httpserver(): function bbot_httpserver_ssl (line 78) | def bbot_httpserver_ssl(): function should_mock (line 96) | def should_mock(request): function pytest_collection_modifyitems (line 100) | def pytest_collection_modifyitems(config, items): function bbot_httpserver_allinterfaces (line 114) | def bbot_httpserver_allinterfaces(): class Interactsh_mock (line 127) | class Interactsh_mock: method __init__ (line 128) | def __init__(self, name): method mock_interaction (line 136) | def mock_interaction(self, subdomain_tag, msg=None): method register (line 142) | async def register(self, callback=None): method deregister (line 147) | async def deregister(self, callback=None): method poll_loop (line 155) | async def poll_loop(self, callback=None): method poll (line 164) | async def poll(self, callback=None): class Proxy (line 183) | class Proxy(http.server.SimpleHTTPRequestHandler): method do_GET (line 188) | def do_GET(self): function proxy_server (line 212) | def proxy_server(): function pytest_terminal_summary (line 227) | def pytest_terminal_summary(terminalreporter, exitstatus, config): # pr... function _print_detailed_info (line 263) | def _print_detailed_info(): # pragma: no cover function pytest_sessionfinish (line 335) | def pytest_sessionfinish(session, exitstatus): FILE: bbot/test/fastapi_test.py function start (line 9) | async def start(targets: List[str] = Query(...)): function ping (line 16) | async def ping(): FILE: bbot/test/test_step_1/test__module__tests.py function test__module__tests (line 17) | def test__module__tests(): FILE: bbot/test/test_step_1/test_bbot_fastapi.py function run_bbot_multiprocess (line 11) | def run_bbot_multiprocess(queue): function test_bbot_multiprocess (line 19) | def test_bbot_multiprocess(bbot_httpserver): function test_bbot_fastapi (line 33) | def test_bbot_fastapi(bbot_httpserver): function start_fastapi_server (line 68) | def start_fastapi_server(): FILE: bbot/test/test_step_1/test_bloom_filter.py function test_bloom_filter (line 8) | async def test_bloom_filter(): FILE: bbot/test/test_step_1/test_cli.py function test_cli_scope (line 9) | async def test_cli_scope(monkeypatch, capsys): function test_cli_scan (line 89) | async def test_cli_scan(monkeypatch): function test_cli_args (line 139) | async def test_cli_args(monkeypatch, caplog, capsys, clean_default_config): function test_cli_customheaders (line 427) | async def test_cli_customheaders(monkeypatch, caplog, capsys): function test_cli_module_help (line 463) | async def test_cli_module_help(monkeypatch, capsys): function test_cli_config_validation (line 476) | def test_cli_config_validation(monkeypatch, caplog): function test_cli_module_validation (line 497) | def test_cli_module_validation(monkeypatch, caplog): function test_cli_presets (line 621) | def test_cli_presets(monkeypatch, capsys, caplog): FILE: bbot/test/test_step_1/test_command.py function test_command (line 7) | async def test_command(bbot_scanner): FILE: bbot/test/test_step_1/test_config.py function test_config (line 5) | async def test_config(bbot_scanner): FILE: bbot/test/test_step_1/test_depsinstaller.py function test_depsinstaller (line 5) | async def test_depsinstaller(monkeypatch, bbot_scanner): FILE: bbot/test/test_step_1/test_dns.py function test_dns_engine (line 19) | async def test_dns_engine(bbot_scanner): function test_dns_resolution (line 66) | async def test_dns_resolution(bbot_scanner): function test_wildcards (line 187) | async def test_wildcards(bbot_scanner): function test_wildcard_deduplication (line 635) | async def test_wildcard_deduplication(bbot_scanner): function test_dns_raw_records (line 670) | async def test_dns_raw_records(bbot_scanner): function test_dns_graph_structure (line 752) | async def test_dns_graph_structure(bbot_scanner): function test_hostname_extraction (line 780) | async def test_hostname_extraction(bbot_scanner): function test_dns_helpers (line 813) | async def test_dns_helpers(bbot_scanner): FILE: bbot/test/test_step_1/test_docs.py function test_docs (line 1) | def test_docs(): FILE: bbot/test/test_step_1/test_engine.py function test_engine (line 5) | async def test_engine(): FILE: bbot/test/test_step_1/test_event_seeds.py function test_event_seeds (line 7) | def test_event_seeds(): FILE: bbot/test/test_step_1/test_events.py function test_events (line 11) | async def test_events(events, helpers): function test_event_discovery_context (line 634) | async def test_event_discovery_context(): function test_event_web_spider_distance (line 809) | async def test_event_web_spider_distance(bbot_scanner): function test_event_confidence (line 900) | def test_event_confidence(): function test_event_closest_host (line 935) | def test_event_closest_host(): function test_event_magic (line 989) | def test_event_magic(): function test_mobile_app (line 1031) | async def test_mobile_app(): function test_filesystem (line 1059) | async def test_filesystem(): function test_event_hashing (line 1069) | def test_event_hashing(): FILE: bbot/test/test_step_1/test_files.py function test_files (line 7) | async def test_files(bbot_scanner): FILE: bbot/test/test_step_1/test_helpers.py function test_helpers_misc (line 9) | async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver): function test_word_cloud (line 647) | async def test_word_cloud(helpers, bbot_scanner): function test_names (line 749) | def test_names(helpers): function test_ratelimiter (line 755) | async def test_ratelimiter(helpers): function test_sync_to_async (line 778) | def test_sync_to_async(): function test_async_helpers (line 799) | async def test_async_helpers(): function test_portparse (line 816) | def test_portparse(helpers): function test_liststring_valid_strings (line 846) | def test_liststring_valid_strings(helpers): function test_liststring_invalid_string (line 850) | def test_liststring_invalid_string(helpers): function test_liststring_singleitem (line 856) | def test_liststring_singleitem(helpers): function test_liststring_invalidfnchars (line 860) | def test_liststring_invalidfnchars(helpers): function test_parameter_validation (line 868) | async def test_parameter_validation(helpers): function test_rm_temp_dir_at_exit (line 962) | async def test_rm_temp_dir_at_exit(helpers): FILE: bbot/test/test_step_1/test_manager_deduplication.py function test_manager_deduplication (line 6) | async def test_manager_deduplication(bbot_scanner): FILE: bbot/test/test_step_1/test_manager_scope_accuracy.py function bbot_other_httpservers (line 18) | def bbot_other_httpservers(): function test_manager_scope_accuracy (line 45) | async def test_manager_scope_accuracy(bbot_scanner, bbot_httpserver, bbo... function test_manager_blacklist (line 801) | async def test_manager_blacklist(bbot_scanner, bbot_httpserver, caplog): function test_manager_scope_tagging (line 828) | async def test_manager_scope_tagging(bbot_scanner): function test_scope_accuracy_with_special_urls (line 854) | async def test_scope_accuracy_with_special_urls(bbot_scanner, bbot_https... FILE: bbot/test/test_step_1/test_modules_basic.py function test_modules_basic_checks (line 12) | async def test_modules_basic_checks(events, httpx_mock): function test_modules_basic_perhostonly (line 214) | async def test_modules_basic_perhostonly(bbot_scanner): function test_modules_basic_perdomainonly (line 303) | async def test_modules_basic_perdomainonly(bbot_scanner, monkeypatch): function test_modules_basic_setup_deps (line 346) | async def test_modules_basic_setup_deps(bbot_scanner): function test_modules_basic_stats (line 371) | async def test_modules_basic_stats(helpers, events, bbot_scanner, httpx_... function test_module_loading (line 469) | async def test_module_loading(bbot_scanner): FILE: bbot/test/test_step_1/test_presets.py function test_preset_descriptions (line 16) | def test_preset_descriptions(): function test_core (line 25) | def test_core(): function test_preset_yaml (line 70) | def test_preset_yaml(clean_default_config): function test_preset_cache (line 148) | def test_preset_cache(): function test_preset_scope (line 172) | def test_preset_scope(): function test_preset_logging (line 378) | async def test_preset_logging(): function test_preset_module_resolution (line 478) | def test_preset_module_resolution(clean_default_config): function test_preset_module_loader (line 572) | async def test_preset_module_loader(): function test_preset_include (line 718) | def test_preset_include(): function test_preset_conditions (line 823) | async def test_preset_conditions(): function test_preset_module_disablement (line 865) | def test_preset_module_disablement(clean_default_config): function test_preset_override (line 889) | def test_preset_override(): function test_preset_require_exclude (line 971) | def test_preset_require_exclude(): function test_preset_output_dir (line 1062) | async def test_preset_output_dir(): function test_preset_serialization (line 1081) | def test_preset_serialization(): FILE: bbot/test/test_step_1/test_python_api.py function test_python_api (line 5) | async def test_python_api(): function test_python_api_sync (line 64) | def test_python_api_sync(): function test_python_api_validation (line 84) | def test_python_api_validation(): FILE: bbot/test/test_step_1/test_regexes.py function test_ip_regexes (line 10) | def test_ip_regexes(): function test_ip_range_regexes (line 116) | def test_ip_range_regexes(): function test_dns_name_regexes (line 164) | def test_dns_name_regexes(): function test_open_port_regexes (line 224) | def test_open_port_regexes(): function test_url_regexes (line 285) | def test_url_regexes(): function test_regex_helper (line 353) | async def test_regex_helper(): FILE: bbot/test/test_step_1/test_scan.py function test_scan (line 7) | async def test_scan( function test_task_scan_handle_event_timeout (line 92) | async def test_task_scan_handle_event_timeout(bbot_scanner): function test_url_extension_handling (line 148) | async def test_url_extension_handling(bbot_scanner): function test_speed_counter (line 166) | async def test_speed_counter(): function test_python_output_matches_json (line 180) | async def test_python_output_matches_json(bbot_scanner): function test_huge_target_list (line 205) | async def test_huge_target_list(bbot_scanner, monkeypatch): function test_exclude_cdn (line 223) | async def test_exclude_cdn(bbot_scanner, monkeypatch): function test_scan_name (line 282) | async def test_scan_name(bbot_scanner): FILE: bbot/test/test_step_1/test_scope.py class TestScopeBaseline (line 5) | class TestScopeBaseline(ModuleTestBase): method setup_after_prep (line 9) | async def setup_after_prep(self, module_test): method check (line 14) | def check(self, module_test, events): class TestScopeBlacklist (line 57) | class TestScopeBlacklist(TestScopeBaseline): method setup_after_prep (line 60) | async def setup_after_prep(self, module_test): method check (line 65) | def check(self, module_test, events): class TestScopeWhitelist (line 71) | class TestScopeWhitelist(TestScopeBlacklist): method check (line 75) | def check(self, module_test, events): FILE: bbot/test/test_step_1/test_target.py function test_target_basic (line 5) | async def test_target_basic(bbot_scanner): function test_blacklist_regex (line 350) | async def test_blacklist_regex(bbot_scanner, bbot_httpserver): FILE: bbot/test/test_step_1/test_web.py function test_web_engine (line 8) | async def test_web_engine(bbot_scanner, bbot_httpserver, httpx_mock): function test_request_batch_cancellation (line 97) | async def test_request_batch_cancellation(bbot_scanner, bbot_httpserver,... function test_web_helpers (line 135) | async def test_web_helpers(bbot_scanner, bbot_httpserver, httpx_mock): function test_web_interactsh (line 282) | async def test_web_interactsh(bbot_scanner, bbot_httpserver): function test_web_curl (line 345) | async def test_web_curl(bbot_scanner, bbot_httpserver): function test_web_http_compare (line 380) | async def test_web_http_compare(httpx_mock, bbot_scanner): function test_http_proxy (line 396) | async def test_http_proxy(bbot_scanner, bbot_httpserver, proxy_server): function test_http_ssl (line 421) | async def test_http_ssl(bbot_scanner, bbot_httpserver_ssl): function test_web_cookies (line 441) | async def test_web_cookies(bbot_scanner, httpx_mock): function test_http_sendcookies (line 484) | async def test_http_sendcookies(bbot_scanner, bbot_httpserver): function test_api_download_api_key_cycle (line 504) | async def test_api_download_api_key_cycle(bbot_scanner, bbot_httpserver): FILE: bbot/test/test_step_1/test_web_envelopes.py function test_web_envelopes (line 4) | async def test_web_envelopes(): function test_web_envelope_pack_value (line 346) | async def test_web_envelope_pack_value(): FILE: bbot/test/test_step_2/module_tests/base.py class ModuleTestBase (line 14) | class ModuleTestBase: class ModuleTest (line 26) | class ModuleTest: method __init__ (line 27) | def __init__( method set_expect_requests (line 69) | def set_expect_requests(self, expect_args={}, respond_args={}): method set_expect_requests_handler (line 74) | def set_expect_requests_handler(self, expect_args=None, request_hand... method mock_dns (line 77) | async def mock_dns(self, mock_data, custom_lookup_fn=None, scan=None): method mock_interactsh (line 82) | def mock_interactsh(self, name): method module (line 88) | def module(self): method module_test (line 92) | async def module_test( method _execute_scan (line 116) | async def _execute_scan(self, module_test): method test_module_run (line 121) | async def test_module_run(self, module_test): method check (line 133) | def check(self, module_test, events): method name (line 137) | def name(self): method _scan_name (line 143) | def _scan_name(self): method modules (line 151) | def modules(self): method setup_before_prep (line 156) | async def setup_before_prep(self, module_test): method setup_after_prep (line 159) | async def setup_after_prep(self, module_test): FILE: bbot/test/test_step_2/module_tests/test_module_affiliates.py class TestAffiliates (line 4) | class TestAffiliates(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 17) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_aggregate.py class TestAggregate (line 4) | class TestAggregate(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 10) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ajaxpro.py class TestAjaxpro (line 4) | class TestAjaxpro(ModuleTestBase): method setup_before_prep (line 12) | async def setup_before_prep(self, module_test): method check (line 32) | def check(self, module_test, events): class TestAjaxpro_httpdetect (line 52) | class TestAjaxpro_httpdetect(TestAjaxpro): method setup_before_prep (line 65) | async def setup_before_prep(self, module_test): method check (line 71) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_anubisdb.py class TestAnubisdb (line 4) | class TestAnubisdb(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 12) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_apkpure.py class TestAPKPure (line 6) | class TestAPKPure(ModuleTestBase): method setup_after_prep (line 11) | async def setup_after_prep(self, module_test): method check (line 48) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_asn.py class TestASNBGPView (line 4) | class TestASNBGPView(ModuleTestBase): method setup_after_prep (line 78) | async def setup_after_prep(self, module_test): method check (line 87) | def check(self, module_test, events): class TestASNRipe (line 92) | class TestASNRipe(ModuleTestBase): method setup_after_prep (line 226) | async def setup_after_prep(self, module_test): method check (line 237) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_aspnet_bin_exposure.py class TestAspnetBinExposure (line 5) | class TestAspnetBinExposure(ModuleTestBase): method setup_before_prep (line 18) | async def setup_before_prep(self, module_test): method check (line 64) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_asset_inventory.py class TestAsset_Inventory (line 4) | class TestAsset_Inventory(ModuleTestBase): method setup_before_prep (line 12) | async def setup_before_prep(self, module_test): method check (line 34) | def check(self, module_test, events): class TestAsset_InventoryEmitPrevious (line 50) | class TestAsset_InventoryEmitPrevious(TestAsset_Inventory): method check (line 54) | def check(self, module_test, events): class TestAsset_InventoryRecheck (line 70) | class TestAsset_InventoryRecheck(TestAsset_Inventory): method check (line 77) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_azure_realm.py class TestAzure_Realm (line 4) | class TestAzure_Realm(ModuleTestBase): method setup_after_prep (line 22) | async def setup_after_prep(self, module_test): method check (line 29) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_azure_tenant.py class TestAzure_Tenant (line 4) | class TestAzure_Tenant(ModuleTestBase): method setup_after_prep (line 17) | async def setup_after_prep(self, module_test): method check (line 23) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_baddns.py class BaseTestBaddns (line 4) | class BaseTestBaddns(ModuleTestBase): method dispatchWHOIS (line 9) | async def dispatchWHOIS(x): method select_modules (line 12) | def select_modules(self): class TestBaddns_cname_nxdomain (line 22) | class TestBaddns_cname_nxdomain(BaseTestBaddns): method setup_after_prep (line 23) | async def setup_after_prep(self, module_test): method check (line 33) | def check(self, module_test, events): class TestBaddns_cname_signature (line 39) | class TestBaddns_cname_signature(BaseTestBaddns): method setup_after_prep (line 43) | async def setup_after_prep(self, module_test): method check (line 62) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_baddns_direct.py class BaseTestBaddns (line 5) | class BaseTestBaddns(ModuleTestBase): class TestBaddns_direct_cloudflare (line 11) | class TestBaddns_direct_cloudflare(BaseTestBaddns): method dispatchWHOIS (line 15) | async def dispatchWHOIS(self): class DummyModule (line 18) | class DummyModule(BaseModule): method handle_event (line 23) | async def handle_event(self, event): method setup_after_prep (line 34) | async def setup_after_prep(self, module_test): method check (line 55) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_baddns_zone.py class BaseTestBaddns_zone (line 5) | class BaseTestBaddns_zone(ModuleTestBase): method dispatchWHOIS (line 10) | async def dispatchWHOIS(x): class TestBaddns_zone_zonetransfer (line 14) | class TestBaddns_zone_zonetransfer(BaseTestBaddns_zone): method setup_after_prep (line 15) | async def setup_after_prep(self, module_test): method check (line 38) | def check(self, module_test, events): class TestBaddns_zone_nsec (line 45) | class TestBaddns_zone_nsec(BaseTestBaddns_zone): method setup_after_prep (line 46) | async def setup_after_prep(self, module_test): method check (line 58) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_badsecrets.py class TestBadSecrets (line 4) | class TestBadSecrets(ModuleTestBase): method setup_after_prep (line 35) | async def setup_after_prep(self, module_test): method check (line 73) | def check(self, module_test, events): class TestBadSecrets_customsecrets (line 126) | class TestBadSecrets_customsecrets(TestBadSecrets): method check (line 155) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_bevigil.py class TestBeVigil (line 6) | class TestBeVigil(ModuleTestBase): method setup_after_prep (line 10) | async def setup_after_prep(self, module_test): method check (line 26) | def check(self, module_test, events): class TestBeVigilMultiKey (line 31) | class TestBeVigilMultiKey(TestBeVigil): method setup_after_prep (line 36) | async def setup_after_prep(self, module_test): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py class Bucket_Amazon_Base (line 16) | class Bucket_Amazon_Base(ModuleTestBase): method config_overrides (line 30) | def config_overrides(self): method module_name (line 34) | def module_name(self): method modules_overrides (line 38) | def modules_overrides(self): method url_setup (line 41) | def url_setup(self): method bucket_setup (line 46) | def bucket_setup(self): method setup_after_prep (line 53) | async def setup_after_prep(self, module_test): method check (line 74) | def check(self, module_test, events): class TestBucket_Amazon (line 130) | class TestBucket_Amazon(Bucket_Amazon_Base): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py class TestBucket_DigitalOcean (line 4) | class TestBucket_DigitalOcean(Bucket_Amazon_Base): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py class TestBucket_File_Enum (line 5) | class TestBucket_File_Enum(ModuleTestBase): method setup_before_prep (line 24) | async def setup_before_prep(self, module_test): method check (line 40) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py class TestBucket_Firebase (line 4) | class TestBucket_Firebase(Bucket_Amazon_Base): method url_setup (line 10) | def url_setup(self): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_google.py class TestBucket_Google (line 4) | class TestBucket_Google(Bucket_Amazon_Base): method bucket_setup (line 17) | def bucket_setup(self): method url_setup (line 24) | def url_setup(self): FILE: bbot/test/test_step_2/module_tests/test_module_bucket_microsoft.py class TestBucket_Microsoft (line 5) | class TestBucket_Microsoft(Bucket_Amazon_Base): method url_setup (line 13) | def url_setup(self): class TestBucket_Microsoft_NoDup (line 19) | class TestBucket_Microsoft_NoDup(ModuleTestBase): method setup_before_prep (line 24) | async def setup_before_prep(self, module_test): method check (line 36) | def check(self, module_test, events): method setup_after_prep (line 52) | async def setup_after_prep(self, module_test): method check (line 57) | def check(self, module_test, events): class TestBucket_Microsoft_NoDup (line 47) | class TestBucket_Microsoft_NoDup(TestBucket_Microsoft_NoDup): method setup_before_prep (line 24) | async def setup_before_prep(self, module_test): method check (line 36) | def check(self, module_test, events): method setup_after_prep (line 52) | async def setup_after_prep(self, module_test): method check (line 57) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py class TestBufferOverrun (line 4) | class TestBufferOverrun(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 15) | def check(self, module_test, events): class TestBufferOverrunCommercial (line 19) | class TestBufferOverrunCommercial(ModuleTestBase): method setup_before_prep (line 24) | async def setup_before_prep(self, module_test): method check (line 32) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_builtwith.py class TestBuiltWith (line 4) | class TestBuiltWith(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 108) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_bypass403.py class TestBypass403 (line 5) | class TestBypass403(ModuleTestBase): method setup_after_prep (line 9) | async def setup_after_prep(self, module_test): method check (line 15) | def check(self, module_test, events): class TestBypass403_collapsethreshold (line 22) | class TestBypass403_collapsethreshold(ModuleTestBase): method setup_after_prep (line 26) | async def setup_after_prep(self, module_test): method check (line 66) | def check(self, module_test, events): class TestBypass403_aspnetcookieless (line 73) | class TestBypass403_aspnetcookieless(ModuleTestBase): method setup_after_prep (line 77) | async def setup_after_prep(self, module_test): method check (line 83) | def check(self, module_test, events): class TestBypass403_waf (line 89) | class TestBypass403_waf(ModuleTestBase): method setup_after_prep (line 93) | async def setup_after_prep(self, module_test): method check (line 99) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_c99.py class TestC99 (line 6) | class TestC99(ModuleTestBase): method setup_before_prep (line 10) | async def setup_before_prep(self, module_test): method check (line 27) | def check(self, module_test, events): class TestC99AbortThreshold1 (line 31) | class TestC99AbortThreshold1(TestC99): method setup_before_prep (line 34) | async def setup_before_prep(self, module_test): method check (line 52) | def check(self, module_test, events): class TestC99AbortThreshold2 (line 69) | class TestC99AbortThreshold2(TestC99AbortThreshold1): method setup_before_prep (line 72) | async def setup_before_prep(self, module_test): method check (line 83) | def check(self, module_test, events): class TestC99AbortThreshold3 (line 104) | class TestC99AbortThreshold3(TestC99AbortThreshold2): method check (line 107) | def check(self, module_test, events): class TestC99AbortThreshold4 (line 136) | class TestC99AbortThreshold4(TestC99AbortThreshold3): method check (line 139) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_censys_dns.py class TestCensys_DNS (line 4) | class TestCensys_DNS(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 80) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_censys_ip.py class TestCensys_IP (line 4) | class TestCensys_IP(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 138) | def check(self, module_test, events): class TestCensys_IP_InScopeOnly (line 221) | class TestCensys_IP_InScopeOnly(ModuleTestBase): method setup_before_prep (line 228) | async def setup_before_prep(self, module_test): method check (line 251) | def check(self, module_test, events): class TestCensys_IP_OutOfScope (line 258) | class TestCensys_IP_OutOfScope(ModuleTestBase): method setup_before_prep (line 269) | async def setup_before_prep(self, module_test): method check (line 292) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_certspotter.py class TestCertspotter (line 4) | class TestCertspotter(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 13) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_chaos.py class TestChaos (line 4) | class TestChaos(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 24) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_cloudcheck.py class TestCloudCheck (line 6) | class TestCloudCheck(ModuleTestBase): method setup_after_prep (line 10) | async def setup_after_prep(self, module_test): method check (line 63) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_code_repository.py class TestCodeRepository (line 4) | class TestCodeRepository(ModuleTestBase): method setup_after_prep (line 8) | async def setup_after_prep(self, module_test): method check (line 23) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_credshed.py class TestCredshed (line 54) | class TestCredshed(ModuleTestBase): method setup_before_prep (line 59) | async def setup_before_prep(self, module_test): method check (line 71) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_crt.py class TestCRT (line 4) | class TestCRT(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 13) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_crt_db.py class TestCRT_DB (line 4) | class TestCRT_DB(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 21) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_csv.py class TestCSV (line 4) | class TestCSV(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 8) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dehashed.py class TestDehashed (line 4) | class TestDehashed(ModuleTestBase): method setup_before_prep (line 11) | async def setup_before_prep(self, module_test): method check (line 50) | def check(self, module_test, events): class TestDehashedBadEmail (line 97) | class TestDehashedBadEmail(TestDehashed): method setup_before_prep (line 98) | async def setup_before_prep(self, module_test): method check (line 116) | def check(self, module_test, events): class TestDehashedHTTPError (line 121) | class TestDehashedHTTPError(TestDehashed): method setup_before_prep (line 122) | async def setup_before_prep(self, module_test): method check (line 130) | def check(self, module_test, events): class TestDehashedTooManyResults (line 138) | class TestDehashedTooManyResults(TestDehashed): method setup_before_prep (line 139) | async def setup_before_prep(self, module_test): method check (line 157) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_digitorus.py class TestDigitorus (line 4) | class TestDigitorus(ModuleTestBase): method setup_after_prep (line 12) | async def setup_after_prep(self, module_test): method check (line 18) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_discord.py class TestDiscord (line 6) | class TestDiscord(ModuleTestBase): method custom_setup (line 13) | def custom_setup(self, module_test): method setup_after_prep (line 24) | async def setup_after_prep(self, module_test): method check (line 36) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnsbimi.py class TestDnsbimi (line 9) | class TestDnsbimi(ModuleTestBase): method setup_after_prep (line 17) | async def setup_after_prep(self, module_test): method check (line 56) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnsbrute.py class TestDnsbrute (line 4) | class TestDnsbrute(ModuleTestBase): method setup_after_prep (line 9) | async def setup_after_prep(self, module_test): method check (line 93) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py class TestDnsbrute_mutations (line 4) | class TestDnsbrute_mutations(ModuleTestBase): method setup_after_prep (line 13) | async def setup_after_prep(self, module_test): method check (line 48) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnscaa.py class TestDNSCAA (line 4) | class TestDNSCAA(ModuleTestBase): method setup_after_prep (line 13) | async def setup_after_prep(self, module_test): method check (line 41) | def check(self, module_test, events): class TestDNSCAAInScopeFalse (line 58) | class TestDNSCAAInScopeFalse(TestDNSCAA): method check (line 61) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py class TestDNSCommonSRV (line 4) | class TestDNSCommonSRV(ModuleTestBase): method setup_after_prep (line 10) | async def setup_after_prep(self, module_test): method check (line 57) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py class TestDNSDumpster (line 4) | class TestDNSDumpster(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 15) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnsresolve.py class TestDNSREsolve (line 4) | class TestDNSREsolve(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 19) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py class TestDNSTLSRPT (line 6) | class TestDNSTLSRPT(ModuleTestBase): method setup_after_prep (line 11) | async def setup_after_prep(self, module_test): method check (line 36) | def check(self, module_test, events): class TestDNSTLSRPTRecursiveRecursion (line 54) | class TestDNSTLSRPTRecursiveRecursion(TestDNSTLSRPT): method check (line 60) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_docker_pull.py class TestDockerPull (line 9) | class TestDockerPull(ModuleTestBase): method setup_before_prep (line 13) | async def setup_before_prep(self, module_test): method check (line 434) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dockerhub.py class TestDockerhub (line 4) | class TestDockerhub(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 69) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py class TestDotnetnuke (line 19) | class TestDotnetnuke(ModuleTestBase): method setup_before_prep (line 49) | async def setup_before_prep(self, module_test): method check (line 87) | def check(self, module_test, events): function extract_subdomain_tag (line 129) | def extract_subdomain_tag(data): class TestDotnetnuke_blindssrf (line 136) | class TestDotnetnuke_blindssrf(ModuleTestBase): method request_handler (line 141) | def request_handler(self, request): method setup_before_prep (line 148) | async def setup_before_prep(self, module_test): method setup_after_prep (line 154) | async def setup_after_prep(self, module_test): method check (line 163) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_emailformat.py class TestEmailFormat (line 4) | class TestEmailFormat(ModuleTestBase): method setup_before_prep (line 5) | async def setup_before_prep(self, module_test): method check (line 11) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_emails.py class TestEmails (line 4) | class TestEmails(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 17) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_excavate.py class TestExcavate (line 11) | class TestExcavate(ModuleTestBase): method setup_before_prep (line 16) | async def setup_before_prep(self, module_test): method setup_after_prep (line 51) | async def setup_after_prep(self, module_test): method check (line 66) | def check(self, module_test, events): class TestExcavate2 (line 135) | class TestExcavate2(TestExcavate): method setup_before_prep (line 138) | async def setup_before_prep(self, module_test): method check (line 161) | def check(self, module_test, events): class TestExcavateInScopeJavascript (line 191) | class TestExcavateInScopeJavascript(TestExcavate): method setup_before_prep (line 195) | async def setup_before_prep(self, module_test): method check (line 203) | def check(self, module_test, events): class TestExcavateRedirect (line 223) | class TestExcavateRedirect(TestExcavate): method setup_before_prep (line 227) | async def setup_before_prep(self, module_test): method check (line 243) | def check(self, module_test, events): class TestExcavateQuerystringRemoveTrue (line 290) | class TestExcavateQuerystringRemoveTrue(TestExcavate): method setup_before_prep (line 306) | async def setup_before_prep(self, module_test): method check (line 309) | def check(self, module_test, events): class TestExcavateQuerystringRemoveFalse (line 316) | class TestExcavateQuerystringRemoveFalse(TestExcavateQuerystringRemoveTr... method check (line 319) | def check(self, module_test, events): class TestExcavateQuerystringCollapseFalse (line 332) | class TestExcavateQuerystringCollapseFalse(TestExcavateQuerystringRemove... method check (line 335) | def check(self, module_test, events): class TestExcavateMaxLinksPerPage (line 348) | class TestExcavateMaxLinksPerPage(TestExcavate): method setup_before_prep (line 380) | async def setup_before_prep(self, module_test): method check (line 383) | def check(self, module_test, events): class TestExcavateCSP (line 393) | class TestExcavateCSP(TestExcavate): method setup_before_prep (line 396) | async def setup_before_prep(self, module_test): method check (line 401) | def check(self, module_test, events): class TestExcavateURL (line 405) | class TestExcavateURL(TestExcavate): method setup_before_prep (line 406) | async def setup_before_prep(self, module_test): method check (line 411) | def check(self, module_test, events): class TestExcavateURL_IP (line 416) | class TestExcavateURL_IP(TestExcavate): method setup_before_prep (line 419) | async def setup_before_prep(self, module_test): method check (line 422) | def check(self, module_test, events): class TestExcavateSerializationNegative (line 427) | class TestExcavateSerializationNegative(TestExcavate): method setup_before_prep (line 428) | async def setup_before_prep(self, module_test): method check (line 433) | def check(self, module_test, events): class TestExcavateSerializationPositive (line 437) | class TestExcavateSerializationPositive(TestExcavate): method setup_before_prep (line 438) | async def setup_before_prep(self, module_test): method check (line 457) | def check(self, module_test, events): class TestExcavateNonHttpScheme (line 464) | class TestExcavateNonHttpScheme(TestExcavate): method setup_before_prep (line 480) | async def setup_before_prep(self, module_test): method check (line 483) | def check(self, module_test, events): class TestExcavateParameterExtraction (line 501) | class TestExcavateParameterExtraction(TestExcavate): method setup_before_prep (line 550) | async def setup_before_prep(self, module_test): method check (line 553) | def check(self, module_test, events): class TestExcavateParameterExtraction_postform_noaction (line 646) | class TestExcavateParameterExtraction_postform_noaction(ModuleTestBase): method setup_after_prep (line 663) | async def setup_after_prep(self, module_test): method check (line 667) | def check(self, module_test, events): class TestExcavateParameterExtraction_postform_htmlencodedaction (line 676) | class TestExcavateParameterExtraction_postform_htmlencodedaction(TestExc... method check (line 700) | def check(self, module_test, events): class TestExcavateParameterExtraction_additionalparams (line 712) | class TestExcavateParameterExtraction_additionalparams(ModuleTestBase): method setup_after_prep (line 731) | async def setup_after_prep(self, module_test): method check (line 738) | def check(self, module_test, events): class TestExcavateParameterExtraction_getparam (line 773) | class TestExcavateParameterExtraction_getparam(ModuleTestBase): method setup_after_prep (line 782) | async def setup_after_prep(self, module_test): method check (line 786) | def check(self, module_test, events): class TestExcavateParameterExtraction_relativeurl (line 795) | class TestExcavateParameterExtraction_relativeurl(ModuleTestBase): method setup_after_prep (line 819) | async def setup_after_prep(self, module_test): method check (line 824) | def check(self, module_test, events): class TestExcavateParameterExtraction_getparam_novalue (line 841) | class TestExcavateParameterExtraction_getparam_novalue(TestExcavateParam... method check (line 856) | def check(self, module_test, events): class TestExcavateParameterExtraction_json (line 871) | class TestExcavateParameterExtraction_json(ModuleTestBase): method setup_after_prep (line 887) | async def setup_after_prep(self, module_test): method check (line 891) | def check(self, module_test, events): class TestExcavateParameterExtraction_xml (line 903) | class TestExcavateParameterExtraction_xml(ModuleTestBase): method setup_after_prep (line 919) | async def setup_after_prep(self, module_test): method check (line 923) | def check(self, module_test, events): class TestExcavateParameterExtraction_xml_invalid (line 935) | class TestExcavateParameterExtraction_xml_invalid(TestExcavateParameterE... method setup_after_prep (line 943) | async def setup_after_prep(self, module_test): method check (line 947) | def check(self, module_test, events): class TestExcavateParameterExtraction_inputtagnovalue (line 959) | class TestExcavateParameterExtraction_inputtagnovalue(ModuleTestBase): method setup_after_prep (line 968) | async def setup_after_prep(self, module_test): method check (line 972) | def check(self, module_test, events): class TestExcavateParameterExtraction_jqueryjsonajax (line 981) | class TestExcavateParameterExtraction_jqueryjsonajax(ModuleTestBase): method setup_after_prep (line 1012) | async def setup_after_prep(self, module_test): method check (line 1016) | def check(self, module_test, events): class excavateTestRule (line 1028) | class excavateTestRule(ExcavateRule): class TestExcavateYara (line 1035) | class TestExcavateYara(TestExcavate): method setup_before_prep (line 1049) | async def setup_before_prep(self, module_test): method setup_after_prep (line 1053) | async def setup_after_prep(self, module_test): method check (line 1068) | def check(self, module_test, events): class TestExcavateYaraCustom (line 1082) | class TestExcavateYaraCustom(TestExcavateYara): class TestExcavateSpiderDedupe (line 1091) | class TestExcavateSpiderDedupe(ModuleTestBase): class DummyModule (line 1092) | class DummyModule(BaseModule): method handle_event (line 1098) | async def handle_event(self, event): method setup_after_prep (line 1109) | async def setup_after_prep(self, module_test): method check (line 1115) | def check(self, module_test, events): class TestExcavateParameterExtraction_targeturl (line 1141) | class TestExcavateParameterExtraction_targeturl(ModuleTestBase): method setup_after_prep (line 1150) | async def setup_after_prep(self, module_test): method check (line 1158) | def check(self, module_test, events): class TestExcavate_retain_querystring (line 1167) | class TestExcavate_retain_querystring(ModuleTestBase): method setup_after_prep (line 1177) | async def setup_after_prep(self, module_test): method check (line 1186) | def check(self, module_test, events): class TestExcavate_retain_querystring_not (line 1195) | class TestExcavate_retain_querystring_not(TestExcavate_retain_querystring): method check (line 1203) | def check(self, module_test, events): class TestExcavate_webparameter_outofscope (line 1212) | class TestExcavate_webparameter_outofscope(ModuleTestBase): method setup_after_prep (line 1219) | async def setup_after_prep(self, module_test): method check (line 1227) | def check(self, module_test, events): class TestExcavateHeaders (line 1242) | class TestExcavateHeaders(ModuleTestBase): method setup_before_prep (line 1247) | async def setup_before_prep(self, module_test): method check (line 1259) | def check(self, module_test, events): class TestExcavateRAWTEXT (line 1274) | class TestExcavateRAWTEXT(ModuleTestBase): method setup_after_prep (line 1363) | async def setup_after_prep(self, module_test): method check (line 1373) | def check(self, module_test, events): class TestExcavateHeaders_blacklist (line 1420) | class TestExcavateHeaders_blacklist(ModuleTestBase): method setup_before_prep (line 1425) | async def setup_before_prep(self, module_test): method check (line 1438) | def check(self, module_test, events): class TestExcavateBadURLs (line 1457) | class TestExcavateBadURLs(ModuleTestBase): method setup_after_prep (line 1467) | async def setup_after_prep(self, module_test): method check (line 1470) | def check(self, module_test, events): class TestExcavateURL_InvalidPort (line 1482) | class TestExcavateURL_InvalidPort(TestExcavate): method setup_before_prep (line 1485) | async def setup_before_prep(self, module_test): method check (line 1491) | def check(self, module_test, events): class TestExcavateIgnorePDF (line 1496) | class TestExcavateIgnorePDF(ModuleTestBase): method setup_after_prep (line 1503) | async def setup_after_prep(self, module_test): method check (line 1509) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_extractous.py class TestExtractous (line 8) | class TestExtractous(ModuleTestBase): method setup_after_prep (line 34) | async def setup_after_prep(self, module_test): method check (line 51) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ffuf.py class TestFFUF (line 4) | class TestFFUF(ModuleTestBase): method setup_before_prep (line 16) | async def setup_before_prep(self, module_test): method check (line 25) | def check(self, module_test, events): class TestFFUF2 (line 30) | class TestFFUF2(TestFFUF): method setup_before_prep (line 34) | async def setup_before_prep(self, module_test): method check (line 43) | def check(self, module_test, events): class TestFFUF_ignorecase (line 48) | class TestFFUF_ignorecase(TestFFUF): method setup_before_prep (line 54) | async def setup_before_prep(self, module_test): method check (line 67) | def check(self, module_test, events): class TestFFUFHeaders (line 72) | class TestFFUFHeaders(TestFFUF): method setup_before_prep (line 79) | async def setup_before_prep(self, module_test): method check (line 88) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py class TestFFUFShortnames (line 4) | class TestFFUFShortnames(ModuleTestBase): method setup_after_prep (line 18) | async def setup_after_prep(self, module_test): method check (line 191) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_filedownload.py class TestFileDownload (line 6) | class TestFileDownload(ModuleTestBase): method setup_after_prep (line 20) | async def setup_after_prep(self, module_test): method check (line 46) | def check(self, module_test, events): class TestFileDownloadLongFilename (line 69) | class TestFileDownloadLongFilename(TestFileDownload): method setup_after_prep (line 70) | async def setup_after_prep(self, module_test): method check (line 86) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_fingerprintx.py class TestFingerprintx (line 4) | class TestFingerprintx(ModuleTestBase): method check (line 7) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_fullhunt.py class TestFullhunt (line 4) | class TestFullhunt(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 51) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py function extract_subdomain_tag (line 8) | def extract_subdomain_tag(data): class TestGeneric_SSRF (line 15) | class TestGeneric_SSRF(ModuleTestBase): method request_handler (line 19) | def request_handler(self, request): method setup_before_prep (line 35) | async def setup_before_prep(self, module_test): method setup_after_prep (line 41) | async def setup_after_prep(self, module_test): method check (line 45) | def check(self, module_test, events): class TestGeneric_SSRF_httponly (line 74) | class TestGeneric_SSRF_httponly(TestGeneric_SSRF): method check (line 77) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_git.py class TestGit (line 4) | class TestGit(ModuleTestBase): method setup_after_prep (line 19) | async def setup_after_prep(self, module_test): method check (line 31) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_git_clone.py class TestGit_Clone (line 12) | class TestGit_Clone(ModuleTestBase): method setup_before_prep (line 20) | async def setup_before_prep(self, module_test): method setup_after_prep (line 164) | async def setup_after_prep(self, module_test): method check (line 197) | def check(self, module_test, events): class TestGit_CloneWithBlob (line 217) | class TestGit_CloneWithBlob(TestGit_Clone): method check (line 220) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_gitdumper.py class TestGitDumper_Dirlisting (line 6) | class TestGitDumper_Dirlisting(ModuleTestBase): method setup_after_prep (line 234) | async def setup_after_prep(self, module_test): method check (line 325) | def check(self, module_test, events): class TestGitDumper_NoDirlisting (line 346) | class TestGitDumper_NoDirlisting(TestGitDumper_Dirlisting): method setup_after_prep (line 347) | async def setup_after_prep(self, module_test): FILE: bbot/test/test_step_2/module_tests/test_module_github_codesearch.py class TestGithub_Codesearch (line 4) | class TestGithub_Codesearch(ModuleTestBase): method setup_before_prep (line 36) | async def setup_before_prep(self, module_test): method setup_after_prep (line 70) | async def setup_after_prep(self, module_test): method check (line 73) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_github_org.py class TestGithub_Org (line 4) | class TestGithub_Org(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 292) | def check(self, module_test, events): class TestGithub_Org_No_Members (line 340) | class TestGithub_Org_No_Members(TestGithub_Org): method check (line 343) | def check(self, module_test, events): class TestGithub_Org_MemberRepos (line 368) | class TestGithub_Org_MemberRepos(TestGithub_Org): method check (line 371) | def check(self, module_test, events): class TestGithub_Org_Custom_Target (line 385) | class TestGithub_Org_Custom_Target(TestGithub_Org): method check (line 394) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_github_usersearch.py class TestGithub_Usersearch (line 4) | class TestGithub_Usersearch(ModuleTestBase): method setup_before_prep (line 45) | async def setup_before_prep(self, module_test): method check (line 93) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_github_workflows.py class TestGithub_Workflows (line 8) | class TestGithub_Workflows(ModuleTestBase): method setup_before_prep (line 20) | async def setup_before_prep(self, module_test): method check (line 488) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_gitlab_com.py class TestGitlab_Com (line 4) | class TestGitlab_Com(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 46) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_gitlab_onprem.py class TestGitlab_OnPrem (line 4) | class TestGitlab_OnPrem(ModuleTestBase): method setup_before_prep (line 9) | async def setup_before_prep(self, module_test): method check (line 164) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_google_playstore.py class TestGoogle_Playstore (line 4) | class TestGoogle_Playstore(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 52) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_gowitness.py class TestGowitness (line 6) | class TestGowitness(ModuleTestBase): method setup_after_prep (line 21) | async def setup_after_prep(self, module_test): method check (line 46) | def check(self, module_test, events): class TestGowitness_Social (line 71) | class TestGowitness_Social(TestGowitness): method check (line 75) | def check(self, module_test, events): class TestGoWitnessWithBlob (line 100) | class TestGoWitnessWithBlob(TestGowitness): method check (line 103) | def check(self, module_test, events): class TestGoWitnessLongFilename (line 109) | class TestGoWitnessLongFilename(TestGowitness): method setup_after_prep (line 119) | async def setup_after_prep(self, module_test): method check (line 129) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_graphql_introspection.py class TestGraphQLIntrospectionNon200 (line 4) | class TestGraphQLIntrospectionNon200(ModuleTestBase): method setup_after_prep (line 8) | async def setup_after_prep(self, module_test): method check (line 14) | def check(self, module_test, events): class TestGraphQLIntrospection (line 18) | class TestGraphQLIntrospection(ModuleTestBase): method setup_after_prep (line 22) | async def setup_after_prep(self, module_test): method check (line 30) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_hackertarget.py class TestHackertarget (line 4) | class TestHackertarget(ModuleTestBase): method setup_before_prep (line 5) | async def setup_before_prep(self, module_test): method check (line 11) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_host_header.py function extract_subdomain_tag (line 7) | def extract_subdomain_tag(data): class TestHost_Header (line 14) | class TestHost_Header(ModuleTestBase): method request_handler (line 20) | def request_handler(self, request): method setup_before_prep (line 36) | async def setup_before_prep(self, module_test): method setup_after_prep (line 42) | async def setup_after_prep(self, module_test): method check (line 46) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_http.py class TestHTTP (line 7) | class TestHTTP(ModuleTestBase): method verify_data (line 21) | def verify_data(self, j): method setup_after_prep (line 24) | async def setup_after_prep(self, module_test): method check (line 50) | def check(self, module_test, events): class TestHTTPSIEMFriendly (line 57) | class TestHTTPSIEMFriendly(TestHTTP): method verify_data (line 62) | def verify_data(self, j): FILE: bbot/test/test_step_2/module_tests/test_module_httpx.py class TestHTTPXBase (line 4) | class TestHTTPXBase(ModuleTestBase): method setup_after_prep (line 33) | async def setup_after_prep(self, module_test): method check (line 41) | def check(self, module_test, events): class TestHTTPX_404 (line 58) | class TestHTTPX_404(ModuleTestBase): method setup_after_prep (line 63) | async def setup_after_prep(self, module_test): method check (line 69) | def check(self, module_test, events): class TestHTTPX_Redirect (line 76) | class TestHTTPX_Redirect(ModuleTestBase): method setup_after_prep (line 80) | async def setup_after_prep(self, module_test): method check (line 85) | def check(self, module_test, events): class TestHTTPX_URLBlacklist (line 105) | class TestHTTPX_URLBlacklist(ModuleTestBase): method setup_after_prep (line 110) | async def setup_after_prep(self, module_test): method check (line 120) | def check(self, module_test, events): class TestHTTPX_querystring_removed (line 131) | class TestHTTPX_querystring_removed(ModuleTestBase): method setup_after_prep (line 135) | async def setup_after_prep(self, module_test): method check (line 138) | def check(self, module_test, events): class TestHTTPX_querystring_notremoved (line 142) | class TestHTTPX_querystring_notremoved(TestHTTPX_querystring_removed): method check (line 145) | def check(self, module_test, events): class TestHTTPX_custom_headers (line 149) | class TestHTTPX_custom_headers(ModuleTestBase): method setup_after_prep (line 154) | async def setup_after_prep(self, module_test): method check (line 157) | def check(self, module_test, events): class TestHTTPX_custom_cookies (line 162) | class TestHTTPX_custom_cookies(ModuleTestBase): method setup_after_prep (line 167) | async def setup_after_prep(self, module_test): method check (line 173) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_hunt.py class TestHunt (line 4) | class TestHunt(ModuleTestBase): method setup_after_prep (line 11) | async def setup_after_prep(self, module_test): method check (line 16) | def check(self, module_test, events): class TestHunt_Multiple (line 25) | class TestHunt_Multiple(TestHunt): method setup_after_prep (line 26) | async def setup_after_prep(self, module_test): method check (line 31) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_hunterio.py class TestHunterio (line 4) | class TestHunterio(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 158) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py class TestIIS_Shortnames (line 6) | class TestIIS_Shortnames(ModuleTestBase): method setup_after_prep (line 11) | async def setup_after_prep(self, module_test): method check (line 92) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ip2location.py class TestIP2Location (line 4) | class TestIP2Location(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 27) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ipneighbor.py class TestIPNeighbor (line 4) | class TestIPNeighbor(ModuleTestBase): method setup_after_prep (line 8) | async def setup_after_prep(self, module_test): method check (line 13) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ipstack.py class TestIPStack (line 4) | class TestIPStack(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method check (line 64) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_jadx.py class TestJadx (line 8) | class TestJadx(ModuleTestBase): method setup_after_prep (line 19) | async def setup_after_prep(self, module_test): method check (line 56) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_json.py class TestJSON (line 7) | class TestJSON(ModuleTestBase): method check (line 8) | def check(self, module_test, events): class TestJSONSIEMFriendly (line 58) | class TestJSONSIEMFriendly(ModuleTestBase): method check (line 62) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_leakix.py class TestLeakIX (line 4) | class TestLeakIX(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 25) | def check(self, module_test, events): class TestLeakIX_NoAPIKey (line 29) | class TestLeakIX_NoAPIKey(ModuleTestBase): method setup_before_prep (line 32) | async def setup_before_prep(self, module_test): method check (line 48) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_legba.py function protocol (line 7) | def protocol(request): function mock_legba_run_process (line 12) | def mock_legba_run_process(monkeypatch, request): class TestLegba (line 42) | class TestLegba(ModuleTestBase): method _protocol_dependency (line 68) | def _protocol_dependency(self, protocol): method setup_after_prep (line 72) | async def setup_after_prep(self, module_test): method check (line 84) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_lightfuzz.py class Test_Lightfuzz_path_singledot (line 15) | class Test_Lightfuzz_path_singledot(ModuleTestBase): method setup_after_prep (line 27) | async def setup_after_prep(self, module_test): method request_handler (line 38) | def request_handler(self, request): method check (line 55) | def check(self, module_test, events): class Test_Lightfuzz_path_absolute (line 75) | class Test_Lightfuzz_path_absolute(Test_Lightfuzz_path_singledot): method setup_after_prep (line 87) | async def setup_after_prep(self, module_test): method check (line 103) | def check(self, module_test, events): class Test_Lightfuzz_ssti_multiply (line 123) | class Test_Lightfuzz_ssti_multiply(ModuleTestBase): method request_handler (line 135) | def request_handler(self, request): method setup_after_prep (line 146) | async def setup_after_prep(self, module_test): method check (line 154) | def check(self, module_test, events): class Test_Lightfuzz_xss (line 174) | class Test_Lightfuzz_xss(ModuleTestBase): method request_handler (line 186) | def request_handler(self, request): method setup_after_prep (line 210) | async def setup_after_prep(self, module_test): method check (line 215) | def check(self, module_test, events): class Test_Lightfuzz_xss_formaction (line 232) | class Test_Lightfuzz_xss_formaction(Test_Lightfuzz_xss): method request_handler (line 233) | def request_handler(self, request): method check (line 262) | def check(self, module_test, events): class Test_Lightfuzz_envelope_base64 (line 282) | class Test_Lightfuzz_envelope_base64(Test_Lightfuzz_xss): method request_handler (line 283) | def request_handler(self, request): method check (line 308) | def check(self, module_test, events): class Test_Lightfuzz_envelope_hex (line 328) | class Test_Lightfuzz_envelope_hex(Test_Lightfuzz_envelope_base64): method request_handler (line 329) | def request_handler(self, request): class Test_Lightfuzz_envelope_jsonb64 (line 373) | class Test_Lightfuzz_envelope_jsonb64(Test_Lightfuzz_envelope_base64): method request_handler (line 374) | def request_handler(self, request): class Test_Lightfuzz_envelope_multiple_json (line 419) | class Test_Lightfuzz_envelope_multiple_json(Test_Lightfuzz_envelope_base... method request_handler (line 420) | def request_handler(self, request): method check (line 431) | def check(self, module_test, events): class Test_Lightfuzz_envelope_xmlb64 (line 449) | class Test_Lightfuzz_envelope_xmlb64(Test_Lightfuzz_envelope_base64): method request_handler (line 450) | def request_handler(self, request): class Test_Lightfuzz_xss_intag (line 496) | class Test_Lightfuzz_xss_intag(Test_Lightfuzz_xss): method request_handler (line 497) | def request_handler(self, request): method setup_after_prep (line 519) | async def setup_after_prep(self, module_test): method check (line 526) | def check(self, module_test, events): class Test_Lightfuzz_xss_injs (line 547) | class Test_Lightfuzz_xss_injs(Test_Lightfuzz_xss): method request_handler (line 554) | def request_handler(self, request): method setup_after_prep (line 578) | async def setup_after_prep(self, module_test): method check (line 585) | def check(self, module_test, events): class Test_Lightfuzz_urlencoding (line 606) | class Test_Lightfuzz_urlencoding(Test_Lightfuzz_xss_injs): method check (line 622) | def check(self, module_test, events): class Test_Lightfuzz_sqli (line 643) | class Test_Lightfuzz_sqli(ModuleTestBase): method request_handler (line 655) | def request_handler(self, request): method setup_after_prep (line 690) | async def setup_after_prep(self, module_test): method check (line 695) | def check(self, module_test, events): class Test_Lightfuzz_sqli_post (line 714) | class Test_Lightfuzz_sqli_post(ModuleTestBase): method request_handler (line 726) | def request_handler(self, request): method setup_after_prep (line 758) | async def setup_after_prep(self, module_test): method check (line 763) | def check(self, module_test, events): class Test_Lightfuzz_disable_post (line 783) | class Test_Lightfuzz_disable_post(Test_Lightfuzz_sqli_post): method check (line 794) | def check(self, module_test, events): class Test_Lightfuzz_sqli_headers (line 814) | class Test_Lightfuzz_sqli_headers(Test_Lightfuzz_sqli): method setup_after_prep (line 815) | async def setup_after_prep(self, module_test): method request_handler (line 842) | def request_handler(self, request): method check (line 869) | def check(self, module_test, events): class Test_Lightfuzz_sqli_cookies (line 882) | class Test_Lightfuzz_sqli_cookies(Test_Lightfuzz_sqli): method setup_after_prep (line 883) | async def setup_after_prep(self, module_test): method request_handler (line 910) | def request_handler(self, request): method check (line 938) | def check(self, module_test, events): class Test_Lightfuzz_sqli_delay (line 951) | class Test_Lightfuzz_sqli_delay(Test_Lightfuzz_sqli): method request_handler (line 952) | def request_handler(self, request): method check (line 983) | def check(self, module_test, events): class Test_Lightfuzz_serial_errorresolution (line 1003) | class Test_Lightfuzz_serial_errorresolution(ModuleTestBase): method setup_after_prep (line 1056) | async def setup_after_prep(self, module_test): method request_handler (line 1060) | def request_handler(self, request): method check (line 1077) | def check(self, module_test, events): class Test_Lightfuzz_serial_errorresolution_falsepositive (line 1113) | class Test_Lightfuzz_serial_errorresolution_falsepositive(Test_Lightfuzz... method request_handler (line 1114) | def request_handler(self, request): method check (line 1131) | def check(self, module_test, events): class Test_Lightfuzz_serial_errorresolution_existingvalue_valid (line 1141) | class Test_Lightfuzz_serial_errorresolution_existingvalue_valid(Test_Lig... method check (line 1173) | def check(self, module_test, events): class Test_Lightfuzz_serial_errorresolution_existingvalue_invalid (line 1213) | class Test_Lightfuzz_serial_errorresolution_existingvalue_invalid(Test_L... class Test_Lightfuzz_serial_errordifferential (line 1247) | class Test_Lightfuzz_serial_errordifferential(Test_Lightfuzz_serial_erro... method request_handler (line 1248) | def request_handler(self, request): method check (line 1288) | def check(self, module_test, events): class Test_Lightfuzz_serial_errordifferential_falsepositive (line 1311) | class Test_Lightfuzz_serial_errordifferential_falsepositive(Test_Lightfu... method request_handler (line 1312) | def request_handler(self, request): method check (line 1323) | def check(self, module_test, events): class Test_Lightfuzz_cmdi (line 1332) | class Test_Lightfuzz_cmdi(ModuleTestBase): method request_handler (line 1344) | def request_handler(self, request): method setup_after_prep (line 1373) | async def setup_after_prep(self, module_test): method check (line 1378) | def check(self, module_test, events): class Test_Lightfuzz_cmdi_interactsh (line 1398) | class Test_Lightfuzz_cmdi_interactsh(Test_Lightfuzz_cmdi): method extract_subdomain_tag (line 1400) | def extract_subdomain_tag(data): method request_handler (line 1415) | def request_handler(self, request): method setup_before_prep (line 1435) | async def setup_before_prep(self, module_test): method setup_after_prep (line 1442) | async def setup_after_prep(self, module_test): method check (line 1446) | def check(self, module_test, events): class Test_Lightfuzz_speculative (line 1465) | class Test_Lightfuzz_speculative(ModuleTestBase): method request_handler (line 1477) | def request_handler(self, request): method setup_after_prep (line 1498) | async def setup_after_prep(self, module_test): method check (line 1503) | def check(self, module_test, events): class Test_Lightfuzz_crypto_error (line 1520) | class Test_Lightfuzz_crypto_error(ModuleTestBase): method request_handler (line 1530) | def request_handler(self, request): method setup_after_prep (line 1554) | async def setup_after_prep(self, module_test): method check (line 1559) | def check(self, module_test, events): class Test_Lightfuzz_crypto_error_falsepositive (line 1577) | class Test_Lightfuzz_crypto_error_falsepositive(ModuleTestBase): method request_handler (line 1587) | def request_handler(self, request): method setup_after_prep (line 1599) | async def setup_after_prep(self, module_test): method check (line 1604) | def check(self, module_test, events): class Test_Lightfuzz_PaddingOracleDetection (line 1621) | class Test_Lightfuzz_PaddingOracleDetection(ModuleTestBase): method request_handler (line 1633) | def request_handler(self, request): method setup_after_prep (line 1664) | async def setup_after_prep(self, module_test): method check (line 1667) | def check(self, module_test, events): class Test_Lightfuzz_PaddingOracleDetection_Reflecting (line 1694) | class Test_Lightfuzz_PaddingOracleDetection_Reflecting(Test_Lightfuzz_Pa... method request_handler (line 1698) | def request_handler(self, request): method check (line 1729) | def check(self, module_test, events): class Test_Lightfuzz_PaddingOracleDetection_Noisy (line 1756) | class Test_Lightfuzz_PaddingOracleDetection_Noisy(Test_Lightfuzz_Padding... method request_handler (line 1760) | def request_handler(self, request): method check (line 1806) | def check(self, module_test, events): class Test_Lightfuzz_XSS_jsquotecontext (line 1831) | class Test_Lightfuzz_XSS_jsquotecontext(ModuleTestBase): method request_handler (line 1842) | def request_handler(self, request): method setup_after_prep (line 1881) | async def setup_after_prep(self, module_test): method check (line 1889) | def check(self, module_test, events): class Test_Lightfuzz_XSS_jsquotecontext_doublequote (line 1906) | class Test_Lightfuzz_XSS_jsquotecontext_doublequote(Test_Lightfuzz_XSS_j... method request_handler (line 1907) | def request_handler(self, request): method check (line 1943) | def check(self, module_test, events): class Test_Lightfuzz_esi (line 1959) | class Test_Lightfuzz_esi(ModuleTestBase): method request_handler (line 1971) | def request_handler(self, request): method setup_after_prep (line 2006) | async def setup_after_prep(self, module_test): method check (line 2010) | def check(self, module_test, events): class Test_Lightfuzz_envelope_isolation_crypto (line 2030) | class Test_Lightfuzz_envelope_isolation_crypto(Test_Lightfuzz_crypto_err... class Test_Lightfuzz_envelope_isolation_paddingoracle (line 2042) | class Test_Lightfuzz_envelope_isolation_paddingoracle(Test_Lightfuzz_Pad... class Test_Lightfuzz_envelope_isolation_paddingoracle_reflecting (line 2054) | class Test_Lightfuzz_envelope_isolation_paddingoracle_reflecting(Test_Li... class Test_Lightfuzz_filter_event (line 2066) | class Test_Lightfuzz_filter_event(ModuleTestBase): method setup_after_prep (line 2079) | async def setup_after_prep(self, module_test): method test_filter_event (line 2127) | async def test_filter_event(self, module_test): method check (line 2146) | def check(self, module_test, events): class Test_Lightfuzz_try_post_as_get (line 2152) | class Test_Lightfuzz_try_post_as_get(ModuleTestBase): method request_handler (line 2166) | def request_handler(self, request): method setup_after_prep (line 2202) | async def setup_after_prep(self, module_test): method check (line 2207) | def check(self, module_test, events): class Test_Lightfuzz_try_get_as_post (line 2233) | class Test_Lightfuzz_try_get_as_post(ModuleTestBase): method request_handler (line 2246) | def request_handler(self, request): method setup_after_prep (line 2278) | async def setup_after_prep(self, module_test): method check (line 2283) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_medusa.py function mock_medusa_run_process (line 6) | def mock_medusa_run_process(monkeypatch): class TestMedusa (line 23) | class TestMedusa(ModuleTestBase): method setup_after_prep (line 36) | async def setup_after_prep(self, module_test): method check (line 46) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_mysql.py class TestMySQL (line 7) | class TestMySQL(ModuleTestBase): method setup_before_prep (line 11) | async def setup_before_prep(self, module_test): method check (line 49) | async def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_myssl.py class TestMySSL (line 4) | class TestMySSL(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 38) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_neo4j.py class TestNeo4j (line 4) | class TestNeo4j(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 43) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_newsletters.py class TestNewsletters (line 6) | class TestNewsletters(ModuleTestBase): method setup_after_prep (line 35) | async def setup_after_prep(self, module_test): method check (line 43) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_nmap_xml.py class TestNmap_XML (line 7) | class TestNmap_XML(ModuleTestBase): class DummyModule (line 12) | class DummyModule(BaseModule): method handle_event (line 16) | async def handle_event(self, event): method setup_before_prep (line 28) | async def setup_before_prep(self, module_test): method check (line 39) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_ntlm.py class TestNTLM (line 4) | class TestNTLM(ModuleTestBase): method setup_after_prep (line 9) | async def setup_after_prep(self, module_test): method check (line 23) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_nuclei.py class TestNucleiManual (line 5) | class TestNucleiManual(ModuleTestBase): method setup_after_prep (line 41) | async def setup_after_prep(self, module_test): method check (line 49) | def check(self, module_test, events): class TestNucleiSevere (line 62) | class TestNucleiSevere(TestNucleiManual): method setup_after_prep (line 75) | async def setup_after_prep(self, module_test): method check (line 84) | def check(self, module_test, events): class TestNucleiTechnology (line 90) | class TestNucleiTechnology(TestNucleiManual): method setup_before_prep (line 96) | async def setup_before_prep(self, module_test): method check (line 104) | def check(self, module_test, events): class TestNucleiBudget (line 109) | class TestNucleiBudget(TestNucleiManual): method setup_before_prep (line 122) | async def setup_before_prep(self, module_test): method check (line 127) | def check(self, module_test, events): class TestNucleiRetries (line 131) | class TestNucleiRetries(TestNucleiManual): method setup_before_prep (line 137) | async def setup_before_prep(self, module_test): method check (line 144) | def check(self, module_test, events): class TestNucleiRetriesCustom (line 148) | class TestNucleiRetriesCustom(TestNucleiRetries): method check (line 154) | def check(self, module_test, events): class TestNucleiCustomHeaders (line 158) | class TestNucleiCustomHeaders(TestNucleiManual): method setup_after_prep (line 163) | async def setup_after_prep(self, module_test): method check (line 171) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_oauth.py class TestOAUTH (line 6) | class TestOAUTH(ModuleTestBase): method setup_after_prep (line 167) | async def setup_after_prep(self, module_test): method check (line 206) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_otx.py class TestOTX (line 4) | class TestOTX(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 29) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py class TestParamminer_Cookies (line 4) | class TestParamminer_Cookies(Paramminer_Headers): method setup_after_prep (line 26) | async def setup_after_prep(self, module_test): method check (line 38) | def check(self, module_test, events): class TestParamminer_Cookies_noreflection (line 54) | class TestParamminer_Cookies_noreflection(TestParamminer_Cookies): method check (line 64) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py class TestParamminer_Getparams (line 4) | class TestParamminer_Getparams(Paramminer_Headers): method setup_after_prep (line 26) | async def setup_after_prep(self, module_test): method check (line 38) | def check(self, module_test, events): class TestParamminer_Getparams_noreflection (line 50) | class TestParamminer_Getparams_noreflection(TestParamminer_Getparams): method check (line 60) | def check(self, module_test, events): class TestParamminer_Getparams_singlewordlist (line 68) | class TestParamminer_Getparams_singlewordlist(TestParamminer_Getparams): class TestParamminer_Getparams_boring_off (line 72) | class TestParamminer_Getparams_boring_off(TestParamminer_Getparams): method setup_after_prep (line 79) | async def setup_after_prep(self, module_test): method check (line 91) | def check(self, module_test, events): class TestParamminer_Getparams_boring_on (line 100) | class TestParamminer_Getparams_boring_on(TestParamminer_Getparams_boring... method check (line 107) | def check(self, module_test, events): class TestParamminer_Getparams_finish (line 118) | class TestParamminer_Getparams_finish(Paramminer_Headers): method setup_after_prep (line 138) | async def setup_after_prep(self, module_test): method check (line 160) | def check(self, module_test, events): class TestParamminer_Getparams_xmlspeculative (line 193) | class TestParamminer_Getparams_xmlspeculative(Paramminer_Headers): method setup_after_prep (line 216) | async def setup_after_prep(self, module_test): method check (line 232) | def check(self, module_test, events): class TestParamminer_Getparams_filter_static (line 253) | class TestParamminer_Getparams_filter_static(TestParamminer_Getparams_fi... method check (line 260) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py class Paramminer_Headers (line 6) | class Paramminer_Headers(ModuleTestBase): method setup_after_prep (line 29) | async def setup_after_prep(self, module_test): method check (line 41) | def check(self, module_test, events): class TestParamminer_Headers (line 57) | class TestParamminer_Headers(Paramminer_Headers): class TestParamminer_Headers_noreflection (line 61) | class TestParamminer_Headers_noreflection(Paramminer_Headers): method check (line 73) | def check(self, module_test, events): class TestParamminer_Headers_extract (line 82) | class TestParamminer_Headers_extract(Paramminer_Headers): method setup_after_prep (line 110) | async def setup_after_prep(self, module_test): method check (line 122) | def check(self, module_test, events): class TestParamminer_Headers_extract_norecycle (line 137) | class TestParamminer_Headers_extract_norecycle(TestParamminer_Headers_ex... method setup_after_prep (line 141) | async def setup_after_prep(self, module_test): method check (line 145) | def check(self, module_test, events): class TestParamminer_Headers_NoCookieRetention (line 158) | class TestParamminer_Headers_NoCookieRetention(Paramminer_Headers): method setup_after_prep (line 159) | async def setup_after_prep(self, module_test): method check (line 187) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_passivetotal.py class TestPassiveTotal (line 4) | class TestPassiveTotal(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method setup_after_prep (line 19) | async def setup_after_prep(self, module_test): method check (line 22) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_pgp.py class TestPGP (line 4) | class TestPGP(ModuleTestBase): method setup_before_prep (line 28) | async def setup_before_prep(self, module_test): method check (line 34) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_portfilter.py class TestPortfilter_disabled (line 4) | class TestPortfilter_disabled(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 33) | def check(self, module_test, events): class TestPortfilter_enabled (line 42) | class TestPortfilter_enabled(TestPortfilter_disabled): method check (line 45) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_portscan.py class TestPortscan (line 4) | class TestPortscan(ModuleTestBase): method setup_after_prep (line 23) | async def setup_after_prep(self, module_test): method check (line 76) | def check(self, module_test, events): class TestPortscanPingFirst (line 128) | class TestPortscanPingFirst(TestPortscan): method check (line 132) | def check(self, module_test, events): class TestPortscanPingOnly (line 142) | class TestPortscanPingOnly(TestPortscan): method check (line 148) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_postgres.py class TestPostgres (line 7) | class TestPostgres(ModuleTestBase): method setup_before_prep (line 11) | async def setup_before_prep(self, module_test): method check (line 53) | async def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_postman.py class TestPostman (line 4) | class TestPostman(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method setup_after_prep (line 42) | async def setup_after_prep(self, module_test): method check (line 449) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_postman_download.py class TestPostman_Download (line 5) | class TestPostman_Download(ModuleTestBase): method setup_before_prep (line 13) | async def setup_before_prep(self, module_test): method setup_after_prep (line 47) | async def setup_after_prep(self, module_test): method check (line 293) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_python.py class TestPython (line 4) | class TestPython(ModuleTestBase): method check (line 5) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_rapiddns.py class TestRapidDNS (line 6) | class TestRapidDNS(ModuleTestBase): method setup_after_prep (line 11) | async def setup_after_prep(self, module_test): method check (line 17) | def check(self, module_test, events): class TestRapidDNSAbortThreshold1 (line 21) | class TestRapidDNSAbortThreshold1(TestRapidDNS): method setup_after_prep (line 24) | async def setup_after_prep(self, module_test): method check (line 46) | def check(self, module_test, events): class TestRapidDNSAbortThreshold2 (line 57) | class TestRapidDNSAbortThreshold2(TestRapidDNSAbortThreshold1): method check (line 60) | def check(self, module_test, events): class TestRapidDNSAbortThreshold3 (line 72) | class TestRapidDNSAbortThreshold3(TestRapidDNSAbortThreshold1): method check (line 75) | def check(self, module_test, events): class TestRapidDNSAbortThreshold4 (line 92) | class TestRapidDNSAbortThreshold4(TestRapidDNSAbortThreshold1): method check (line 95) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_reflected_parameters.py class TestReflected_parameters_fromexcavate (line 9) | class TestReflected_parameters_fromexcavate(ModuleTestBase): method request_handler (line 13) | def request_handler(self, request): method setup_after_prep (line 25) | async def setup_after_prep(self, module_test): method check (line 29) | def check(self, module_test, events): class TestReflected_parameters_headers (line 38) | class TestReflected_parameters_headers(TestReflected_parameters_fromexca... method request_handler (line 46) | def request_handler(self, request): method check (line 55) | def check(self, module_test, events): class TestReflected_parameters_fromparamminer (line 64) | class TestReflected_parameters_fromparamminer(TestParamminer_Getparams): method request_handler (line 67) | def request_handler(self, request): method setup_after_prep (line 79) | async def setup_after_prep(self, module_test): method check (line 88) | def check(self, module_test, events): class TestReflected_parameters_with_canary (line 97) | class TestReflected_parameters_with_canary(TestReflected_parameters_from... method request_handler (line 98) | def request_handler(self, request): method check (line 112) | def check(self, module_test, events): class TestReflected_parameters_cookies (line 117) | class TestReflected_parameters_cookies(TestReflected_parameters_fromexca... method request_handler (line 125) | def request_handler(self, request): method check (line 134) | def check(self, module_test, events): class TestReflected_parameters_postparams (line 143) | class TestReflected_parameters_postparams(TestReflected_parameters_frome... method request_handler (line 146) | def request_handler(self, request): method check (line 165) | def check(self, module_test, events): class TestReflected_parameters_bodyjson (line 174) | class TestReflected_parameters_bodyjson(TestReflected_parameters_fromexc... method request_handler (line 177) | def request_handler(self, request): method setup_after_prep (line 216) | async def setup_after_prep(self, module_test): method check (line 220) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_retirejs.py class TestRetireJS (line 4) | class TestRetireJS(ModuleTestBase): method setup_after_prep (line 74) | async def setup_after_prep(self, module_test): method check (line 91) | def check(self, module_test, events): class TestRetireJSNoExcavate (line 138) | class TestRetireJSNoExcavate(ModuleTestBase): method check (line 146) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_robots.py class TestRobots (line 5) | class TestRobots(ModuleTestBase): method setup_after_prep (line 10) | async def setup_after_prep(self, module_test): method check (line 17) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_securitytrails.py class TestSecurityTrails (line 4) | class TestSecurityTrails(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 20) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_securitytxt.py class TestSecurityTxt (line 4) | class TestSecurityTxt(ModuleTestBase): method setup_before_prep (line 8) | async def setup_before_prep(self, module_test): method setup_after_prep (line 14) | async def setup_after_prep(self, module_test): method check (line 23) | def check(self, module_test, events): class TestSecurityTxtEmailsFalse (line 34) | class TestSecurityTxtEmailsFalse(TestSecurityTxt): method check (line 40) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_shodan_dns.py class TestShodan_DNS (line 4) | class TestShodan_DNS(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 37) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_shodan_idb.py class TestShodan_IDB (line 4) | class TestShodan_IDB(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 38) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_sitedossier.py class TestSitedossier (line 125) | class TestSitedossier(ModuleTestBase): method setup_after_prep (line 128) | async def setup_after_prep(self, module_test): method check (line 147) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_skymem.py class TestSkymem (line 4) | class TestSkymem(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 21) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_slack.py class TestSlack (line 4) | class TestSlack(DiscordBase): FILE: bbot/test/test_step_2/module_tests/test_module_smuggler.py class TestSmuggler (line 34) | class TestSmuggler(ModuleTestBase): method setup_after_prep (line 38) | async def setup_after_prep(self, module_test): method check (line 55) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_social.py class TestSocial (line 4) | class TestSocial(ModuleTestBase): method setup_after_prep (line 8) | async def setup_after_prep(self, module_test): method check (line 23) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_speculate.py class TestSpeculate_Subdirectories (line 4) | class TestSpeculate_Subdirectories(ModuleTestBase): method setup_after_prep (line 8) | async def setup_after_prep(self, module_test): method check (line 21) | def check(self, module_test, events): class TestSpeculate_OpenPorts (line 25) | class TestSpeculate_OpenPorts(ModuleTestBase): method setup_before_prep (line 30) | async def setup_before_prep(self, module_test): method check (line 60) | def check(self, module_test, events): class TestSpeculate_OpenPorts_Portscanner (line 70) | class TestSpeculate_OpenPorts_Portscanner(TestSpeculate_OpenPorts): method check (line 75) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_splunk.py class TestSplunk (line 7) | class TestSplunk(ModuleTestBase): method verify_data (line 20) | def verify_data(self, j): method setup_after_prep (line 30) | async def setup_after_prep(self, module_test): method check (line 54) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_sqlite.py class TestSQLite (line 5) | class TestSQLite(ModuleTestBase): method check (line 8) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_sslcert.py class TestSSLCert (line 4) | class TestSSLCert(ModuleTestBase): method check (line 8) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_stdout.py class TestStdout (line 6) | class TestStdout(ModuleTestBase): method check (line 9) | def check(self, module_test, events): class TestStdoutEventTypes (line 15) | class TestStdoutEventTypes(TestStdout): method check (line 18) | def check(self, module_test, events): class TestStdoutEventFields (line 24) | class TestStdoutEventFields(TestStdout): method check (line 27) | def check(self, module_test, events): class TestStdoutJSON (line 32) | class TestStdoutJSON(TestStdout): method check (line 41) | def check(self, module_test, events): class TestStdoutJSONFields (line 55) | class TestStdoutJSONFields(TestStdout): method check (line 58) | def check(self, module_test, events): class TestStdoutDupes (line 67) | class TestStdoutDupes(TestStdout): method setup_after_prep (line 78) | async def setup_after_prep(self, module_test): method check (line 81) | def check(self, module_test, events): class TestStdoutNoDupes (line 88) | class TestStdoutNoDupes(TestStdoutDupes): method check (line 99) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py class TestSubdomainCenter (line 4) | class TestSubdomainCenter(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 11) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_subdomainradar.py class TestSubDomainRadar (line 4) | class TestSubDomainRadar(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 206) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_subdomains.py class TestSubdomains (line 4) | class TestSubdomains(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 13) | def check(self, module_test, events): class TestSubdomainsUnresolved (line 19) | class TestSubdomainsUnresolved(TestSubdomains): method check (line 22) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_teams.py class TestTeams (line 6) | class TestTeams(DiscordBase): method setup_after_prep (line 12) | async def setup_after_prep(self, module_test): method check (line 34) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_telerik.py class TestTelerik (line 5) | class TestTelerik(ModuleTestBase): method setup_before_prep (line 10) | async def setup_before_prep(self, module_test): method setup_after_prep (line 71) | async def setup_after_prep(self, module_test): method check (line 80) | def check(self, module_test, events): class TestTelerikDialogHandler_includesubdirs (line 125) | class TestTelerikDialogHandler_includesubdirs(TestTelerik): method setup_before_prep (line 136) | async def setup_before_prep(self, module_test): method setup_after_prep (line 166) | async def setup_after_prep(self, module_test): method check (line 172) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_trickest.py class TestTrickest (line 4) | class TestTrickest(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 24) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_trufflehog.py class TestTrufflehog (line 13) | class TestTrufflehog(ModuleTestBase): method setup_before_prep (line 37) | async def setup_before_prep(self, module_test): method setup_after_prep (line 865) | async def setup_after_prep(self, module_test): method check (line 1164) | def check(self, module_test, events): class TestTrufflehog_NonVerified (line 1225) | class TestTrufflehog_NonVerified(TestTrufflehog): method check (line 1237) | def check(self, module_test, events): class TestTrufflehog_HTTPResponse (line 1296) | class TestTrufflehog_HTTPResponse(ModuleTestBase): method setup_before_prep (line 1301) | async def setup_before_prep(self, module_test): method check (line 1306) | def check(self, module_test, events): class TestTrufflehog_RAWText (line 1310) | class TestTrufflehog_RAWText(ModuleTestBase): method setup_before_prep (line 1319) | async def setup_before_prep(self, module_test): method check (line 1329) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_txt.py class TestTXT (line 4) | class TestTXT(ModuleTestBase): method check (line 5) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_unarchive.py class TestUnarchive (line 9) | class TestUnarchive(ModuleTestBase): method setup_after_prep (line 20) | async def setup_after_prep(self, module_test): method check (line 147) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_url_manipulation.py class TestUrl_Manipulation (line 4) | class TestUrl_Manipulation(ModuleTestBase): method setup_after_prep (line 25) | async def setup_after_prep(self, module_test): method check (line 33) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_urlscan.py class TestUrlScan (line 4) | class TestUrlScan(ModuleTestBase): method setup_after_prep (line 7) | async def setup_after_prep(self, module_test): method check (line 56) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_vhost.py class TestVhost (line 4) | class TestVhost(ModuleTestBase): method setup_after_prep (line 16) | async def setup_after_prep(self, module_test): method check (line 41) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_viewdns.py class TestViewDNS (line 4) | class TestViewDNS(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 11) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_virustotal.py class TestVirusTotal (line 4) | class TestVirusTotal(ModuleTestBase): method setup_before_prep (line 7) | async def setup_before_prep(self, module_test): method check (line 50) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_wafw00f.py class TestWafw00f (line 6) | class TestWafw00f(ModuleTestBase): method setup_after_prep (line 10) | async def setup_after_prep(self, module_test): method check (line 15) | def check(self, module_test, events): class TestWafw00f_noredirect (line 19) | class TestWafw00f_noredirect(ModuleTestBase): method setup_after_prep (line 23) | async def setup_after_prep(self, module_test): method check (line 31) | def check(self, module_test, events): class TestWafw00f_genericdetection (line 35) | class TestWafw00f_genericdetection(ModuleTestBase): method setup_after_prep (line 39) | async def setup_after_prep(self, module_test): method check (line 47) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_wayback.py class TestWayback (line 4) | class TestWayback(ModuleTestBase): method setup_after_prep (line 5) | async def setup_after_prep(self, module_test): method check (line 11) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_web_parameters.py class TestWebParameters (line 4) | class TestWebParameters(TestExcavateParameterExtraction): method check (line 7) | def check(self, module_test, events): class TestWebParameters_include_count (line 28) | class TestWebParameters_include_count(TestWebParameters): method check (line 34) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_web_report.py class TestWebReport (line 4) | class TestWebReport(ModuleTestBase): method setup_before_prep (line 9) | async def setup_before_prep(self, module_test): method check (line 16) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_websocket.py function websocket_handler (line 13) | async def websocket_handler(websocket): function server_coroutine (line 20) | async def server_coroutine(): class TestWebsocket (line 25) | class TestWebsocket(ModuleTestBase): method setup_before_prep (line 28) | async def setup_before_prep(self, module_test): method check (line 31) | def check(self, module_test, events): FILE: bbot/test/test_step_2/module_tests/test_module_wpscan.py class Testwpscan (line 5) | class Testwpscan(ModuleTestBase): method setup_after_prep (line 1071) | async def setup_after_prep(self, module_test): method check (line 1077) | def check(self, module_test, events): FILE: bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py class TestSubdomainEnum (line 4) | class TestSubdomainEnum(ModuleTestBase): method setup_after_prep (line 17) | async def setup_after_prep(self, module_test): method check (line 44) | def check(self, module_test, events): class TestSubdomainEnumHighestParent (line 56) | class TestSubdomainEnumHighestParent(TestSubdomainEnum): method check (line 63) | def check(self, module_test, events): class TestSubdomainEnumLowestParent (line 78) | class TestSubdomainEnumLowestParent(TestSubdomainEnumHighestParent): method check (line 81) | def check(self, module_test, events): class TestSubdomainEnumWildcardBaseline (line 89) | class TestSubdomainEnumWildcardBaseline(ModuleTestBase): method setup_before_prep (line 103) | async def setup_before_prep(self, module_test): method check (line 121) | def check(self, module_test, events): class TestSubdomainEnumWildcardDefense (line 163) | class TestSubdomainEnumWildcardDefense(TestSubdomainEnumWildcardBaseline): method setup_after_prep (line 174) | async def setup_after_prep(self, module_test): method check (line 185) | def check(self, module_test, events): FILE: docs/javascripts/vega-embed@6.js function n (line 1) | function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach... function n (line 1) | function n(){this.constructor=e} function l (line 1) | function l(e,t){return s.call(e,t)} function c (line 1) | function c(e){if(Array.isArray(e)){for(var t=new Array(e.length),n=0;n=4... function p (line 1) | function p(e){return-1===e.indexOf("/")&&-1===e.indexOf("~")?e:e.replace... function d (line 1) | function d(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")} function u (line 1) | function u(e){if(void 0===e)return!0;if(e)if(Array.isArray(e)){for(var t... function g (line 1) | function g(e,t){var n=[e];for(var r in t){var i="object"==typeof t[r]?JS... function t (line 1) | function t(t,n,r,i,o){var a=this.constructor,s=e.call(this,g(t,{name:n,i... function w (line 1) | function w(e,t){if(""==t)return e;var n={op:"_get",path:t};return A(e,n)... function A (line 1) | function A(e,t,n,r,i,o){if(void 0===n&&(n=!1),void 0===r&&(r=!0),void 0=... function O (line 1) | function O(e,t,n,r,i){if(void 0===r&&(r=!0),void 0===i&&(i=!0),n&&!Array... function x (line 1) | function x(e,t,n,r){if("object"!=typeof e||null===e||Array.isArray(e))th... function I (line 1) | function I(e,t,n){try{if(!Array.isArray(e))throw new v("Patch sequence m... function N (line 1) | function N(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"=... function T (line 6) | function T(e,t){void 0===t&&(t=!1);var n=R.get(e.object);C(n.value,e.obj... function C (line 6) | function C(e,t,n,r,i){if(t!==e){"function"==typeof t.toJSON&&(t=t.toJSON... function F (line 6) | function F(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.ca... function U (line 6) | function U(e){var t=this;if(t instanceof U||(t=new U),t.tail=null,t.head... function B (line 6) | function B(e,t,n){var r=t===e.head?new X(n,null,t,e):new X(n,t,t.next,e)... function G (line 6) | function G(e,t){e.tail=new X(t,e.tail,null,e),e.head||(e.head=e.tail),e.... function W (line 6) | function W(e,t){e.head=new X(t,null,e.head,e),e.tail||(e.tail=e.head),e.... function X (line 6) | function X(e,t,n,r){if(!(this instanceof X))return new X(e,t,n,r);this.l... class le (line 6) | class le{constructor(e,t,n,r,i){this.key=e,this.value=t,this.length=n,th... method constructor (line 6) | constructor(e,t,n,r,i){this.key=e,this.value=t,this.length=n,this.now=... method constructor (line 6) | constructor(e){if("number"==typeof e&&(e={max:e}),e||(e={}),e.max&&("num... method max (line 6) | set max(e){if("number"!=typeof e||e<0)throw new TypeError("max must be a... method max (line 6) | get max(){return this[H]} method allowStale (line 6) | set allowStale(e){this[J]=!!e} method allowStale (line 6) | get allowStale(){return this[J]} method maxAge (line 6) | set maxAge(e){if("number"!=typeof e)throw new TypeError("maxAge must be ... method maxAge (line 6) | get maxAge(){return this[Q]} method lengthCalculator (line 6) | set lengthCalculator(e){"function"!=typeof e&&(e=re),e!==this[Y]&&(this[... method lengthCalculator (line 6) | get lengthCalculator(){return this[Y]} method length (line 6) | get length(){return this[q]} method itemCount (line 6) | get itemCount(){return this[ee].length} method rforEach (line 6) | rforEach(e,t){t=t||this;for(let n=this[ee].tail;null!==n;){const r=n.pre... method forEach (line 6) | forEach(e,t){t=t||this;for(let n=this[ee].head;null!==n;){const r=n.next... method keys (line 6) | keys(){return this[ee].toArray().map((e=>e.key))} method values (line 6) | values(){return this[ee].toArray().map((e=>e.value))} method reset (line 6) | reset(){this[Z]&&this[ee]&&this[ee].length&&this[ee].forEach((e=>this[Z]... method dump (line 6) | dump(){return this[ee].map((e=>!oe(this,e)&&{k:e.key,v:e.value,e:e.now+(... method dumpLru (line 6) | dumpLru(){return this[ee]} method set (line 6) | set(e,t,n){if((n=n||this[Q])&&"number"!=typeof n)throw new TypeError("ma... method has (line 6) | has(e){if(!this[te].has(e))return!1;const t=this[te].get(e).value;return... method get (line 6) | get(e){return ie(this,e,!0)} method peek (line 6) | peek(e){return ie(this,e,!1)} method pop (line 6) | pop(){const e=this[ee].tail;return e?(se(this,e),e.value):null} method del (line 6) | del(e){se(this,this[te].get(e))} method load (line 6) | load(e){this.reset();const t=Date.now();for(let n=e.length-1;n>=0;n--){c... method prune (line 6) | prune(){this[te].forEach(((e,t)=>ie(this,t,!1)))} method constructor (line 6) | constructor(t,n){if(n=Ne(n),t instanceof e){if(t.loose===!!n.loose&&t.in... method format (line 6) | format(){return this.version=`${this.major}.${this.minor}.${this.patch}`... method toString (line 6) | toString(){return this.version} method compare (line 6) | compare(t){if(we("SemVer.compare",this.version,this.options,t),!(t insta... method compareMain (line 6) | compareMain(t){return t instanceof e||(t=new e(t,this.options)),Le(this.... method comparePre (line 6) | comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelea... method compareBuild (line 6) | compareBuild(t){t instanceof e||(t=new e(t,this.options));let n=0;do{con... method inc (line 6) | inc(e,t,n){switch(e){case"premajor":this.prerelease.length=0,this.patch=... function qe (line 6) | function qe(){if(Ve)return Xe;Ve=1;class e{constructor(t,i){if(i=n(i),t ... function st (line 6) | function st(e,t,n,r,i,o){const a=e=>at[e.type](a,e);return a.memberDepth... method operator (line 6) | operator(e,t){const n=t.ast,r=e.functions;return e=>st(n,r,e)} method parameter (line 6) | parameter(e,t){const n=t.ast,r=e.functions;return(e,t)=>st(n,r,t,e)} method event (line 6) | event(e,t){const n=t.ast,r=e.functions;return e=>st(n,r,void 0,void 0,e)} method handler (line 6) | handler(e,t){const n=t.ast,r=e.functions;return(e,t)=>{const i=t.item&&t... method encode (line 6) | encode(e,t){const{marktype:n,channels:r}=t,i=e.functions,o="group"===n||... function ct (line 6) | function ct(e){const[t,n]=/schema\/([\w-]+)\/([\w\.\-]+)\.json$/g.exec(e... function sn (line 6) | function sn({type:e,background:t}){const n="dark"===e?"#161616":"#ffffff... function un (line 6) | function un(e,t,n){return e.fields=t||[],e.fname=n,e} function gn (line 6) | function gn(e){return 1===e.length?mn(e[0]):vn(e)} function En (line 6) | function En(e){throw Error(e)} function c (line 6) | function c(){t.push(l+e.substring(r,i)),l="",r=i+1} function yn (line 6) | function yn(e){return e===Object(e)} function wn (line 6) | function wn(e,t){return JSON.stringify(e,function(e){const t=[];return f... class In (line 6) | class In{constructor(e){this.options={...xn,...e};const t=this.options.i... method constructor (line 6) | constructor(e){this.options={...xn,...e};const t=this.options.id;if(th... method tooltipHandler (line 6) | tooltipHandler(e,t,n,r){if(this.el=document.getElementById(this.option... function Ln (line 6) | function Ln(e,...t){for(const n of t)Rn(e,n);return e} function Rn (line 6) | function Rn(t,n){for(const r of Object.keys(n))e.writeConfig(t,r,n[r],!0)} function zn (line 6) | function zn(e,t,n,r){const i=`${t}
s(e...
  function c (line 1) | function c(e){throw new Error(e)}
  function u (line 1) | function u(e,n){const i={};for(const r of n)t.hasOwnProperty(e,r)&&(i[r]...
  function f (line 1) | function f(e,t){const n={...e};for(const e of t)delete n[e];return n}
  function d (line 1) | function d(e){if(t.isNumber(e))return e;const n=t.isString(e)?e:X(e);if(...
  function m (line 1) | function m(e){return!1===e||null===e}
  function p (line 1) | function p(e,t){return e.includes(t)}
  function g (line 1) | function g(e,t){let n=0;for(const[i,r]of e.entries())if(t(r,i,n++))retur...
  function h (line 1) | function h(e,t){let n=0;for(const[i,r]of e.entries())if(!t(r,i,n++))retu...
  function y (line 1) | function y(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;iC(...
  function N (line 1) | function N(e,t){if(0===t.length)return!0;const n=t.shift();return n in e...
  function P (line 1) | function P(e){return e.charAt(0).toUpperCase()+e.substr(1)}
  function A (line 1) | function A(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[...
  function j (line 1) | function j(e){return`${arguments.length>1&&void 0!==arguments[1]?argumen...
  function T (line 1) | function T(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}
  function E (line 1) | function E(e){return`${t.splitAccessPath(e).map(T).join("\\.")}`}
  function M (line 1) | function M(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[...
  function L (line 1) | function L(e){return`${t.splitAccessPath(e).join(".")}`}
  function q (line 1) | function q(e){return e?t.splitAccessPath(e).length:0}
  function U (line 1) | function U(){for(var e=arguments.length,t=new Array(e),n=0;n3&&void 0!==arguments[3]?argum...
  function Pn (line 1) | function Pn(e,t,n){let{vgChannel:i}=arguments.length>3&&void 0!==argumen...
  function An (line 1) | function An(e,t,n){return jn(e,Cn(t),n)}
  function jn (line 1) | function jn(e,n,i){let r;n=t.array(n);for(const t of n){const n=i[t];n&&...
  function Tn (line 1) | function Tn(e,n){return t.array(e).reduce(((e,t)=>(e.field.push(ta(t,n))...
  function En (line 1) | function En(e,t){const n=[...e];return t.forEach((e=>{for(const t of n)i...
  function Mn (line 1) | function Mn(e,n){return Y(e,n)||!n?e:e?[...t.array(e),...t.array(n)].joi...
  function Ln (line 1) | function Ln(e,t){const n=e.value,i=t.value;if(null==n||null===i)return{e...
  function qn (line 1) | function qn(e){return`Invalid specification ${X(e)}. Make sure the speci...
  function Rn (line 1) | function Rn(e){return`${"width"==e?"Width":"Height"} "container" only wo...
  function Wn (line 1) | function Wn(e){return`${"width"==e?"Width":"Height"} "container" only wo...
  function Bn (line 1) | function Bn(e){return e?`Dropping "fit-${e}" because spec has discrete $...
  function In (line 1) | function In(e){return`Unknown field for ${e}. Cannot calculate view size.`}
  function Hn (line 1) | function Hn(e){return`Cannot project a selection on encoding channel "${...
  function Vn (line 1) | function Vn(e,t){return`Cannot project a selection on encoding channel "...
  function Gn (line 1) | function Gn(e){return`Selection not supported for ${e} yet.`}
  function Xn (line 1) | function Xn(e){return`The "columns" property cannot be used when "${e}" ...
  function Qn (line 1) | function Qn(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a ...
  function Jn (line 1) | function Jn(e){return`Config.customFormatTypes is not true, thus custom ...
  function Kn (line 1) | function Kn(e){return`${e}Offset dropped because ${e} is continuous`}
  function Zn (line 1) | function Zn(e){return`Invalid field type "${e}".`}
  function ei (line 1) | function ei(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as ...
  function ti (line 1) | function ti(e,t){return`Dropping ${X(e)} from channel "${t}" since it do...
  function ni (line 1) | function ni(e,t,n){return`${e} dropped as it is incompatible with "${t}".`}
  function ii (line 1) | function ii(e){return`${e} encoding should be discrete (ordinal / nomina...
  function ri (line 1) | function ri(e){return`${e} encoding should be discrete (ordinal / nomina...
  function oi (line 1) | function oi(e,t){return`Using discrete channel "${e}" to encode "${t}" f...
  function ai (line 1) | function ai(e){return`Using unaggregated domain with raw field has no ef...
  function si (line 1) | function si(e){return`Unaggregated domain not applicable for "${e}" sinc...
  function li (line 1) | function li(e){return`Unaggregated domain is currently unsupported for l...
  function ci (line 1) | function ci(e,t,n){return`${n}-scale's "${t}" is dropped as it does not ...
  function ui (line 1) | function ui(e){return`The step for "${e}" is dropped because the ${"widt...
  function di (line 1) | function di(e,t){return`Invalid ${e}: ${X(t)}.`}
  function mi (line 1) | function mi(e){return`1D error band does not support ${e}.`}
  function pi (line 1) | function pi(e){return`Channel ${e} is required for "binned" bin.`}
  function yi (line 1) | function yi(){hi.warn(...arguments)}
  function vi (line 1) | function vi(e){if(e&&t.isObject(e))for(const t of Fi)if(t in e)return!0;...
  function ki (line 1) | function ki(e,n){const i=[];if(n&&void 0!==e.day&&D(e).length>1&&(yi(fun...
  function Si (line 1) | function Si(e){const t=ki(e,!0).join(", ");return e.utc?`utc(${t})`:`dat...
  function zi (line 1) | function zi(e){return t.isObject(e)?e.binned:Oi(e)}
  function Oi (line 1) | function Oi(e){return e&&e.startsWith("binned")}
  function _i (line 1) | function _i(e){return e.startsWith("utc")}
  function Ni (line 1) | function Ni(e){return Fi.filter((t=>Ai(e,t)))}
  function Pi (line 1) | function Pi(e){const t=Ni(e);return t[t.length-1]}
  function Ai (line 1) | function Ai(e,t){const n=e.indexOf(t);return!(n<0)&&(!(n>0&&"seconds"===...
  function ji (line 1) | function ji(e,t){let{end:n}=arguments.length>2&&void 0!==arguments[2]?ar...
  function Ti (line 1) | function Ti(e){if(!e)return;return`timeUnitSpecifier(${X(Ni(e))}, ${X(Ci...
  function Ei (line 1) | function Ei(e){if(!e)return;let n;return t.isString(e)?n=Oi(e)?{unit:e.s...
  function Mi (line 1) | function Mi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function qi (line 1) | function qi(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Ui (line 1) | function Ui(e){return!!e?.field&&void 0!==e.equal}
  function Ri (line 1) | function Ri(e){return!!e?.field&&void 0!==e.lt}
  function Wi (line 1) | function Wi(e){return!!e?.field&&void 0!==e.lte}
  function Bi (line 1) | function Bi(e){return!!e?.field&&void 0!==e.gt}
  function Ii (line 1) | function Ii(e){return!!e?.field&&void 0!==e.gte}
  function Hi (line 1) | function Hi(e){if(e?.field){if(t.isArray(e.range)&&2===e.range.length)re...
  function Vi (line 1) | function Vi(e){return!!e?.field&&(t.isArray(e.oneOf)||t.isArray(e.in))}
  function Gi (line 1) | function Gi(e){return Vi(e)||Ui(e)||Hi(e)||Ri(e)||Bi(e)||Wi(e)||Ii(e)}
  function Yi (line 1) | function Yi(e,t){return va(e,{timeUnit:t,wrapTime:!0})}
  function Xi (line 1) | function Xi(e){let t=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function Qi (line 1) | function Qi(e){return!(arguments.length>1&&void 0!==arguments[1])||argum...
  function Ji (line 1) | function Ji(e){return Gi(e)&&e.timeUnit?{...e,timeUnit:Ei(e.timeUnit)}:e}
  function Ki (line 1) | function Ki(e){return"quantitative"===e||"temporal"===e}
  function Zi (line 1) | function Zi(e){return"ordinal"===e||"nominal"===e}
  function sr (line 1) | function sr(e,t){const n=ar[e],i=ar[t];return n===i||"ordinal-position"=...
  function cr (line 1) | function cr(e){return lr[e]}
  function dr (line 1) | function dr(e){return ur.has(e)}
  function hr (line 1) | function hr(e){return gr.has(e)}
  function yr (line 1) | function yr(e){return pr.has(e)}
  function vr (line 1) | function vr(e){return fr.has(e)}
  function br (line 1) | function br(e){return mr.has(e)}
  function xr (line 1) | function xr(e){return e?.param}
  function _r (line 1) | function _r(e,t){switch(t){case"type":case"domain":case"reverse":case"ra...
  function Cr (line 1) | function Cr(e,t){switch(t){case"interpolate":case"scheme":case"domainMid...
  function Nr (line 1) | function Nr(e){const{channel:t,channelDef:n,markDef:i,scale:r,config:o}=...
  function Pr (line 1) | function Pr(e,t){return{test:Ar(e,!0),..."y"===tt(t)?{field:{group:"heig...
  function Ar (line 1) | function Ar(e){let n=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function jr (line 1) | function jr(e,t,n,i){const r={};if(t&&(r.scale=t),Bo(e)){const{datum:t}=...
  function Tr (line 1) | function Tr(e){let{scaleName:t,fieldOrDatumDef:n,fieldOrDatumDef2:i,offs...
  function Er (line 1) | function Er(e){let{channel:n,channelDef:i,channel2Def:r,markDef:o,config...
  function Mr (line 1) | function Mr(e,t){return p(["x","x2"],e)&&"width"===t?{field:{group:"widt...
  function Lr (line 1) | function Lr(e){return e&&"number"!==e&&"time"!==e}
  function qr (line 1) | function qr(e,t,n){return`${e}(${t}${n?`, ${X(n)}`:""})`}
  function Rr (line 1) | function Rr(e){let{fieldOrDatumDef:n,format:i,formatType:r,expr:o,normal...
  function Wr (line 1) | function Wr(e,t,n){return Ro(e)?n?`${ta(e,{expr:t,suffix:"end"})}-${ta(e...
  function Br (line 1) | function Br(e){let{fieldOrDatumDef:t,format:n,formatType:i,expr:r,normal...
  function Ir (line 1) | function Ir(e,n,i,r,o,a){if(!t.isString(r)||!Lr(r)){if(void 0===i&&void ...
  function Hr (line 1) | function Hr(e,t,n){return e&&(yn(e)||"number"===e||"time"===e)?e:ya(t)&&...
  function Vr (line 1) | function Vr(e){let{type:n,specifiedFormat:i,config:r,normalizeStack:o}=e...
  function Gr (line 1) | function Gr(e,t){return`format(${e}, "${t||""}")`}
  function Yr (line 1) | function Yr(e,n,i,r){return Lr(i)?qr(i,e,n):Gr(e,(t.isString(n)?n:void 0...
  function Xr (line 1) | function Xr(e,t,n,i,r){if(void 0===n&&void 0===i&&r.customFormatTypes&&r...
  function fo (line 1) | function fo(e){return["line","area","trail"].includes(e)}
  function mo (line 1) | function mo(e){return["rect","bar","image","arc"].includes(e)}
  function go (line 1) | function go(e){return e.type}
  function bo (line 1) | function bo(e){return e&&null!=e.band}
  function Do (line 1) | function Do(e){return e in So}
  function Fo (line 1) | function Fo(e){return!!e?.encoding}
  function zo (line 1) | function zo(e){return e&&("count"===e.op||!!e.field)}
  function Oo (line 1) | function Oo(e){return e&&t.isArray(e)}
  function _o (line 1) | function _o(e){return"row"in e||"column"in e}
  function Co (line 1) | function Co(e){return!!e&&"header"in e}
  function No (line 1) | function No(e){return"facet"in e}
  function Po (line 1) | function Po(e){const{field:t,timeUnit:n,bin:i,aggregate:r}=e;return{...n...
  function Ao (line 1) | function Ao(e){return"sort"in e}
  function jo (line 1) | function jo(e){let{fieldDef:t,fieldDef2:n,markDef:i,config:r}=e;if(Go(t)...
  function To (line 1) | function To(e){let{channel:t,fieldDef:n,fieldDef2:i,markDef:r,config:o,s...
  function Eo (line 1) | function Eo(e,t,n,i){return!!(ln(e.bin)||e.timeUnit&&Yo(e)&&"temporal"==...
  function Mo (line 1) | function Mo(e){return e&&!!e.sort&&!e.field}
  function Lo (line 1) | function Lo(e){return e&&"condition"in e}
  function qo (line 1) | function qo(e){const n=e?.condition;return!!n&&!t.isArray(n)&&Ro(n)}
  function Uo (line 1) | function Uo(e){const n=e?.condition;return!!n&&!t.isArray(n)&&Go(n)}
  function Ro (line 1) | function Ro(e){return e&&(!!e.field||"count"===e.aggregate)}
  function Wo (line 1) | function Wo(e){return e?.type}
  function Bo (line 1) | function Bo(e){return e&&"datum"in e}
  function Io (line 1) | function Io(e){return Yo(e)&&!na(e)||Vo(e)}
  function Ho (line 1) | function Ho(e){return Yo(e)&&"quantitative"===e.type&&!e.bin||Vo(e)}
  function Vo (line 1) | function Vo(e){return Bo(e)&&t.isNumber(e.datum)}
  function Go (line 1) | function Go(e){return Ro(e)||Bo(e)}
  function Yo (line 1) | function Yo(e){return e&&("field"in e||"count"===e.aggregate)&&"type"in e}
  function Xo (line 1) | function Xo(e){return e&&"value"in e&&"value"in e}
  function Qo (line 1) | function Qo(e){return e&&("scale"in e||"sort"in e)}
  function Jo (line 1) | function Jo(e){return e&&("axis"in e||"stack"in e||"impute"in e)}
  function Ko (line 1) | function Ko(e){return e&&"legend"in e}
  function Zo (line 1) | function Zo(e){return e&&("format"in e||"formatType"in e)}
  function ea (line 1) | function ea(e){return f(e,["legend","axis","header","scale"])}
  function ta (line 1) | function ta(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function na (line 1) | function na(e){switch(e.type){case"nominal":case"ordinal":case"geojson":...
  function oa (line 1) | function oa(e){ra=e}
  function aa (line 1) | function aa(e,t,n){let{allowDisabling:i,includeDefault:r=!0}=n;const o=s...
  function sa (line 1) | function sa(e){return Jo(e)&&e.axis?e.axis:Ko(e)&&e.legend?e.legend:Co(e...
  function la (line 1) | function la(e,t){return ra(e,t)}
  function ca (line 1) | function ca(e){if(Zo(e)){const{format:t,formatType:n}=e;return{format:t,...
  function ua (line 1) | function ua(e){return Ro(e)?e:qo(e)?e.condition:void 0}
  function fa (line 1) | function fa(e){return Go(e)?e:Uo(e)?e.condition:void 0}
  function da (line 1) | function da(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function ma (line 1) | function ma(e,n,i,r){if(Zo(e)){const{format:t,formatType:o,...a}=e;if(Lr...
  function pa (line 1) | function pa(e,n){let{compositeMark:i=!1}=arguments.length>2&&void 0!==ar...
  function ga (line 1) | function ga(e,n){return t.isBoolean(e)?{maxbins:dn(n)}:"binned"===e?{bin...
  function ya (line 1) | function ya(e){const{formatType:t}=ca(e);return"time"===t||!t&&((n=e)&&(...
  function va (line 1) | function va(e,n){let{timeUnit:i,type:r,wrapTime:o,undefinedIfExprNotRequ...
  function ba (line 1) | function ba(e,t){const{type:n}=e;return t.map((t=>{const i=va(t,{timeUni...
  function xa (line 1) | function xa(e,t){return ln(e.bin)?Ht(t)&&["ordinal","nominal"].includes(...
  function wa (line 1) | function wa(e){return e?.condition}
  function za (line 1) | function za(e){return!!Fa[e]}
  function _a (line 1) | function _a(e){return"mark"in e}
  class Ca (line 1) | class Ca{constructor(e,t){this.name=e,this.run=t}hasMatchingType(e){retu...
    method constructor (line 1) | constructor(e,t){this.name=e,this.run=t}
    method hasMatchingType (line 1) | hasMatchingType(e){return!!_a(e)&&(go(t=e.mark)?t.type:t)===this.name;...
  function Na (line 1) | function Na(e,n){const i=e&&e[n];return!!i&&(t.isArray(i)?g(i,(e=>!!e.fi...
  function Pa (line 1) | function Pa(e,n){const i=e&&e[n];return!!i&&(t.isArray(i)?g(i,(e=>!!e.fi...
  function Aa (line 1) | function Aa(e,t){if(zt(t)){const n=e[t];if((Ro(n)||Bo(n))&&(Zi(n.type)||...
  function ja (line 1) | function ja(e){return g(Be,(n=>{if(Na(e,n)){const i=e[n];if(t.isArray(i)...
  function Ta (line 1) | function Ta(e,t){const n=[],i=[],r=[],o=[],a={};return La(e,((s,l)=>{if(...
  function Ea (line 1) | function Ea(e,t,n){const i=Vt(t,n);if(!i)return!1;if("binned"===i){const...
  function Ma (line 1) | function Ma(e,t){const n={};for(const i of D(e)){const r=da(e[i],i,t,{co...
  function La (line 1) | function La(e,n,i){if(e)for(const r of D(e)){const o=e[r];if(t.isArray(o...
  function qa (line 1) | function qa(e,n){return D(n).reduce(((i,r)=>{switch(r){case Z:case ee:ca...
  function Ua (line 1) | function Ua(e,n,i){let r=!(arguments.length>3&&void 0!==arguments[3])||a...
  function Ra (line 1) | function Ra(e){const{title:t,field:n}=e;return U(t,n)}
  function Wa (line 1) | function Wa(e,n,i,r,o){const{scale:a,axis:s}=i;return l=>{let{partName:c...
  function Ba (line 1) | function Ba(e,n,i,r){const{clip:o,color:a,opacity:s}=e,l=e.type;return e...
  function Ia (line 1) | function Ia(e,t,n){const{encoding:i}=e,r="vertical"===t?"y":"x",o=i[r],a...
  function Ha (line 1) | function Ha(e,t){if(e?.aggregate){const{aggregate:n,...i}=e;return n!==t...
  function Va (line 1) | function Va(e,t){const{mark:n,encoding:i}=e,{x:r,y:o}=i;if(go(n)&&n.orie...
  function Xa (line 1) | function Xa(e){return t.isNumber(e)?"tukey":e}
  function Qa (line 1) | function Qa(e,n){let{config:i}=n;e={...e,encoding:Ma(e.encoding,i)};cons...
  function Ja (line 1) | function Ja(e){const t=L(e);return[{op:"q1",field:e,as:`lower_box_${t}`}...
  function es (line 1) | function es(e,t){let{config:n}=t;e={...e,encoding:Ma(e.encoding,n)};cons...
  function ts (line 1) | function ts(e,t){const{encoding:n}=e;if(function(e){return(Go(e.x)||Go(e...
  function ns (line 1) | function ns(e,t,n){const{mark:i,encoding:r,params:o,projection:a,...s}=e...
  function is (line 1) | function is(e,t,n){return`${P(e)} ${n} ${t}`}
  function as (line 1) | function as(e,t){let{config:n}=t;e={...e,encoding:Ma(e.encoding,n)};cons...
  function ls (line 1) | function ls(e,t,n){const i=new Ca(e,t);ss[e]={normalizer:i,parts:n}}
  function vs (line 1) | function vs(e){return"legend"===e||!!e?.legend}
  function bs (line 1) | function bs(e){return vs(e)&&t.isObject(e)}
  function xs (line 1) | function xs(e){return!!e?.select}
  function $s (line 1) | function $s(e){const t=[];for(const n of e||[]){if(xs(n))continue;const{...
  function ws (line 1) | function ws(e){return"concat"in e}
  function ks (line 1) | function ks(e){return"vconcat"in e}
  function Ss (line 1) | function Ss(e){return"hconcat"in e}
  function Ds (line 1) | function Ds(e){let{step:t,offsetIsDiscrete:n}=e;return n?t.for??"offset"...
  function Fs (line 1) | function Fs(e){return t.isObject(e)&&void 0!==e.step}
  function zs (line 1) | function zs(e){return e.view||e.width||e.height}
  function _s (line 1) | function _s(e,t){return e[t]??e["width"===t?"continuousWidth":"continuou...
  function Cs (line 1) | function Cs(e,t){const n=Ns(e,t);return Fs(n)?n.step:Ps}
  function Ns (line 1) | function Ns(e,t){return U(e[t]??e["width"===t?"discreteWidth":"discreteH...
  function Ms (line 1) | function Ms(e){const t=D(e||{}),n={};for(const i of t){const t=e[i];n[i]...
  function qs (line 1) | function qs(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[...
  function Bs (line 1) | function Bs(e){e=l(e);for(const t of Rs)delete e[t];if(e.axis)for(const ...
  function Is (line 1) | function Is(e,t,n,i){"view"===t&&(n="cell");const r={...e[t],...e.style[...
  function Hs (line 1) | function Hs(e){return"layer"in e}
  class Vs (line 1) | class Vs{map(e,t){return No(e)?this.mapFacet(e,t):function(e){return"rep...
    method map (line 1) | map(e,t){return No(e)?this.mapFacet(e,t):function(e){return"repeat"in ...
    method mapLayerOrUnit (line 1) | mapLayerOrUnit(e,t){if(Hs(e))return this.mapLayer(e,t);if(_a(e))return...
    method mapLayer (line 1) | mapLayer(e,t){return{...e,layer:e.layer.map((e=>this.mapLayerOrUnit(e,...
    method mapHConcat (line 1) | mapHConcat(e,t){return{...e,hconcat:e.hconcat.map((e=>this.map(e,t)))}}
    method mapVConcat (line 1) | mapVConcat(e,t){return{...e,vconcat:e.vconcat.map((e=>this.map(e,t)))}}
    method mapConcat (line 1) | mapConcat(e,t){const{concat:n,...i}=e;return{...i,concat:n.map((e=>thi...
    method mapFacet (line 1) | mapFacet(e,t){return{...e,spec:this.map(e.spec,t)}}
    method mapRepeat (line 1) | mapRepeat(e,t){return{...e,spec:this.map(e.spec,t)}}
  function Qs (line 1) | function Qs(e){return Ro(e)&&"quantitative"===Wo(e)&&!e.bin}
  function Js (line 1) | function Js(e,t,n){let{orient:i,type:r}=n;const o="x"===t?"y":"radius",a...
  function Ks (line 1) | function Ks(e,n){const i=go(e)?e:{type:e},r=i.type;if(!Ys.has(r))return ...
  function Zs (line 1) | function Zs(e,t,n){const i=pn(e),r=Nn("orient",i,n);if(i.orient=function...
  function el (line 1) | function el(e){const{point:t,line:n,...i}=e;return D(i).length>1?i:i.type}
  function tl (line 1) | function tl(e){for(const t of["line","area","rule","trail"])e[t]&&(e={.....
  function nl (line 1) | function nl(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  function il (line 1) | function il(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  class rl (line 1) | class rl{name="path-overlay";hasMatchingType(e,t){if(_a(e)){const{mark:n...
    method hasMatchingType (line 1) | hasMatchingType(e,t){if(_a(e)){const{mark:n,encoding:i}=e,r=go(n)?n:{t...
    method run (line 1) | run(e,t,n){const{config:i}=t,{params:r,projection:o,mark:a,name:s,enco...
  function ol (line 1) | function ol(e,t){return t?_o(e)?fl(e,t):ll(e,t):e}
  function al (line 1) | function al(e,t){return t?fl(e,t):e}
  function sl (line 1) | function sl(e,n,i){const r=n[e];return(o=r)&&!t.isString(o)&&"repeat"in ...
  function ll (line 1) | function ll(e,t){if(void 0!==(e=sl("field",e,t))){if(null===e)return nul...
  function cl (line 1) | function cl(e,t){if(Ro(e))return ll(e,t);{const n=sl("datum",e,t);return...
  function ul (line 1) | function ul(e,t){if(!Go(e)){if(Uo(e)){const n=cl(e.condition,t);if(n)ret...
  function fl (line 1) | function fl(e,n){const i={};for(const r in e)if(t.hasOwnProperty(e,r)){c...
  class dl (line 1) | class dl{name="RuleForRangedLine";hasMatchingType(e){if(_a(e)){const{enc...
    method hasMatchingType (line 1) | hasMatchingType(e){if(_a(e)){const{encoding:t,mark:n}=e;if("line"===n|...
    method run (line 1) | run(e,n,i){const{encoding:r,mark:o}=e;var a,s;return yi((a=!!r.x2,s=!!...
  function ml (line 1) | function ml(e){let{parentEncoding:n,encoding:i={},layer:r}=e,o={};if(n){...
  function pl (line 1) | function pl(e){const{parentProjection:t,projection:n}=e;return t&&n&&yi(...
  function gl (line 1) | function gl(e){return"filter"in e}
  function hl (line 1) | function hl(e){return"lookup"in e}
  function yl (line 1) | function yl(e){return"pivot"in e}
  function vl (line 1) | function vl(e){return"density"in e}
  function bl (line 1) | function bl(e){return"quantile"in e}
  function xl (line 1) | function xl(e){return"regression"in e}
  function $l (line 1) | function $l(e){return"loess"in e}
  function wl (line 1) | function wl(e){return"sample"in e}
  function kl (line 1) | function kl(e){return"window"in e}
  function Sl (line 1) | function Sl(e){return"joinaggregate"in e}
  function Dl (line 1) | function Dl(e){return"flatten"in e}
  function Fl (line 1) | function Fl(e){return"calculate"in e}
  function zl (line 1) | function zl(e){return"bin"in e}
  function Ol (line 1) | function Ol(e){return"impute"in e}
  function _l (line 1) | function _l(e){return"timeUnit"in e}
  function Cl (line 1) | function Cl(e){return"aggregate"in e}
  function Nl (line 1) | function Nl(e){return"stack"in e}
  function Pl (line 1) | function Pl(e){return"fold"in e}
  function Al (line 1) | function Al(e){return"extent"in e&&!("density"in e)&&!("regression"in e)}
  function jl (line 1) | function jl(e,t){const{transform:n,...i}=e;if(n){return{...i,transform:n...
  function Tl (line 1) | function Tl(e,n){const i=l(e);if(Ro(i)&&un(i.bin)&&(i.bin=El(i.bin)),Qo(...
  function El (line 1) | function El(e){const t=e.extent;if(t?.selection){const{selection:n,...i}...
  function Ml (line 1) | function Ml(e,t){const n=e=>s(e,(e=>{const n={param:e,empty:t.emptySelec...
  class Ll (line 1) | class Ll extends Vs{map(e,t){const n=t.selections??[];if(e.params&&!_a(e...
    method map (line 1) | map(e,t){const n=t.selections??[];if(e.params&&!_a(e)){const t=[];for(...
    method mapUnit (line 1) | mapUnit(e,n){const i=n.selections;if(!i||!i.length)return e;const r=(n...
  function ql (line 1) | function ql(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}
  function Ul (line 1) | function Ul(e,t){void 0===t&&(t=qs(e.config));const n=function(e){let t=...
  method map (line 1) | map(e,t){if(_a(e)){const n=Na(e.encoding,Q),i=Na(e.encoding,J),r=Na(e.en...
  method mapUnit (line 1) | mapUnit(e,t){const{parentEncoding:n,parentProjection:i}=t,r=al(e.encodin...
  method mapRepeat (line 1) | mapRepeat(e,n){return function(e){return!t.isArray(e.repeat)&&e.repeat.l...
  method mapLayerRepeat (line 1) | mapLayerRepeat(e,t){const{repeat:n,spec:i,...r}=e,{row:o,column:a,layer:...
  method mapNonLayerRepeat (line 1) | mapNonLayerRepeat(e,n){const{repeat:i,spec:r,data:o,...a}=e;!t.isArray(i...
  method mapFacet (line 1) | mapFacet(e,t){const{facet:n}=e;return _o(n)&&e.columns&&(e=f(e,["columns...
  method mapUnitWithParentEncodingOrProjection (line 1) | mapUnitWithParentEncodingOrProjection(e,t){const{encoding:n,projection:i...
  method mapFacetedUnit (line 1) | mapFacetedUnit(e,t){const{row:n,column:i,facet:r,...o}=e.encoding,{mark:...
  method getFacetMappingAndLayout (line 1) | getFacetMappingAndLayout(e,t){const{row:n,column:i,facet:r}=e;if(n||i){r...
  method mapLayer (line 1) | mapLayer(e,t){let{parentEncoding:n,parentProjection:i,...r}=t;const{enco...
  method map (line 1) | map(e,t){return t.emptySelections??={},t.selectionPredicates??={},e=jl(e...
  method mapLayerOrUnit (line 1) | mapLayerOrUnit(e,t){if((e=jl(e,t)).encoding){const n={};for(const[i,r]of...
  method mapUnit (line 1) | mapUnit(e,t){const{selection:n,...i}=e;return n?{...i,params:z(n).map((e...
  function Il (line 1) | function Il(e){return t.isString(e)?{type:e}:e??{}}
  function Vl (line 1) | function Vl(e,t){const n={};for(const t of Hl)e&&void 0!==e[t]&&(n[t]=Sn...
  class Gl (line 1) | class Gl{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?a...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){return new Gl(l(this.explicit),l(this.implicit))}
    method combine (line 1) | combine(){return{...this.explicit,...this.implicit}}
    method get (line 1) | get(e){return U(this.explicit[e],this.implicit[e])}
    method getWithExplicit (line 1) | getWithExplicit(e){return void 0!==this.explicit[e]?{explicit:!0,value...
    method setWithExplicit (line 1) | setWithExplicit(e,t){let{value:n,explicit:i}=t;void 0!==n&&this.set(e,...
    method set (line 1) | set(e,t,n){return delete this[n?"implicit":"explicit"][e],this[n?"expl...
    method copyKeyFromSplit (line 1) | copyKeyFromSplit(e,t){let{explicit:n,implicit:i}=t;void 0!==n[e]?this....
    method copyKeyFromObject (line 1) | copyKeyFromObject(e,t){void 0!==t[e]&&this.set(e,t[e],!0)}
    method copyAll (line 1) | copyAll(e){for(const t of D(e.combine())){const n=e.getWithExplicit(t)...
  function Yl (line 1) | function Yl(e){return{explicit:!0,value:e}}
  function Xl (line 1) | function Xl(e){return{explicit:!1,value:e}}
  function Ql (line 1) | function Ql(e){return(t,n,i,r)=>{const o=e(t.value,n.value);return o>0?t...
  function Jl (line 1) | function Jl(e,t,n,i){return e.explicit&&t.explicit&&yi(function(e,t,n,i)...
  function Kl (line 1) | function Kl(e,t,n,i){let r=arguments.length>4&&void 0!==arguments[4]?arg...
  class Zl (line 1) | class Zl extends Gl{constructor(){let e=arguments.length>0&&void 0!==arg...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){const e=super.clone();return e.parseNothing=this.parseNothing,e}
  function ec (line 1) | function ec(e){return"url"in e}
  function tc (line 1) | function tc(e){return"values"in e}
  function nc (line 1) | function nc(e){return"name"in e&&!ec(e)&&!tc(e)&&!ic(e)}
  function ic (line 1) | function ic(e){return e&&(rc(e)||oc(e)||ac(e))}
  function rc (line 1) | function rc(e){return"sequence"in e}
  function oc (line 1) | function oc(e){return"sphere"in e}
  function ac (line 1) | function ac(e){return"graticule"in e}
  function lc (line 1) | function lc(e){const{signals:t,hasLegend:n,index:i,...r}=e;return r.fiel...
  function cc (line 1) | function cc(e){let n=!(arguments.length>1&&void 0!==arguments[1])||argum...
  function uc (line 1) | function uc(e,n){for(const i of F(e.component.selection??{})){const r=i....
  function fc (line 1) | function fc(e,n){if(e.component.selection&&D(e.component.selection).leng...
  function dc (line 1) | function dc(e,t){for(const n of F(e.component.selection??{}))for(const i...
  function mc (line 1) | function mc(e){return e.map((e=>(e.on&&!e.on.length&&delete e.on,e)))}
  class pc (line 1) | class pc{_children=[];_parent=null;constructor(e,t){this.debugName=t,e&&...
    method constructor (line 1) | constructor(e,t){this.debugName=t,e&&(this.parent=e)}
    method clone (line 1) | clone(){throw new Error("Cannot clone node")}
    method parent (line 1) | get parent(){return this._parent}
    method parent (line 1) | set parent(e){this._parent=e,e&&e.addChild(this)}
    method children (line 1) | get children(){return this._children}
    method numChildren (line 1) | numChildren(){return this._children.length}
    method addChild (line 1) | addChild(e,t){this._children.includes(e)?yi("Attempt to add the same c...
    method removeChild (line 1) | removeChild(e){const t=this._children.indexOf(e);return this._children...
    method remove (line 1) | remove(){let e=this._parent.removeChild(this);for(const t of this._chi...
    method insertAsParentOf (line 1) | insertAsParentOf(e){const t=e.parent;t.removeChild(this),this.parent=t...
    method swapWithParent (line 1) | swapWithParent(){const e=this._parent,t=e.parent;for(const t of this._...
  class gc (line 1) | class gc extends pc{clone(){const e=new this.constructor;return e.debugN...
    method clone (line 1) | clone(){const e=new this.constructor;return e.debugName=`clone_${this....
    method constructor (line 1) | constructor(e,t,n,i){super(e,t),this.type=n,this.refCounts=i,this._sou...
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return void 0===this._hash&&(this._hash=`Output ${W()}`),this._...
    method getSource (line 1) | getSource(){return this.refCounts[this._name]++,this._source}
    method isRequired (line 1) | isRequired(){return!!this.refCounts[this._name]}
    method setSource (line 1) | setSource(e){this._source=e}
  function hc (line 1) | function hc(e){return void 0!==e.as}
  function yc (line 1) | function yc(e){return`${e}_end`}
  class vc (line 1) | class vc extends pc{clone(){return new vc(null,l(this.timeUnits))}constr...
    method clone (line 1) | clone(){return new vc(null,l(this.timeUnits))}
    method constructor (line 1) | constructor(e,t){super(e),this.timeUnits=t}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.reduceFieldDef(((e,n,i)=>{const...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){const{timeUnit:n,...i}={...t},r={...i,ti...
    method merge (line 1) | merge(e){this.timeUnits={...this.timeUnits};for(const t in e.timeUnits...
    method removeFormulas (line 1) | removeFormulas(e){const t={};for(const[n,i]of z(this.timeUnits)){const...
    method producedFields (line 1) | producedFields(){return new Set(F(this.timeUnits).map((e=>hc(e)?e.as:y...
    method dependentFields (line 1) | dependentFields(){return new Set(F(this.timeUnits).map((e=>e.field)))}
    method hash (line 1) | hash(){return`TimeUnit ${d(this.timeUnits)}`}
    method assemble (line 1) | assemble(){const e=[];for(const t of F(this.timeUnits)){const{rectBand...
  function $c (line 1) | function $c(e){let{timeUnit:t,field:n,reverse:i}=e;const{unit:r,utc:o}=t...
  function wc (line 1) | function wc(e,t,n){let[i,r]=e;if(void 0!==t&&.5!==t){const e=`datum['${i...
  function kc (line 1) | function kc(e,t){let[n,i]=e;return`${1-t} * ${n} + ${t} * ${i}`}
  class Dc (line 1) | class Dc{constructor(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments...
  function Lc (line 1) | function Lc(e,t){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function qc (line 1) | function qc(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Uc (line 1) | function Uc(e,n,i){let{reactiveGeom:r}=arguments.length>3&&void 0!==argu...
  function Rc (line 1) | function Rc(e,t,n){let{reactiveGeom:i}=arguments.length>3&&void 0!==argu...
  function Wc (line 1) | function Wc(e){const{markDef:t,config:n}=e,i=Nn("aria",t,n);return!1===i...
  function Bc (line 1) | function Bc(e){const{mark:t,markDef:n,config:i}=e;if(!1===i.aria)return{...
  function Ic (line 1) | function Ic(e){const{encoding:t,markDef:n,config:i,stack:r}=e,o=t.descri...
  function Hc (line 1) | function Hc(e,t){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Vc (line 1) | function Vc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments...
  function Gc (line 1) | function Gc(e){const{encoding:t,mark:n}=e,i=t.order;return!fo(n)&&Xo(i)?...
  function Yc (line 1) | function Yc(e){let{channel:t,markDef:n,encoding:i={},model:r,bandPositio...
  function Xc (line 1) | function Xc(e,t,n){let{defaultPos:i,vgChannel:r}=n;const{encoding:o,mark...
  function Qc (line 1) | function Qc(e){let{model:t,defaultPos:n,channel:i,scaleName:r,scale:o}=e...
  function Zc (line 1) | function Zc(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?argum...
  function eu (line 1) | function eu(e,t,n){let{defaultPos:i,defaultPos2:r,range:o}=n;return o?tu...
  function tu (line 1) | function tu(e,t,n){let{defaultPos:i,defaultPos2:r}=n;const{markDef:o,con...
  function nu (line 1) | function nu(e,t){const n=rt(e),i=nt(e);if(void 0!==t[i])return{[i]:Mr(e,...
  function iu (line 1) | function iu(e,n){const{config:i,encoding:r,markDef:o}=e,a=o.type,s=it(n)...
  function ru (line 1) | function ru(e,n,i,r,o,a,s){if(bo(o)){if(!i)return{mult:o.band,field:{gro...
  function ou (line 1) | function ou(e,t,n,i,r,o,a){if(Ae(e))return 0;const s="x"===e||"y2"===e,l...
  function au (line 1) | function au(e){let{fieldDef:t,scaleName:n,bandPosition:i,offset:r,useRec...
  function lu (line 1) | function lu(e,t){const{fill:n,stroke:i}="include"===t.color?Vc(e):{};ret...
  function cu (line 1) | function cu(e,n,i){const{config:r,mark:o,markDef:a}=e;if("hide"===Nn("in...
  function uu (line 1) | function uu(e,t){return xn.reduce(((n,i)=>(su.has(i)||void 0===e[i]||"ig...
  function fu (line 1) | function fu(e){const{config:t,markDef:n}=e;if(Nn("invalid",n,t)){const t...
  function du (line 1) | function du(e,t){if(void 0!==t)return{[e]:Fn(t)}}
  function i (line 1) | function i(e,i){-1!==e&&n[e].on&&n[e].on.push({events:t.clear,update:i})}
  function ku (line 1) | function ku(e,t,n,i,r){const o=t.name,a=o+xu,s=o+$u,l=n.channel,c=zc.def...
  function zu (line 1) | function zu(e,t,n,i,r){const o=t.name,a=n.channel,s=zc.defined(t),l=r.fi...
  function Au (line 1) | function Au(e){let{escape:n}=arguments.length>1&&void 0!==arguments[1]?a...
  function ju (line 1) | function ju(e){return F(e.component.selection??{}).reduce(((e,t)=>e||t.p...
  function Tu (line 1) | function Tu(e,n){!t.isString(n.select)&&n.select.on||delete e.events,!t....
  function Eu (line 1) | function Eu(e){const t=[];return"Identifier"===e.type?[e.name]:"Literal"...
  function Mu (line 1) | function Mu(e){return"MemberExpression"===e.object.type?Mu(e.object):"da...
  function Lu (line 1) | function Lu(e){const n=t.parseExpression(e),i=new Set;return n.visit((e=...
  class qu (line 1) | class qu extends pc{clone(){return new qu(null,this.model,l(this.filter)...
    method clone (line 1) | clone(){return new qu(null,this.model,l(this.filter))}
    method constructor (line 1) | constructor(e,t,n){super(e),this.model=t,this.filter=n,this.expr=Wu(th...
    method dependentFields (line 1) | dependentFields(){return this._dependentFields}
    method producedFields (line 1) | producedFields(){return new Set}
    method assemble (line 1) | assemble(){return{type:"filter",expr:this.expr}}
    method hash (line 1) | hash(){return`Filter ${this.expr}`}
  function Uu (line 1) | function Uu(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function Ru (line 1) | function Ru(e,n,i){const r=_(n),o=i.encoding;let a,s=i.field;try{a=e.get...
  function Wu (line 1) | function Wu(e,n,i){return C(n,(n=>t.isString(n)?n:function(e){return e?....
  function Bu (line 1) | function Bu(e,t,n,i){e.encode??={},e.encode[t]??={},e.encode[t].update??...
  function Iu (line 1) | function Iu(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?argum...
  function Hu (line 1) | function Hu(e){const{axes:t}=e.component,n=[];for(const i of Ft)if(t[i])...
  function Vu (line 1) | function Vu(e,t,n,i){return Object.assign.apply(null,[{},...e.map((e=>{i...
  function Gu (line 1) | function Gu(e,n){const i=[{}];for(const r of e){let e=n[r]?.style;if(e){...
  function Yu (line 1) | function Yu(e,t,n){let i=arguments.length>3&&void 0!==arguments[3]?argum...
  function Qu (line 1) | function Qu(e){return`(((${e.signal} % 360) + 360) % 360)`}
  function Ju (line 1) | function Ju(e,t,n,i){if(void 0!==e){if("x"===n){if(yn(e)){const n=Qu(e);...
  function Ku (line 1) | function Ku(e,t,n){if(void 0===e)return;const i="x"===n,r=i?0:90,o=i?"bo...
  function Zu (line 1) | function Zu(e,t){const n="x"===t?"x2":"y2",i=e.fieldDef(t),r=e.fieldDef(...
  class ef (line 1) | class ef extends pc{clone(){return new ef(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new ef(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this._dependentFields=Lu(th...
    method parseAllForSortIndex (line 1) | static parseAllForSortIndex(e,t){return t.forEachFieldDef(((t,n)=>{if(...
    method producedFields (line 1) | producedFields(){return new Set([this.transform.as])}
    method dependentFields (line 1) | dependentFields(){return this._dependentFields}
    method assemble (line 1) | assemble(){return{type:"formula",expr:this.transform.calculate,as:this...
    method hash (line 1) | hash(){return`Calculate ${d(this.transform)}`}
  function tf (line 1) | function tf(e,t,n){return ta(e,{prefix:t,suffix:"sort_index",...n})}
  function nf (line 1) | function nf(e,t){return p(["top","bottom"],t)?"column":p(["left","right"...
  function rf (line 1) | function rf(e,t,n,i){const r="row"===i?n.headerRow:"column"===i?n.header...
  function of (line 1) | function of(e,t,n,i){const r={};for(const o of e){const e=rf(o,t||{},n,i...
  function lf (line 1) | function lf(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e...
  function cf (line 1) | function cf(e,t){switch(arguments.length>2&&void 0!==arguments[2]?argume...
  function uf (line 1) | function uf(e,t){const n=Ju(e,"row"===t?"left":"top","row"===t?"y":"x",!...
  function ff (line 1) | function ff(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r o...
  function df (line 1) | function df(e,n){const{sort:i}=e;return zo(i)?{field:ta(i,{expr:"datum"}...
  function mf (line 1) | function mf(e,t,n){const{format:i,formatType:r,labelAngle:o,labelAnchor:...
  function pf (line 1) | function pf(e,t,n,i,r){if(r){let o=null;const{facetFieldDef:a}=i,s=e.con...
  function hf (line 1) | function hf(e,t){return gf[t][e]}
  function yf (line 1) | function yf(e,t,n,i,r){const o={};for(const a of i){if(!r[a])continue;co...
  function vf (line 1) | function vf(e){return[...bf(e,"width"),...bf(e,"height"),...bf(e,"childW...
  function bf (line 1) | function bf(e,t){const n="width"===t?"x":"y",i=e.component.layoutSize.ge...
  function xf (line 1) | function xf(e,t){const n=`${e}_step`;return yn(t.step)?{name:n,update:t....
  function $f (line 1) | function $f(e,t,n){const i=t.get("type"),r=t.get("padding"),o=U(t.get("p...
  function wf (line 1) | function wf(e){return"childWidth"===e?"width":"childHeight"===e?"height":e}
  function kf (line 1) | function kf(e,t){return D(e).reduce(((n,i)=>{const r=e[i];return{...n,.....
  function Sf (line 1) | function Sf(e,t){if(hm(t))return"theta"===e?"independent":"shared";if(vm...
  function Df (line 1) | function Df(e,t){const n=e.scale[t],i=zt(t)?"axis":"legend";return"indep...
  class zf (line 1) | class zf extends Gl{}
  function _f (line 1) | function _f(e){return Nf(e,((e,t)=>Math.max(e,t.value)))}
  function Cf (line 1) | function Cf(e){return Nf(e,((e,t)=>U(e,t.value)))}
  function Nf (line 1) | function Nf(e,n){return function(e){const n=e?.condition;return!!n&&(t.i...
  function Pf (line 1) | function Pf(e,n,i){const r=n.get("selections");if(!r?.length)return;cons...
  function jf (line 1) | function jf(e){const{legend:t}=e;return U(t.type,function(e){let{channel...
  function Tf (line 1) | function Tf(e){let{legendConfig:t,legendType:n,orient:i,legend:r}=e;retu...
  function Ef (line 1) | function Ef(e,t,n,i){return{signal:`clamp(${e.getSizeSignalRef(t).signal...
  function Mf (line 1) | function Mf(e){const t=gm(e)?function(e){const{encoding:t}=e,n={};for(co...
  function Lf (line 1) | function Lf(e,t,n,i){switch(t){case"disable":return void 0!==n;case"valu...
  function qf (line 1) | function qf(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:o}=...
  function Uf (line 1) | function Uf(e,t){if(!e)return t.clone();const n=e.getWithExplicit("orien...
  function Rf (line 1) | function Rf(e,t){return"circle"===t.value?t:e}
  function Wf (line 1) | function Wf(e){const t=e.component.legends,n={};for(const i of D(t)){con...
  function Bf (line 1) | function Bf(e){return vm(e)||ym(e)?function(e){return e.children.reduce(...
  function If (line 1) | function If(e){const t=e.component.projection;if(!t||t.merged)return[];c...
  class Vf (line 1) | class Vf extends Gl{merged=!1;constructor(e,t,n,i){super({...t},{name:e}...
    method constructor (line 1) | constructor(e,t,n,i){super({...t},{name:e}),this.specifiedProjection=t...
    method isFit (line 1) | get isFit(){return!!this.data}
  function Gf (line 1) | function Gf(e){e.component.projection=gm(e)?function(e){if(e.hasProjecti...
  function Yf (line 1) | function Yf(e,t,n,i){if(xa(t,n)){const r=gm(e)?e.axis(n)??e.legend(n)??{...
  function Xf (line 1) | function Xf(e,t){return`${sn(e)}_${t}`}
  function Qf (line 1) | function Qf(e,t,n){const i=Xf(ga(n,void 0)??{},t);return e.getName(`${i}...
  function Jf (line 1) | function Jf(e,n,i){let r,o;r=function(e){return"as"in e}(e)?t.isString(e...
  class Kf (line 1) | class Kf extends pc{clone(){return new Kf(null,l(this.bins))}constructor...
    method clone (line 1) | clone(){return new Kf(null,l(this.bins))}
    method constructor (line 1) | constructor(e,t){super(e),this.bins=t}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.reduceFieldDef(((e,n,i)=>{if(Yo...
    method makeFromTransform (line 1) | static makeFromTransform(e,t,n){const{key:i,binComponent:r}=Jf(t,t.bin...
    method merge (line 1) | merge(e,t){for(const n of D(e.bins))n in this.bins?(t(e.bins[n].signal...
    method producedFields (line 1) | producedFields(){return new Set(F(this.bins).map((e=>e.as)).flat(2))}
    method dependentFields (line 1) | dependentFields(){return new Set(F(this.bins).map((e=>e.field)))}
    method hash (line 1) | hash(){return`Bin ${d(this.bins)}`}
    method assemble (line 1) | assemble(){return F(this.bins).flatMap((e=>{const t=[],[n,...i]=e.as,{...
  function Zf (line 1) | function Zf(e,n,i,r){const o=gm(r)?r.encoding[it(n)]:void 0;if(Yo(i)&&gm...
  class ed (line 1) | class ed extends pc{clone(){return new ed(null,new Set(this.dimensions),...
    method clone (line 1) | clone(){return new ed(null,new Set(this.dimensions),l(this.measures))}
    method constructor (line 1) | constructor(e,t,n){super(e),this.dimensions=t,this.measures=n}
    method groupBy (line 1) | get groupBy(){return this.dimensions}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){let n=!1;t.forEachFieldDef((e=>{e.aggrega...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){const n=new Set,i={};for(const e of t.ag...
    method merge (line 1) | merge(e){return x(this.dimensions,e.dimensions)?(function(e,t){for(con...
    method addDimensions (line 1) | addDimensions(e){e.forEach(this.dimensions.add,this.dimensions)}
    method dependentFields (line 1) | dependentFields(){return new Set([...this.dimensions,...D(this.measure...
    method producedFields (line 1) | producedFields(){const e=new Set;for(const t of D(this.measures))for(c...
    method hash (line 1) | hash(){return`Aggregate ${d({dimensions:this.dimensions,measures:this....
    method assemble (line 1) | assemble(){const e=[],t=[],n=[];for(const i of D(this.measures))for(co...
  class td (line 1) | class td extends pc{constructor(e,n,i,r){super(e),this.model=n,this.name...
    method constructor (line 1) | constructor(e,n,i,r){super(e),this.model=n,this.name=i,this.data=r;for...
    method hash (line 1) | hash(){let e="Facet";for(const t of Re)this[t]&&(e+=` ${t.charAt(0)}:$...
    method fields (line 1) | get fields(){const e=[];for(const t of Re)this[t]?.fields&&e.push(...t...
    method dependentFields (line 1) | dependentFields(){const e=new Set(this.fields);for(const t of Re)this[...
    method producedFields (line 1) | producedFields(){return new Set}
    method getSource (line 1) | getSource(){return this.name}
    method getChildIndependentFieldsWithStep (line 1) | getChildIndependentFieldsWithStep(){const e={};for(const t of Ft){cons...
    method assembleRowColumnHeaderData (line 1) | assembleRowColumnHeaderData(e,t,n){const i={row:"y",column:"x",facet:v...
    method assembleFacetHeaderData (line 1) | assembleFacetHeaderData(e){const{columns:t}=this.model.layout,{layoutH...
    method assemble (line 1) | assemble(){const e=[];let t=null;const n=this.getChildIndependentField...
  function nd (line 1) | function nd(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('...
  function id (line 1) | function id(e){const n={};return a(e.filter,(e=>{if(Gi(e)){let i=null;Ui...
  function rd (line 1) | function rd(e){const n={};function i(e){var i;ya(e)?n[e.field]="date":"q...
  class od (line 1) | class od extends pc{clone(){return new od(null,l(this._parse))}construct...
    method clone (line 1) | clone(){return new od(null,l(this._parse))}
    method constructor (line 1) | constructor(e,t){super(e),this._parse=t}
    method hash (line 1) | hash(){return`Parse ${d(this._parse)}`}
    method makeExplicit (line 1) | static makeExplicit(e,t,n){let i={};const r=t.data;return!ic(r)&&r?.fo...
    method makeWithAncestors (line 1) | static makeWithAncestors(e,t,n,i){for(const e of D(n)){const t=i.getWi...
    method parse (line 1) | get parse(){return this._parse}
    method merge (line 1) | merge(e){this._parse={...this._parse,...e.parse},e.remove()}
    method assembleFormatParse (line 1) | assembleFormatParse(){const e={};for(const t of D(this._parse)){const ...
    method producedFields (line 1) | producedFields(){return new Set(D(this._parse))}
    method dependentFields (line 1) | dependentFields(){return new Set(D(this._parse))}
    method assembleTransforms (line 1) | assembleTransforms(){let e=arguments.length>0&&void 0!==arguments[0]&&...
  class ad (line 1) | class ad extends pc{clone(){return new ad(null)}constructor(e){super(e)}...
    method clone (line 1) | clone(){return new ad(null)}
    method constructor (line 1) | constructor(e){super(e)}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set([hs])}
    method hash (line 1) | hash(){return"Identifier"}
    method assemble (line 1) | assemble(){return{type:"identifier",as:hs}}
  class sd (line 1) | class sd extends pc{clone(){return new sd(null,this.params)}constructor(...
    method clone (line 1) | clone(){return new sd(null,this.params)}
    method constructor (line 1) | constructor(e,t){super(e),this.params=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){}
    method hash (line 1) | hash(){return`Graticule ${d(this.params)}`}
    method assemble (line 1) | assemble(){return{type:"graticule",...!0===this.params?{}:this.params}}
  class ld (line 1) | class ld extends pc{clone(){return new ld(null,this.params)}constructor(...
    method clone (line 1) | clone(){return new ld(null,this.params)}
    method constructor (line 1) | constructor(e,t){super(e),this.params=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set([this.params.as??"data"])}
    method hash (line 1) | hash(){return`Hash ${d(this.params)}`}
    method assemble (line 1) | assemble(){return{type:"sequence",...this.params}}
  class cd (line 1) | class cd extends pc{constructor(e){let t;if(super(null),e??={name:"sourc...
    method constructor (line 1) | constructor(e){let t;if(super(null),e??={name:"source"},ic(e)||(t=e.fo...
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){}
    method data (line 1) | get data(){return this._data}
    method hasName (line 1) | hasName(){return!!this._name}
    method isGenerator (line 1) | get isGenerator(){return this._generator}
    method dataName (line 1) | get dataName(){return this._name}
    method dataName (line 1) | set dataName(e){this._name=e}
    method parent (line 1) | set parent(e){throw new Error("Source nodes have to be roots.")}
    method remove (line 1) | remove(){throw new Error("Source nodes are roots and cannot be removed...
    method hash (line 1) | hash(){throw new Error("Cannot hash sources")}
    method assemble (line 1) | assemble(){return{name:this._name,...this._data,transform:[]}}
  function ud (line 1) | function ud(e){return e instanceof cd||e instanceof sd||e instanceof ld}
  class fd (line 1) | class fd{#e;constructor(){this.#e=!1}setModified(){this.#e=!0}get modifi...
    method constructor (line 1) | constructor(){this.#e=!1}
    method setModified (line 1) | setModified(){this.#e=!0}
    method modifiedFlag (line 1) | get modifiedFlag(){return this.#e}
  class dd (line 1) | class dd extends fd{getNodeDepths(e,t,n){n.set(e,t);for(const i of e.chi...
    method getNodeDepths (line 1) | getNodeDepths(e,t,n){n.set(e,t);for(const i of e.children)this.getNode...
    method optimize (line 1) | optimize(e){const t=[...this.getNodeDepths(e,0,new Map).entries()].sor...
  class md (line 1) | class md extends fd{optimize(e){this.run(e);for(const t of e.children)th...
    method optimize (line 1) | optimize(e){this.run(e);for(const t of e.children)this.optimize(t);ret...
  class pd (line 1) | class pd extends md{mergeNodes(e,t){const n=t.shift();for(const i of t)e...
    method mergeNodes (line 1) | mergeNodes(e,t){const n=t.shift();for(const i of t)e.removeChild(i),i....
    method run (line 1) | run(e){const t=e.children.map((e=>e.hash())),n={};for(let i=0;i1))for(const t of...
    method run (line 1) | run(e){if(!(ud(e)||e.numChildren()>1))for(const t of e.children)if(t i...
  class bd (line 1) | class bd extends dd{run(e){const t=[...e.children],n=e.children.filter((...
    method run (line 1) | run(e){const t=[...e.children],n=e.children.filter((e=>e instanceof od...
  class xd (line 1) | class xd extends dd{run(e){e instanceof gc||e.numChildren()>0||e instanc...
    method run (line 1) | run(e){e instanceof gc||e.numChildren()>0||e instanceof td||e instance...
  class $d (line 1) | class $d extends dd{run(e){const t=e.children.filter((e=>e instanceof vc...
    method run (line 1) | run(e){const t=e.children.filter((e=>e instanceof vc)),n=t.pop();for(c...
  class wd (line 1) | class wd extends dd{run(e){const t=e.children.filter((e=>e instanceof ed...
    method run (line 1) | run(e){const t=e.children.filter((e=>e instanceof ed)),n={};for(const ...
  class kd (line 1) | class kd extends dd{constructor(e){super(),this.model=e}run(e){const t=!...
    method constructor (line 1) | constructor(e){super(),this.model=e}
    method run (line 1) | run(e){const t=!(ud(e)||e instanceof qu||e instanceof od||e instanceof...
  class Sd (line 1) | class Sd extends dd{run(e){const t=[...e.children];if(!g(t,(e=>e instanc...
    method run (line 1) | run(e){const t=[...e.children];if(!g(t,(e=>e instanceof gc))||e.numChi...
  class Dd (line 1) | class Dd extends pc{clone(){return new Dd(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Dd(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b(this.transform.groupby.conca...
    method dependentFields (line 1) | dependentFields(){const e=new Set;return this.transform.groupby&&this....
    method producedFields (line 1) | producedFields(){return new Set(this.transform.joinaggregate.map(this....
    method getDefaultName (line 1) | getDefaultName(e){return e.as??ta(e)}
    method hash (line 1) | hash(){return`JoinAggregateTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const e=[],t=[],n=[];for(const i of this.transform.joinaggr...
  class Fd (line 1) | class Fd extends pc{clone(){return new Fd(null,l(this._stack))}construct...
    method clone (line 1) | clone(){return new Fd(null,l(this._stack))}
    method constructor (line 1) | constructor(e,t){super(e),this._stack=t}
    method makeFromTransform (line 1) | static makeFromTransform(e,n){const{stack:i,groupby:r,as:o,offset:a="z...
    method makeFromEncoding (line 1) | static makeFromEncoding(e,n){const i=n.stack,{encoding:r}=n;if(!i)retu...
    method stack (line 1) | get stack(){return this._stack}
    method addDimensions (line 1) | addDimensions(e){this._stack.facetby.push(...e)}
    method dependentFields (line 1) | dependentFields(){const e=new Set;return e.add(this._stack.stackField)...
    method producedFields (line 1) | producedFields(){return new Set(this._stack.as)}
    method hash (line 1) | hash(){return`Stack ${d(this._stack)}`}
    method getGroupbyFields (line 1) | getGroupbyFields(){const{dimensionFieldDefs:e,impute:t,groupby:n}=this...
    method assemble (line 1) | assemble(){const e=[],{facetby:t,dimensionFieldDefs:n,stackField:i,sta...
  class zd (line 1) | class zd extends pc{clone(){return new zd(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new zd(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b(this.transform.groupby.conca...
    method dependentFields (line 1) | dependentFields(){const e=new Set;return(this.transform.groupby??[]).f...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.window.map(this.getDefa...
    method getDefaultName (line 1) | getDefaultName(e){return e.as??ta(e)}
    method hash (line 1) | hash(){return`WindowTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const e=[],t=[],n=[],i=[];for(const r of this.transform.win...
  function Od (line 1) | function Od(e){if(e instanceof td)if(1!==e.numChildren()||e.children[0]i...
  function _d (line 1) | function _d(e){if(e instanceof gc&&e.type===sc.Main&&1===e.numChildren()...
  function Pd (line 1) | function Pd(e){for(const t of e){for(const e of t.children)if(e.parent!=...
  function Ad (line 1) | function Ad(e,t){let n=!1;for(const i of t)n=e.optimize(i)||n;return n}
  function jd (line 1) | function jd(e,t,n){let i=e.sources,r=!1;return r=Ad(new yd,i)||r,r=Ad(ne...
  class Td (line 1) | class Td{constructor(e){Object.defineProperty(this,"signal",{enumerable:...
    method constructor (line 1) | constructor(e){Object.defineProperty(this,"signal",{enumerable:!0,get:...
    method fromName (line 1) | static fromName(e,t){return new Td((()=>e(t)))}
  function Ed (line 1) | function Ed(e){gm(e)?function(e){const t=e.component.scales;for(const n ...
  function Md (line 1) | function Md(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}...
  function Ld (line 1) | function Ld(e,t,n){const i=Ei(n)?.unit;return"temporal"===t||i?function(...
  function qd (line 1) | function qd(e,n,i,r){const{encoding:o,markDef:a,mark:s,config:l,stack:c}...
  function Ud (line 1) | function Ud(e,t){const{op:n,field:i,order:r}=e;return{op:n??(t?"sum":ko)...
  function Rd (line 1) | function Rd(e,t){const n=e.component.scales[t],i=e.specifiedScales[t].do...
  function Wd (line 1) | function Wd(e,n){const{aggregate:i,type:r}=e;return i?t.isString(i)&&!an...
  function Bd (line 1) | function Bd(e,t,n,i){return e.explicit&&t.explicit&&yi(function(e,t,n,i)...
  function Id (line 1) | function Id(e){const n=b(e.map((e=>{if(bn(e)){const{sort:t,...n}=e;retur...
  function Hd (line 1) | function Hd(e){if(bn(e)&&t.isString(e.field))return e.field;if(function(...
  function Vd (line 1) | function Vd(e,t){const n=e.component.scales[t].get("domains").map((t=>(b...
  function Gd (line 1) | function Gd(e){return vm(e)||ym(e)?e.children.reduce(((e,t)=>e.concat(Gd...
  function Yd (line 1) | function Yd(e){return D(e.component.scales).reduce(((n,i)=>{const r=e.co...
  class Xd (line 1) | class Xd extends Gl{merged=!1;constructor(e,t){super({},{name:e}),this.s...
    method constructor (line 1) | constructor(e,t){super({},{name:e}),this.setWithExplicit("type",t)}
    method domainDefinitelyIncludesZero (line 1) | domainDefinitelyIncludesZero(){return!1!==this.get("zero")||g(this.get...
  function Jd (line 1) | function Jd(e,n){const i=e.fieldDef(n);if(i?.bin){const{bin:r,field:o}=i...
  function Kd (line 1) | function Kd(e,n){const i=n.specifiedScales[e],{size:r}=n,o=n.getScaleCom...
  function Zd (line 1) | function Zd(e){return function(e){return!t.isString(e)&&!!e.name}(e)?{sc...
  function em (line 1) | function em(e,t,n){let{center:i}=arguments.length>3&&void 0!==arguments[...
  function tm (line 1) | function tm(e,n,i){const{encoding:r}=n,o=n.getScaleComponent(i),a=at(i),...
  function nm (line 1) | function nm(e,t){if("offset"===Ds({step:e,offsetIsDiscrete:hr(t)}))retur...
  function im (line 1) | function im(e,t,n){const i=e===Z?"width":"height",r=t[i];return r||Ns(n,i)}
  function rm (line 1) | function rm(e,t,n){if(t)return yn(t)?{signal:`${t.signal} ? 0 : ${rm(e,!...
  function am (line 1) | function am(e,t,n){const i=Fs(e.width)?e.width.step:Cs(n,"width"),r=Fs(e...
  function sm (line 1) | function sm(e,t){gm(e)?function(e,t){const n=e.component.scales,{config:...
  function cm (line 1) | function cm(e){gm(e)?function(e){const t=e.component.scales;for(const n ...
  function um (line 1) | function um(e,t){const n=e.component.scales;for(const n of e.children)"r...
  function fm (line 1) | function fm(e,t,n,i){const r=function(e,t,n,i){switch(t.type){case"nomin...
  function dm (line 1) | function dm(e){gm(e)?e.component.scales=function(e){const{encoding:t,mar...
  class pm (line 1) | class pm{constructor(){this.nameMap={}}rename(e,t){this.nameMap[e]=t}has...
    method constructor (line 1) | constructor(){this.nameMap={}}
    method rename (line 1) | rename(e,t){this.nameMap[e]=t}
    method has (line 1) | has(e){return void 0!==this.nameMap[e]}
    method get (line 1) | get(e){for(;this.nameMap[e]&&e!==this.nameMap[e];)e=this.nameMap[e];re...
  function gm (line 1) | function gm(e){return"unit"===e?.type}
  function hm (line 1) | function hm(e){return"facet"===e?.type}
  function ym (line 1) | function ym(e){return"concat"===e?.type}
  function vm (line 1) | function vm(e){return"layer"===e?.type}
  class bm (line 1) | class bm{constructor(e,n,i,r,o,a,c){this.type=n,this.parent=i,this.confi...
    method constructor (line 1) | constructor(e,n,i,r,o,a,c){this.type=n,this.parent=i,this.config=o,thi...
    method width (line 1) | get width(){return this.getSizeSignalRef("width")}
    method height (line 1) | get height(){return this.getSizeSignalRef("height")}
    method parse (line 1) | parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLa...
    method parseScale (line 1) | parseScale(){!function(e){let{ignoreRange:t}=arguments.length>1&&void ...
    method parseProjection (line 1) | parseProjection(){Gf(this)}
    method renameTopLevelLayoutSizeSignal (line 1) | renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this...
    method parseLegends (line 1) | parseLegends(){Mf(this)}
    method assembleEncodeFromView (line 1) | assembleEncodeFromView(e){const{style:t,...n}=e,i={};for(const e of D(...
    method assembleGroupEncodeEntry (line 1) | assembleGroupEncodeEntry(e){let t={};return this.view&&(t=this.assembl...
    method assembleLayout (line 1) | assembleLayout(){if(!this.layout)return;const{spacing:e,...t}=this.lay...
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){return{}}
    method assembleHeaderMarks (line 1) | assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];f...
    method assembleAxes (line 1) | assembleAxes(){return function(e,t){const{x:n=[],y:i=[]}=e;return[...n...
    method assembleLegends (line 1) | assembleLegends(){return Wf(this)}
    method assembleProjections (line 1) | assembleProjections(){return Bf(this)}
    method assembleTitle (line 1) | assembleTitle(){const{encoding:e,...t}=this.title??{},n={...gn(this.co...
    method assembleGroup (line 1) | assembleGroup(){let e=arguments.length>0&&void 0!==arguments[0]?argume...
    method getName (line 1) | getName(e){return _((this.name?`${this.name}_`:"")+e)}
    method getDataName (line 1) | getDataName(e){return this.getName(sc[e].toLowerCase())}
    method requestDataName (line 1) | requestDataName(e){const t=this.getDataName(e),n=this.component.data.o...
    method getSizeSignalRef (line 1) | getSizeSignalRef(e){if(hm(this.parent)){const t=Ct(wf(e)),n=this.compo...
    method lookupDataSource (line 1) | lookupDataSource(e){const t=this.component.data.outputNodes[e];return ...
    method getSignalName (line 1) | getSignalName(e){return this.signalNameMap.get(e)}
    method renameSignal (line 1) | renameSignal(e,t){this.signalNameMap.rename(e,t)}
    method renameScale (line 1) | renameScale(e,t){this.scaleNameMap.rename(e,t)}
    method renameProjection (line 1) | renameProjection(e,t){this.projectionNameMap.rename(e,t)}
    method scaleName (line 1) | scaleName(e,t){return t?this.getName(e):Ke(e)&&Ht(e)&&this.component.s...
    method projectionName (line 1) | projectionName(e){return e?this.getName("projection"):this.component.p...
    method getScaleComponent (line 1) | getScaleComponent(e){if(!this.component.scales)throw new Error("getSca...
    method getSelectionComponent (line 1) | getSelectionComponent(e,t){let n=this.component.selection[e];if(!n&&th...
    method hasAxisOrientSignalRef (line 1) | hasAxisOrientSignalRef(){return this.component.axes.x?.some((e=>e.hasO...
  class xm (line 1) | class xm extends bm{vgField(e){let t=arguments.length>1&&void 0!==argume...
    method vgField (line 1) | vgField(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1...
    method reduceFieldDef (line 1) | reduceFieldDef(e,n){return function(e,n,i,r){return e?D(e).reduce(((i,...
    method forEachFieldDef (line 1) | forEachFieldDef(e,t){La(this.getMapping(),((t,n)=>{const i=ua(t);i&&e(...
  class $m (line 1) | class $m extends pc{clone(){return new $m(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new $m(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.density,...this.trans...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`DensityTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{density:e,...t}=this.transform,n={type:"kde",field:e,...
  class wm (line 1) | class wm extends pc{clone(){return new wm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new wm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t)}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.extent])}
    method producedFields (line 1) | producedFields(){return new Set([])}
    method hash (line 1) | hash(){return`ExtentTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{extent:e,param:t}=this.transform;return{type:"extent"...
  class km (line 1) | class km extends pc{clone(){return new km(null,{...this.filter})}constru...
    method clone (line 1) | clone(){return new km(null,{...this.filter})}
    method constructor (line 1) | constructor(e,t){super(e),this.filter=t}
    method make (line 1) | static make(e,t){const{config:n,mark:i,markDef:r}=t;if("filter"!==Nn("...
    method dependentFields (line 1) | dependentFields(){return new Set(D(this.filter))}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`FilterInvalid ${d(this.filter)}`}
    method assemble (line 1) | assemble(){const e=D(this.filter).reduce(((e,t)=>{const n=this.filter[...
  class Sm (line 1) | class Sm extends pc{clone(){return new Sm(this.parent,l(this.transform))...
    method clone (line 1) | clone(){return new Sm(this.parent,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const{f...
    method dependentFields (line 1) | dependentFields(){return new Set(this.transform.flatten)}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`FlattenTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{flatten:e,as:t}=this.transform;return{type:"flatten",...
  class Dm (line 1) | class Dm extends pc{clone(){return new Dm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Dm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set(this.transform.fold)}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`FoldTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{fold:e,as:t}=this.transform;return{type:"fold",fields...
  class Fm (line 1) | class Fm extends pc{clone(){return new Fm(null,l(this.fields),this.geojs...
    method clone (line 1) | clone(){return new Fm(null,l(this.fields),this.geojson,this.signal)}
    method parseAll (line 1) | static parseAll(e,t){if(t.component.projection&&!t.component.projectio...
    method constructor (line 1) | constructor(e,t,n,i){super(e),this.fields=t,this.geojson=n,this.signal=i}
    method dependentFields (line 1) | dependentFields(){const e=(this.fields??[]).filter(t.isString);return ...
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`GeoJSON ${this.geojson} ${this.signal} ${d(this.fields)}`}
    method assemble (line 1) | assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum[...
  class zm (line 1) | class zm extends pc{clone(){return new zm(null,this.projection,l(this.fi...
    method clone (line 1) | clone(){return new zm(null,this.projection,l(this.fields),l(this.as))}
    method constructor (line 1) | constructor(e,t,n,i){super(e),this.projection=t,this.fields=n,this.as=i}
    method parseAll (line 1) | static parseAll(e,t){if(!t.projectionName())return e;for(const n of[[u...
    method dependentFields (line 1) | dependentFields(){return new Set(this.fields.filter(t.isString))}
    method producedFields (line 1) | producedFields(){return new Set(this.as)}
    method hash (line 1) | hash(){return`Geopoint ${this.projection} ${d(this.fields)} ${d(this.a...
    method assemble (line 1) | assemble(){return{type:"geopoint",projection:this.projection,fields:th...
  class Om (line 1) | class Om extends pc{clone(){return new Om(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Om(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.impute,this.transform...
    method producedFields (line 1) | producedFields(){return new Set([this.transform.impute])}
    method processSequence (line 1) | processSequence(e){const{start:t=0,stop:n,step:i}=e;return{signal:`seq...
    method makeFromTransform (line 1) | static makeFromTransform(e,t){return new Om(e,t)}
    method makeFromEncoding (line 1) | static makeFromEncoding(e,t){const n=t.encoding,i=n.x,r=n.y;if(Ro(i)&&...
    method hash (line 1) | hash(){return`Impute ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{impute:e,key:t,keyvals:n,method:i,groupby:r,value:o,f...
  class _m (line 1) | class _m extends pc{clone(){return new _m(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new _m(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.loess,this.transform....
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`LoessTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{loess:e,on:t,...n}=this.transform;return{type:"loess"...
  class Cm (line 1) | class Cm extends pc{clone(){return new Cm(null,l(this.transform),this.se...
    method clone (line 1) | clone(){return new Cm(null,l(this.transform),this.secondary)}
    method constructor (line 1) | constructor(e,t,n){super(e),this.transform=t,this.secondary=n}
    method make (line 1) | static make(e,t,n,i){const r=t.component.data.sources,{from:o}=n;let a...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.lookup])}
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as?t.array(this.transfo...
    method hash (line 1) | hash(){return`Lookup ${d({transform:this.transform,secondary:this.seco...
    method assemble (line 1) | assemble(){let e;if(this.transform.from.fields)e={values:this.transfor...
  class Nm (line 1) | class Nm extends pc{clone(){return new Nm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Nm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.quantile,...this.tran...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`QuantileTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{quantile:e,...t}=this.transform;return{type:"quantile...
  class Pm (line 1) | class Pm extends pc{clone(){return new Pm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Pm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t,this.transform=l(t);const n...
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.regression,this.trans...
    method producedFields (line 1) | producedFields(){return new Set(this.transform.as)}
    method hash (line 1) | hash(){return`RegressionTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{regression:e,on:t,...n}=this.transform;return{type:"r...
  class Am (line 1) | class Am extends pc{clone(){return new Am(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new Am(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method addDimensions (line 1) | addDimensions(e){this.transform.groupby=b((this.transform.groupby??[])...
    method producedFields (line 1) | producedFields(){}
    method dependentFields (line 1) | dependentFields(){return new Set([this.transform.pivot,this.transform....
    method hash (line 1) | hash(){return`PivotTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){const{pivot:e,value:t,groupby:n,limit:i,op:r}=this.transfor...
  class jm (line 1) | class jm extends pc{clone(){return new jm(null,l(this.transform))}constr...
    method clone (line 1) | clone(){return new jm(null,l(this.transform))}
    method constructor (line 1) | constructor(e,t){super(e),this.transform=t}
    method dependentFields (line 1) | dependentFields(){return new Set}
    method producedFields (line 1) | producedFields(){return new Set}
    method hash (line 1) | hash(){return`SampleTransform ${d(this.transform)}`}
    method assemble (line 1) | assemble(){return{type:"sample",size:this.transform.sample}}
  function Tm (line 1) | function Tm(e){let t=0;return function n(i,r){if(i instanceof cd&&!i.isG...
  function Em (line 1) | function Em(e){return"top"===e||"left"===e||yn(e)?"header":"footer"}
  function Mm (line 1) | function Mm(e,n){const{facet:i,config:r,child:o,component:a}=e;if(e.chan...
  function Lm (line 1) | function Lm(e,t,n){const i="row"===t?"height":"width";return{labels:n,si...
  function qm (line 1) | function qm(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHe...
  function Um (line 1) | function Um(e){for(const t of e.children)t.parseLayoutSize()}
  function Rm (line 1) | function Rm(e,t){const n=wf(t),i=Ct(n),r=e.component.resolve,o=e.compone...
  function Wm (line 1) | function Wm(e,t){const n="width"===t?"x":"y",i=e.config,r=e.getScaleComp...
  function Bm (line 1) | function Bm(e,t,n){return ta(t,{suffix:`by_${ta(e)}`,...n})}
  class Im (line 1) | class Im extends xm{constructor(e,t,n,i){super(e,"facet",t,n,i,e.resolve...
    method constructor (line 1) | constructor(e,t,n,i){super(e,"facet",t,n,i,e.resolve),this.child=vp(e....
    method initFacet (line 1) | initFacet(e){if(!_o(e))return{facet:this.initFacetFieldDef(e,"facet")}...
    method initFacetFieldDef (line 1) | initFacetFieldDef(e,t){const n=pa(e,t);return n.header?n.header=pn(n.h...
    method channelHasField (line 1) | channelHasField(e){return!!this.facet[e]}
    method fieldDef (line 1) | fieldDef(e){return this.facet[e]}
    method parseData (line 1) | parseData(){this.component.data=Vm(this),this.child.parseData()}
    method parseLayoutSize (line 1) | parseLayoutSize(){Um(this)}
    method parseSelections (line 1) | parseSelections(){this.child.parseSelections(),this.component.selectio...
    method parseMarkGroup (line 1) | parseMarkGroup(){this.child.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(e){for...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.child.assembleSelectio...
    method assembleSignals (line 1) | assembleSignals(){return this.child.assembleSignals(),[]}
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.child.assembleSelectionData(e)}
    method getHeaderLayoutMixins (line 1) | getHeaderLayoutMixins(){const e={};for(const t of Re)for(const n of sf...
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){const{column:e,row:t}=this.facet,n=e?this.colu...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return this.child.assembleLayoutSignals()}
    method columnDistinctSignal (line 1) | columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Im)){r...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){}
    method assembleGroup (line 1) | assembleGroup(e){return this.parent&&this.parent instanceof Im?{...thi...
    method getCardinalityAggregateForChild (line 1) | getCardinalityAggregateForChild(){const e=[],t=[],n=[];if(this.child i...
    method assembleFacet (line 1) | assembleFacet(){const{name:e,data:n}=this.component.data.facetRoot,{ro...
    method facetSortFields (line 1) | facetSortFields(e){const{facet:n}=this,i=n[e];return i?zo(i.sort)?[Bm(...
    method facetSortOrder (line 1) | facetSortOrder(e){const{facet:n}=this,i=n[e];if(i){const{sort:e}=i;ret...
    method assembleLabelTitle (line 1) | assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return mf...
    method assembleMarks (line 1) | assembleMarks(){const{child:e}=this,t=function(e){const t=[],n=Tm(t);f...
    method getMapping (line 1) | getMapping(){return this.facet}
  function Hm (line 1) | function Hm(e,t){for(const n of t){const t=n.data;if(e.name&&n.hasName()...
  function Vm (line 1) | function Vm(e){let t=function(e,t){if(e.data||!e.parent){if(null===e.dat...
  function Gm (line 1) | function Gm(e,t,n){const{outputNodes:i,outputNodeRefCounts:r}=t.componen...
  class Ym (line 1) | class Ym extends bm{constructor(e,t,n,i){super(e,"concat",t,n,i,e.resolv...
    method constructor (line 1) | constructor(e,t,n,i){super(e,"concat",t,n,i,e.resolve),"shared"!==e.re...
    method parseData (line 1) | parseData(){this.component.data=Vm(this);for(const e of this.children)...
    method parseSelections (line 1) | parseSelections(){this.component.selection={};for(const e of this.chil...
    method parseMarkGroup (line 1) | parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){for(const e of this.children)e.parseAxesAndHeade...
    method getChildren (line 1) | getChildren(e){return ks(e)?e.vconcat:Ss(e)?e.hconcat:e.concat}
    method parseLayoutSize (line 1) | parseLayoutSize(){!function(e){Um(e);const t=1===e.layout.columns?"wid...
    method parseAxisGroup (line 1) | parseAxisGroup(){return null}
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.children.reduce(((e,t)...
    method assembleSignals (line 1) | assembleSignals(){return this.children.forEach((e=>e.assembleSignals()...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){const e=vf(this);for(const t of this.children)...
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.children.reduce(((e,t)=>t.assembl...
    method assembleMarks (line 1) | assembleMarks(){return this.children.map((e=>{const t=e.assembleTitle(...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){}
    method assembleDefaultLayout (line 1) | assembleDefaultLayout(){const e=this.layout.columns;return{...null!=e?...
  class Jm (line 1) | class Jm extends Gl{constructor(){let e=arguments.length>0&&void 0!==arg...
    method constructor (line 1) | constructor(){let e=arguments.length>0&&void 0!==arguments[0]?argument...
    method clone (line 1) | clone(){return new Jm(l(this.explicit),l(this.implicit),this.mainExtra...
    method hasAxisPart (line 1) | hasAxisPart(e){return"axis"===e||("grid"===e||"title"===e?!!this.get(e...
    method hasOrientSignalRef (line 1) | hasOrientSignalRef(){return yn(this.explicit.orient)}
  function Zm (line 1) | function Zm(e,t){if(!e)return t.map((e=>e.clone()));{if(e.length!==t.len...
  function ep (line 1) | function ep(e,t){for(const n of Qm){const i=Kl(e.getWithExplicit(n),t.ge...
  function tp (line 1) | function tp(e,t,n,i,r){if("disable"===t)return void 0!==n;switch(n=n||{}...
  function ip (line 1) | function ip(e,t){let n=t.axis(e);const i=new Jm,r=fa(t.encoding[e]),{mar...
  function rp (line 1) | function rp(e,t){const{config:n}=e;return{...lu(e,{align:"ignore",baseli...
  function op (line 1) | function op(e,t,n){return n?{shape:{value:n}}:Hc("shape",e)}
  function sp (line 1) | function sp(e,t,n){if(void 0===Nn("align",e,n))return"center"}
  function lp (line 1) | function lp(e,t,n){if(void 0===Nn("baseline",e,n))return"middle"}
  function up (line 1) | function up(e){const{config:n,markDef:i}=e,{orient:r}=i,o="horizontal"==...
  function dp (line 1) | function dp(e){if(p([to,Kr,so],e.mark)){const t=qa(e.mark,e.encoding);if...
  function gp (line 1) | function gp(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments...
  class hp (line 1) | class hp extends xm{specifiedScales={};specifiedAxes={};specifiedLegends...
    method constructor (line 1) | constructor(e,n,i){let r=arguments.length>3&&void 0!==arguments[3]?arg...
    method hasProjection (line 1) | get hasProjection(){const{encoding:e}=this,t=this.mark===uo,n=e&&Me.so...
    method scaleDomain (line 1) | scaleDomain(e){const t=this.specifiedScales[e];return t?t.domain:void 0}
    method axis (line 1) | axis(e){return this.specifiedAxes[e]}
    method legend (line 1) | legend(e){return this.specifiedLegends[e]}
    method initScales (line 1) | initScales(e,t){return It.reduce(((e,n)=>{const i=fa(t[n]);return i&&(...
    method initScale (line 1) | initScale(e){const{domain:n,range:i}=e,r=pn(e);return t.isArray(n)&&(r...
    method initAxes (line 1) | initAxes(e){return Ft.reduce(((t,n)=>{const i=e[n];if(Go(i)||n===Z&&Go...
    method initAxis (line 1) | initAxis(e){const t=D(e),n={};for(const i of t){const t=e[i];n[i]=wa(t...
    method initLegends (line 1) | initLegends(e){return Wt.reduce(((t,n)=>{const i=fa(e[n]);if(i&&functi...
    method parseData (line 1) | parseData(){this.component.data=Vm(this)}
    method parseLayoutSize (line 1) | parseLayoutSize(){!function(e){const{size:t,component:n}=e;for(const i...
    method parseSelections (line 1) | parseSelections(){this.component.selection=function(e,n){const i={},r=...
    method parseMarkGroup (line 1) | parseMarkGroup(){this.component.mark=dp(this)}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){var e;this.component.axes=(e=this,Ft.reduce(((t,...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return function(e,n){let i=!1;for(...
    method assembleSignals (line 1) | assembleSignals(){return[...Hu(this),...uc(this,[])]}
    method assembleSelectionData (line 1) | assembleSelectionData(e){return function(e,t){const n=[...t],i=Au(e,{e...
    method assembleLayout (line 1) | assembleLayout(){return null}
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return vf(this)}
    method assembleMarks (line 1) | assembleMarks(){let e=this.component.mark??[];return this.parent&&vm(t...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){const{style:e}=this.view||{};return void 0!==e?e:...
    method getMapping (line 1) | getMapping(){return this.encoding}
    method mark (line 1) | get mark(){return this.markDef.type}
    method channelHasField (line 1) | channelHasField(e){return Na(this.encoding,e)}
    method fieldDef (line 1) | fieldDef(e){return ua(this.encoding[e])}
    method typedFieldDef (line 1) | typedFieldDef(e){const t=this.fieldDef(e);return Yo(t)?t:null}
  class yp (line 1) | class yp extends bm{constructor(e,t,n,i,r){super(e,"layer",t,n,r,e.resol...
    method constructor (line 1) | constructor(e,t,n,i,r){super(e,"layer",t,n,r,e.resolve,e.view);const o...
    method parseData (line 1) | parseData(){this.component.data=Vm(this);for(const e of this.children)...
    method parseLayoutSize (line 1) | parseLayoutSize(){var e;Um(e=this),Rm(e,"width"),Rm(e,"height")}
    method parseSelections (line 1) | parseSelections(){this.component.selection={};for(const e of this.chil...
    method parseMarkGroup (line 1) | parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}
    method parseAxesAndHeaders (line 1) | parseAxesAndHeaders(){!function(e){const{axes:t,resolve:n}=e.component...
    method assembleSelectionTopLevelSignals (line 1) | assembleSelectionTopLevelSignals(e){return this.children.reduce(((e,t)...
    method assembleSignals (line 1) | assembleSignals(){return this.children.reduce(((e,t)=>e.concat(t.assem...
    method assembleLayoutSignals (line 1) | assembleLayoutSignals(){return this.children.reduce(((e,t)=>e.concat(t...
    method assembleSelectionData (line 1) | assembleSelectionData(e){return this.children.reduce(((e,t)=>t.assembl...
    method assembleGroupStyle (line 1) | assembleGroupStyle(){const e=new Set;for(const n of this.children)for(...
    method assembleTitle (line 1) | assembleTitle(){let e=super.assembleTitle();if(e)return e;for(const t ...
    method assembleLayout (line 1) | assembleLayout(){return null}
    method assembleMarks (line 1) | assembleMarks(){return function(e,t){for(const n of e.children)gm(n)&&...
    method assembleLegends (line 1) | assembleLegends(){return this.children.reduce(((e,t)=>e.concat(t.assem...
  function vp (line 1) | function vp(e,t,n,i,r){if(No(e))return new Im(e,t,n,r);if(Hs(e))return n...

FILE: docs/javascripts/vega@5.js
  function e (line 1) | function e(t,e,n){return t.fields=e||[],t.fname=n,t}
  function n (line 1) | function n(t){return null==t?null:t.fname}
  function r (line 1) | function r(t){return null==t?null:t.fields}
  function i (line 1) | function i(t){return 1===t.length?o(t[0]):a(t)}
  function s (line 1) | function s(t){throw Error(t)}
  function u (line 1) | function u(t){const e=[],n=t.length;let r,i,o,a=null,u=0,l="";function c...
  function l (line 1) | function l(t,n,r){const o=u(t);return t=1===o.length?o[0]:t,e((r&&r.get|...
  function m (line 1) | function m(t,e,n){const r=[e].concat([].slice.call(n));console[t].apply(...
  function w (line 1) | function w(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argument...
  function A (line 1) | function A(t){return t===Object(t)}
  function E (line 1) | function E(){for(var t=arguments.length,e=new Array(t),n=0;n...
  function J (line 1) | function J(t){return"function"==typeof t}
  function Q (line 1) | function Q(t,n,i){i=i||{},n=V(n)||[];const o=[],a=[],s={},u=i.comparator...
  function rt (line 1) | function rt(t){return J(t)?t:()=>t}
  function it (line 1) | function it(t,e){let n;return r=>{n&&clearTimeout(n),n=setTimeout((()=>(...
  function ot (line 1) | function ot(t){for(let e,n,r=1,i=arguments.length;ra&&(i=o,o=a,a...
  function gt (line 1) | function gt(t){return"boolean"==typeof t}
  function mt (line 1) | function mt(t){return"[object Date]"===Object.prototype.toString.call(t)}
  function yt (line 1) | function yt(t){return t&&J(t[Symbol.iterator])}
  function vt (line 1) | function vt(t){return"number"==typeof t}
  function _t (line 1) | function _t(t){return"[object RegExp]"===Object.prototype.toString.call(t)}
  function xt (line 1) | function xt(t){return"string"==typeof t}
  function bt (line 1) | function bt(t,n,r){t&&(t=n?V(t).map((t=>t.replace(/\\(.)/g,"$1"))):V(t))...
  function wt (line 1) | function wt(t,e){const n=t[0],r=F(t),i=+e;return i?1===i?r:n+i*(r-n):n}
  function kt (line 1) | function kt(t){let e,n,r;t=+t||1e4;const i=()=>{e={},n={},r=0},o=(i,o)=>...
  function At (line 1) | function At(t,e,n,r){const i=e.length,o=n.length;if(!o)return e;if(!i)re...
  function Mt (line 1) | function Mt(t,e){let n="";for(;--e>=0;)n+=t;return n}
  function Et (line 1) | function Et(t,e,n,r){const i=n||" ",o=t+"",a=e-o.length;return a<=0?o:"l...
  function Dt (line 1) | function Dt(t){return t&&F(t)-t[0]||0}
  function Ct (line 1) | function Ct(t){return k(t)?"["+t.map(Ct)+"]":A(t)||xt(t)?JSON.stringify(...
  function Ft (line 1) | function Ft(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&...
  function $t (line 1) | function $t(t,e){return e=e||St,null==t||""===t?null:e(t)}
  function Tt (line 1) | function Tt(t){return null==t||""===t?null:t+""}
  function Bt (line 1) | function Bt(t){const e={},n=t.length;for(let r=0;r1)r=function(t,e,n){var...
  function Kt (line 1) | function Kt(t,e){return null==t||null==e?NaN:te?1:t>=e?0:NaN}
  function te (line 1) | function te(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}
  function ee (line 1) | function ee(t){let e,n,r;function i(t,r){let i=arguments.length>2&&void ...
  function ne (line 1) | function ne(){return 0}
  function re (line 1) | function re(t){return null===t?NaN:+t}
  class se (line 1) | class se{constructor(){this._partials=new Float64Array(32),this._n=0}add...
    method constructor (line 1) | constructor(){this._partials=new Float64Array(32),this._n=0}
    method add (line 1) | add(t){const e=this._partials;let n=0;for(let r=0;r0){for(o...
  class ue (line 1) | class ue extends Map{constructor(t){let e=arguments.length>1&&void 0!==a...
    method constructor (line 1) | constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method get (line 1) | get(t){return super.get(ce(this,t))}
    method has (line 1) | has(t){return super.has(ce(this,t))}
    method set (line 1) | set(t,e){return super.set(fe(this,t),e)}
    method delete (line 1) | delete(t){return super.delete(he(this,t))}
  class le (line 1) | class le extends Set{constructor(t){let e=arguments.length>1&&void 0!==a...
    method constructor (line 1) | constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method has (line 1) | has(t){return super.has(ce(this,t))}
    method add (line 1) | add(t){return super.add(fe(this,t))}
    method delete (line 1) | delete(t){return super.delete(he(this,t))}
  function ce (line 1) | function ce(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)?n....
  function fe (line 1) | function fe(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)?n....
  function he (line 1) | function he(t,e){let{_intern:n,_key:r}=t;const i=r(e);return n.has(i)&&(...
  function de (line 1) | function de(t){return null!==t&&"object"==typeof t?t.valueOf():t}
  function pe (line 1) | function pe(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(t...
  function ve (line 1) | function ve(t,e,n){const r=(e-t)/Math.max(0,n),i=Math.floor(Math.log10(r...
  function _e (line 1) | function _e(t,e,n){if(!((n=+n)>0))return[];if((t=+t)===(e=+e))return[t];...
  function xe (line 1) | function xe(t,e,n){return ve(t=+t,e=+e,n=+n)[2]}
  function be (line 1) | function be(t,e,n){n=+n;const r=(e=+e)<(t=+t),i=r?xe(e,t,n):xe(t,e,n);re...
  function we (line 1) | function we(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(ne||voi...
  function Ae (line 1) | function Ae(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Me (line 1) | function Me(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}
  function Ee (line 1) | function Ee(t,e,n){if(t=Float64Array.from(function*(t,e){if(void 0===e)f...
  function De (line 1) | function De(t,e){let n=arguments.length>2&&void 0!==arguments[2]?argumen...
  function Ce (line 1) | function Ce(t,e){return Ee(t,.5,e)}
  function Fe (line 1) | function Fe(t){return Array.from(function*(t){for(const e of t)yield*e}(...
  function Se (line 1) | function Se(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:...
  function $e (line 1) | function $e(t,e){let n=0;if(void 0===e)for(let e of t)(e=+e)&&(n+=e);els...
  function Te (line 1) | function Te(t){return t instanceof le?t:new le(t)}
  function Be (line 1) | function Be(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).inde...
  function ze (line 1) | function ze(t){return(t=Be(Math.abs(t)))?t[1]:NaN}
  function Re (line 1) | function Re(t){if(!(e=Oe.exec(t)))throw new Error("invalid format: "+t);...
  function Ue (line 1) | function Ue(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0...
  function Le (line 1) | function Le(t,e){var n=Be(t,e);if(!n)return t+"";var r=n[0],i=n[1];retur...
  function Pe (line 1) | function Pe(t){return t}
  function Ge (line 1) | function Ge(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Pe:(e...
  function Ve (line 1) | function Ve(t){return Math.max(0,-ze(Math.abs(t)))}
  function Xe (line 1) | function Xe(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(z...
  function Je (line 1) | function Je(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ze(e)-z...
  function Ke (line 1) | function Ke(t,e,n,r){function i(e){return t(e=0===arguments.length?new D...
  function yn (line 1) | function yn(t){return Ke((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),...
  function Mn (line 1) | function Mn(t){return Ke((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()...
  function Rn (line 1) | function Rn(t,e,n,r,i,o){const a=[[ln,1,en],[ln,5,5e3],[ln,15,15e3],[ln,...
  function er (line 1) | function er(t){const e=V(t).slice(),n={};e.length||s("Missing time unit....
  function rr (line 1) | function rr(t,e){const n=ot({},nr,e),r=er(t),i=r.length;let o,a,s="",u=0...
  function or (line 1) | function or(t){return ir.setFullYear(t),ir.setMonth(0),ir.setDate(1),ir....
  function ar (line 1) | function ar(t){return ur(new Date(t))}
  function sr (line 1) | function sr(t){return lr(new Date(t))}
  function ur (line 1) | function ur(t){return pn.count(or(t.getFullYear())-1,t)}
  function lr (line 1) | function lr(t){return vn.count(or(t.getFullYear())-1,t)}
  function cr (line 1) | function cr(t){return or(t).getDay()}
  function fr (line 1) | function fr(t,e,n,r,i,o,a){if(0<=t&&t<100){const s=new Date(-1,e,n,r,i,o...
  function hr (line 1) | function hr(t){return pr(new Date(t))}
  function dr (line 1) | function dr(t){return gr(new Date(t))}
  function pr (line 1) | function pr(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return gn.count(...
  function gr (line 1) | function gr(t){const e=Date.UTC(t.getUTCFullYear(),0,1);return En.count(...
  function mr (line 1) | function mr(t){return ir.setTime(Date.UTC(t,0,1)),ir.getUTCDay()}
  function yr (line 1) | function yr(t,e,n,r,i,o,a){if(0<=t&&t<100){const t=new Date(Date.UTC(-1,...
  function vr (line 1) | function vr(t,e,n,r,i){const o=e||1,a=F(t),s=(t,e,i)=>function(t,e,n,r){...
  function _r (line 1) | function _r(t,e,n){return e+7*t-(n+6)%7}
  function wr (line 1) | function wr(t,e){return vr(t,e||1,xr,br,fr)}
  function Mr (line 1) | function Mr(t,e){return vr(t,e||1,kr,Ar,yr)}
  function Cr (line 1) | function Cr(t){return Er[t]}
  function Fr (line 1) | function Fr(t){return Dr[t]}
  function Sr (line 1) | function Sr(t,e,n){return t?t.offset(e,n):void 0}
  function $r (line 1) | function $r(t,e,n){return Sr(Cr(t),e,n)}
  function Tr (line 1) | function Tr(t,e,n){return Sr(Fr(t),e,n)}
  function Br (line 1) | function Br(t,e,n,r){return t?t.range(e,n,r):void 0}
  function zr (line 1) | function zr(t,e,n,r){return Br(Cr(t),e,n,r)}
  function Nr (line 1) | function Nr(t,e,n,r){return Br(Fr(t),e,n,r)}
  function Jr (line 1) | function Jr(t){const e=t.extent,n=t.maxbins||40,r=Math.abs(Dt(e))/n;let ...
  function Zr (line 1) | function Zr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S...
  function Qr (line 1) | function Qr(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t....
  function Kr (line 1) | function Kr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}
  function ti (line 1) | function ti(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,o=t.days,a...
  function ci (line 1) | function ci(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o...
  function fi (line 1) | function fi(t){return t.replace(li,"\\$&")}
  function hi (line 1) | function hi(t){return new RegExp("^(?:"+t.map(fi).join("|")+")","i")}
  function di (line 1) | function di(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}
  function pi (line 1) | function pi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r...
  function gi (line 1) | function gi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r...
  function mi (line 1) | function mi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r...
  function yi (line 1) | function yi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r...
  function vi (line 1) | function vi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r...
  function _i (line 1) | function _i(t,e,n){var r=si.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r...
  function xi (line 1) | function xi(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r...
  function bi (line 1) | function bi(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n...
  function wi (line 1) | function wi(t,e,n){var r=si.exec(e.slice(n,n+1));return r?(t.q=3*r[0]-3,...
  function ki (line 1) | function ki(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+...
  function Ai (line 1) | function Ai(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r...
  function Mi (line 1) | function Mi(t,e,n){var r=si.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[...
  function Ei (line 1) | function Ei(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r...
  function Di (line 1) | function Di(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r...
  function Ci (line 1) | function Ci(t,e,n){var r=si.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r...
  function Fi (line 1) | function Fi(t,e,n){var r=si.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r...
  function Si (line 1) | function Si(t,e,n){var r=si.exec(e.slice(n,n+6));return r?(t.L=Math.floo...
  function $i (line 1) | function $i(t,e,n){var r=ui.exec(e.slice(n,n+1));return r?n+r[0].length:-1}
  function Ti (line 1) | function Ti(t,e,n){var r=si.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0]....
  function Bi (line 1) | function Bi(t,e,n){var r=si.exec(e.slice(n));return r?(t.s=+r[0],n+r[0]....
  function zi (line 1) | function zi(t,e){return ci(t.getDate(),e,2)}
  function Ni (line 1) | function Ni(t,e){return ci(t.getHours(),e,2)}
  function Oi (line 1) | function Oi(t,e){return ci(t.getHours()%12||12,e,2)}
  function Ri (line 1) | function Ri(t,e){return ci(1+pn.count(Nn(t),t),e,3)}
  function Ui (line 1) | function Ui(t,e){return ci(t.getMilliseconds(),e,3)}
  function Li (line 1) | function Li(t,e){return Ui(t,e)+"000"}
  function qi (line 1) | function qi(t,e){return ci(t.getMonth()+1,e,2)}
  function Pi (line 1) | function Pi(t,e){return ci(t.getMinutes(),e,2)}
  function ji (line 1) | function ji(t,e){return ci(t.getSeconds(),e,2)}
  function Ii (line 1) | function Ii(t){var e=t.getDay();return 0===e?7:e}
  function Wi (line 1) | function Wi(t,e){return ci(vn.count(Nn(t)-1,t),e,2)}
  function Hi (line 1) | function Hi(t){var e=t.getDay();return e>=4||0===e?wn(t):wn.ceil(t)}
  function Yi (line 1) | function Yi(t,e){return t=Hi(t),ci(wn.count(Nn(t),t)+(4===Nn(t).getDay()...
  function Gi (line 1) | function Gi(t){return t.getDay()}
  function Vi (line 1) | function Vi(t,e){return ci(_n.count(Nn(t)-1,t),e,2)}
  function Xi (line 1) | function Xi(t,e){return ci(t.getFullYear()%100,e,2)}
  function Ji (line 1) | function Ji(t,e){return ci((t=Hi(t)).getFullYear()%100,e,2)}
  function Zi (line 1) | function Zi(t,e){return ci(t.getFullYear()%1e4,e,4)}
  function Qi (line 1) | function Qi(t,e){var n=t.getDay();return ci((t=n>=4||0===n?wn(t):wn.ceil...
  function Ki (line 1) | function Ki(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+c...
  function to (line 1) | function to(t,e){return ci(t.getUTCDate(),e,2)}
  function eo (line 1) | function eo(t,e){return ci(t.getUTCHours(),e,2)}
  function no (line 1) | function no(t,e){return ci(t.getUTCHours()%12||12,e,2)}
  function ro (line 1) | function ro(t,e){return ci(1+gn.count(On(t),t),e,3)}
  function io (line 1) | function io(t,e){return ci(t.getUTCMilliseconds(),e,3)}
  function oo (line 1) | function oo(t,e){return io(t,e)+"000"}
  function ao (line 1) | function ao(t,e){return ci(t.getUTCMonth()+1,e,2)}
  function so (line 1) | function so(t,e){return ci(t.getUTCMinutes(),e,2)}
  function uo (line 1) | function uo(t,e){return ci(t.getUTCSeconds(),e,2)}
  function lo (line 1) | function lo(t){var e=t.getUTCDay();return 0===e?7:e}
  function co (line 1) | function co(t,e){return ci(En.count(On(t)-1,t),e,2)}
  function fo (line 1) | function fo(t){var e=t.getUTCDay();return e>=4||0===e?Sn(t):Sn.ceil(t)}
  function ho (line 1) | function ho(t,e){return t=fo(t),ci(Sn.count(On(t),t)+(4===On(t).getUTCDa...
  function po (line 1) | function po(t){return t.getUTCDay()}
  function go (line 1) | function go(t,e){return ci(Dn.count(On(t)-1,t),e,2)}
  function mo (line 1) | function mo(t,e){return ci(t.getUTCFullYear()%100,e,2)}
  function yo (line 1) | function yo(t,e){return ci((t=fo(t)).getUTCFullYear()%100,e,2)}
  function vo (line 1) | function vo(t,e){return ci(t.getUTCFullYear()%1e4,e,4)}
  function _o (line 1) | function _o(t,e){var n=t.getUTCDay();return ci((t=n>=4||0===n?Sn(t):Sn.c...
  function xo (line 1) | function xo(){return"+0000"}
  function bo (line 1) | function bo(){return"%"}
  function wo (line 1) | function wo(t){return+t}
  function ko (line 1) | function ko(t){return Math.floor(+t/1e3)}
  function Ao (line 1) | function Ao(t){const e={};return n=>e[n]||(e[n]=t(n))}
  function Mo (line 1) | function Mo(t){const e=Ao(t.format),n=t.formatPrefix;return{format:e,for...
  function Co (line 1) | function Co(){return Eo=Mo({format:Ie,formatPrefix:We})}
  function Fo (line 1) | function Fo(t){return Mo(Ge(t))}
  function So (line 1) | function So(t){return arguments.length?Eo=Fo(t):Eo}
  function $o (line 1) | function $o(t,e,n){A(n=n||{})||s(`Invalid time multi-format specifier: $...
  function To (line 1) | function To(t){const e=Ao(t.format),n=Ao(t.utcFormat);return{timeFormat:...
  function Bo (line 1) | function Bo(){return Do=To({format:ni,parse:ri,utcFormat:ii,utcParse:oi})}
  function zo (line 1) | function zo(t){return To(ti(t))}
  function No (line 1) | function No(t){return arguments.length?Do=zo(t):Do}
  function Ro (line 1) | function Ro(t,e){const n=t?Fo(t):So(),r=e?zo(e):No();return Oo(n,r)}
  function Uo (line 1) | function Uo(t,e){const n=arguments.length;return n&&2!==n&&s("defaultLoc...
  function Io (line 1) | async function Io(t,e){const n=await this.sanitize(t,e),r=n.href;return ...
  function Wo (line 1) | async function Wo(t,e){e=ot({},this.options,e);const n=this.fileAccess,r...
  function Ho (line 1) | function Ho(t){return t?e=>new Promise(((n,r)=>{t.readFile(e,((t,e)=>{t?...
  function Yo (line 1) | async function Yo(){s("No file system access.")}
  function Go (line 1) | function Go(t){return t?async function(e,n){const r=ot({},this.options.h...
  function Vo (line 1) | async function Vo(){s("No HTTP fetch method available.")}
  function ta (line 1) | function ta(t,e){if(!t||!t.length)return"unknown";const n=t.length,r=Qo....
  function ea (line 1) | function ea(t,e){return e.reduce(((e,n)=>(e[n]=ta(t,n),e)),{})}
  function na (line 1) | function na(t){const e=function(e,n){const r={delimiter:t};return ra(e,n...
  function ra (line 1) | function ra(t,e){return e.header&&(t=e.header.map(Ct).join(e.delimiter)+...
  function ia (line 1) | function ia(t,e){const n=e&&e.property?l(e.property):f;return!A(t)||(r=t...
  function aa (line 1) | function aa(t,e){let n,r,i,o;return t=ia(t,e),e&&e.feature?(n=Gt,i=e.fea...
  function ua (line 1) | function ua(t,e){return arguments.length>1?(sa[t]=e,this):lt(sa,t)?sa[t]...
  function la (line 1) | function la(t){const e=ua(t);return e&&e.responseType||"text"}
  function ca (line 1) | function ca(t,e,n,r){const i=ua((e=e||{}).type||"json");return i||s("Unk...
  function ha (line 1) | function ha(t){const e=t||f,n=[],r={};return n.add=t=>{const i=e(t);retu...
  function da (line 1) | async function da(t,e){try{await e(t)}catch(e){t.error(e)}}
  function ma (line 1) | function ma(t){return!(!t||!ya(t))}
  function ya (line 1) | function ya(t){return t[pa]}
  function va (line 1) | function va(t,e){return t[pa]=e,t}
  function _a (line 1) | function _a(t){const e=t===Object(t)?t:{data:t};return ya(e)?e:va(e,ga++)}
  function xa (line 1) | function xa(t){return ba(t,_a({}))}
  function ba (line 1) | function ba(t,e){for(const n in t)e[n]=t[n];return e}
  function wa (line 1) | function wa(t,e){return va(e,ya(t))}
  function ka (line 1) | function ka(t,e){return t?e?(n,r)=>t(n,r)||ya(e(n))-ya(e(r)):(e,n)=>t(e,...
  function Aa (line 1) | function Aa(t){return t&&t.constructor===Ma}
  function Ma (line 1) | function Ma(){const t=[],e=[],n=[],r=[],i=[];let o=null,a=!1;return{cons...
  function Da (line 1) | function Da(){Object.defineProperty(this,Ea,{writable:!0,value:{}})}
  method set (line 1) | set(t,e,n,r){const i=this,o=i[t],a=i[Ea];return null!=e&&e>=0?(o[e]!==n|...
  method modified (line 1) | modified(t,e){const n=this[Ea];if(!arguments.length){for(const t in n)if...
  method clear (line 1) | clear(){return this[Ea]={},this}
  function Sa (line 1) | function Sa(t,e,n,r){this.id=++Ca,this.value=t,this.stamp=-1,this.rank=-...
  function $a (line 1) | function $a(t){return function(e){const n=this.flags;return 0===argument...
  method targets (line 1) | targets(){return this._targets||(this._targets=ha(c))}
  method set (line 1) | set(t){return this.value!==t?(this.value=t,1):0}
  method parameters (line 1) | parameters(t,e,n){e=!1!==e;const r=this._argval=this._argval||new Da,i=t...
  method marshall (line 1) | marshall(t){const e=this._argval||Fa,n=this._argops;let r,i,o,a;if(n){co...
  method detach (line 1) | detach(){const t=this._argops;let e,n,r,i;if(t)for(e=0,n=t.length;e{const n=Date.now();return ...
  method debounce (line 1) | debounce(t){const e=za();return this.targets().add(za(null,null,it(t,(t=...
  method between (line 1) | between(t,e){let n=!1;return t.targets().add(za(null,null,(()=>n=!0))),e...
  method detach (line 1) | detach(){this._filter=p,this._targets=null}
  function Oa (line 1) | function Oa(t,e,n,r,i,o){const a=ot({},o,Na);let s,u;J(n)||(n=rt(n)),voi...
  function Ra (line 1) | function Ra(t,e,n,r,i,o){if(void 0===r)e.targets().add(n);else{const a=o...
  function La (line 1) | function La(t,e,n){this.dataflow=t,this.stamp=null==e?-1:e,this.add=[],t...
  function qa (line 1) | function qa(t,e){const n=[];return Nt(t,e,(t=>n.push(t))),n}
  function Pa (line 1) | function Pa(t,e){const n={};return t.visit(e,(t=>{n[ya(t)]=1})),t=>n[ya(...
  function ja (line 1) | function ja(t,e){return t?(n,r)=>t(n,r)&&e(n,r):e}
  function Ia (line 1) | function Ia(t,e,n,r){const i=this;let o=0;this.dataflow=t,this.stamp=e,t...
  function Wa (line 1) | function Wa(t){return t.error("Dataflow already running. Use runAsync() ...
  method fork (line 1) | fork(t){return new La(this.dataflow).init(this,t)}
  method clone (line 1) | clone(){const t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slic...
  method addAll (line 1) | addAll(){let t=this;return!t.source||t.add===t.rem||!t.rem.length&&t.sou...
  method init (line 1) | init(t,e){const n=this;return n.stamp=t.stamp,n.encode=t.encode,!t.field...
  method runAfter (line 1) | runAfter(t){this.dataflow.runAfter(t)}
  method changed (line 1) | changed(t){const e=t||7;return 1&e&&this.add.length||2&e&&this.rem.lengt...
  method reflow (line 1) | reflow(t){if(t)return this.fork(7).reflow();const e=this.add.length,n=th...
  method clean (line 1) | clean(t){return arguments.length?(this.cleans=!!t,this):this.cleans}
  method modifies (line 1) | modifies(t){const e=this.fields||(this.fields={});return k(t)?t.forEach(...
  method modified (line 1) | modified(t,e){const n=this.fields;return!(!e&&!this.mod.length||!n)&&(ar...
  method filter (line 1) | filter(t,e){const n=this;return 1&t&&(n.addF=ja(n.addF,e)),2&t&&(n.remF=...
  method materialize (line 1) | materialize(t){const e=this;return 1&(t=t||7)&&e.addF&&(e.add=qa(e.add,e...
  method visit (line 1) | visit(t,e){const n=this,r=e;if(16&t)return Nt(n.source,n.srcF,r),n;1&t&&...
  method fork (line 1) | fork(t){const e=new La(this.dataflow).init(this,t&this.NO_FIELDS);return...
  method changed (line 1) | changed(t){return this.changes&t}
  method modified (line 1) | modified(t){const e=this,n=e.fields;return n&&e.changes&e.MOD?k(t)?t.som...
  method filter (line 1) | filter(){s("MultiPulse does not support filtering.")}
  method materialize (line 1) | materialize(){s("MultiPulse does not support materialization.")}
  method visit (line 1) | visit(t,e){const n=this,r=n.pulses,i=r.length;let o=0;if(t&n.SOURCE)for(...
  function Ya (line 1) | function Ya(t){let e=[];return{clear:()=>e=[],size:()=>e.length,peek:()=...
  function Ga (line 1) | function Ga(t,e,n,r){let i,o;const a=t[n];for(;n>e&&(o=n-1>>1,i=t[o],r(a...
  function Va (line 1) | function Va(){this.logger(w()),this.logLevel(v),this._clock=0,this._rank...
  function Xa (line 1) | function Xa(t){return function(){return this._log[t].apply(this,argument...
  function Ja (line 1) | function Ja(t,e){Sa.call(this,t,null,e)}
  method stamp (line 1) | stamp(){return this._clock}
  method loader (line 1) | loader(t){return arguments.length?(this._loader=t,this):this._loader}
  method locale (line 1) | locale(t){return arguments.length?(this._locale=t,this):this._locale}
  method logger (line 1) | logger(t){return arguments.length?(this._log=t,this):this._log}
  method run (line 1) | run(t){if(t.stampt);const i=t.length,o=new Float64Array(i);...
  function cs (line 1) | function cs(e,n){e=e||0,n=null==n?1:n;let r,i,o=0,a=0;if(ls==ls)o=ls,ls=...
  function fs (line 1) | function fs(t,e,n){const r=(t-(e||0))/(n=null==n?1:n);return Math.exp(-....
  function hs (line 1) | function hs(t,e,n){const r=(t-(e=e||0))/(n=null==n?1:n),i=Math.abs(r);le...
  function ds (line 1) | function ds(t,e,n){return t<0||t>1?NaN:(e||0)+(null==n?1:n)*us*function(...
  function ps (line 1) | function ps(t,e){let n,r;const i={mean(t){return arguments.length?(n=t||...
  function gs (line 1) | function gs(e,n){const r=ps();let i=0;const o={data(t){return arguments....
  function ms (line 1) | function ms(t,e){return t=t||0,e=null==e?1:e,Math.exp(t+cs()*e)}
  function ys (line 1) | function ys(t,e,n){if(t<=0)return 0;e=e||0,n=null==n?1:n;const r=(Math.l...
  function vs (line 1) | function vs(t,e,n){return hs(Math.log(t),e,n)}
  function _s (line 1) | function _s(t,e,n){return Math.exp(ds(t,e,n))}
  function xs (line 1) | function xs(t,e){let n,r;const i={mean(t){return arguments.length?(n=t||...
  function bs (line 1) | function bs(e,n){let r,i=0;const o={weights(t){return arguments.length?(...
  function ws (line 1) | function ws(e,n){return null==n&&(n=null==e?1:e,e=0),e+(n-e)*t.random()}
  function ks (line 1) | function ks(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=e&&t<=n?1/(n-e...
  function As (line 1) | function As(t,e,n){return null==n&&(n=null==e?1:e,e=0),tn?1:(t-e)...
  function Ms (line 1) | function Ms(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=0&&t<=1?e+t*(n...
  function Es (line 1) | function Es(t,e){let n,r;const i={min(t){return arguments.length?(n=t||0...
  function Ds (line 1) | function Ds(t,e,n){let r=0,i=0;for(const o of t){const t=n(o);null==e(o)...
  function Cs (line 1) | function Cs(t,e,n,r){const i=r-t*t,o=Math.abs(i)<1e-24?0:(n-t*e)/i;retur...
  function Fs (line 1) | function Fs(t,e,n,r){t=t.filter((t=>{let r=e(t),i=n(t);return null!=r&&(...
  function Ss (line 1) | function Ss(t,e,n,r){let i,o,a=-1;for(const s of t)i=e(s),o=n(s),null!=i...
  function $s (line 1) | function $s(t,e,n,r,i){let o=0,a=0;return Ss(t,e,n,((t,e)=>{const n=e-i(...
  function Ts (line 1) | function Ts(t,e,n){let r=0,i=0,o=0,a=0,s=0;Ss(t,e,n,((t,e)=>{++s,r+=(t-r...
  function Bs (line 1) | function Bs(t,e,n){let r=0,i=0,o=0,a=0,s=0;Ss(t,e,n,((t,e)=>{++s,t=Math....
  function zs (line 1) | function zs(t,e,n){const[r,i,o,a]=Fs(t,e,n);let s,u,l,c=0,f=0,h=0,d=0,p=...
  function Ns (line 1) | function Ns(t,e,n){let r=0,i=0,o=0,a=0,s=0,u=0;Ss(t,e,n,((t,e)=>{const n...
  function Os (line 1) | function Os(t,e,n){const[r,i,o,a]=Fs(t,e,n),s=r.length;let u,l,c,f,h=0,d...
  function Rs (line 1) | function Rs(t,e,n,r){if(0===r)return Ds(t,e,n);if(1===r)return Ts(t,e,n)...
  function Us (line 1) | function Us(t,e,n,r){const i=Array(t);let o,a,s,u;for(o=0;o=t.length))fo...
  function Is (line 1) | function Is(t,e,n,r){n=n||25,r=Math.max(n,r||200);const i=e=>[e,t(e)],o=...
  function Ws (line 1) | function Ws(t,e,n,r,i){const o=Math.atan2(i*(n[1]-t[1]),r*(n[0]-t[0])),a...
  function Hs (line 1) | function Hs(t){return t&&t.length?1===t.length?t[0]:(e=t,t=>{const n=e.l...
  function Ys (line 1) | function Ys(t,e,n){return n||t+(e?"_"+e:"")}
  function Zs (line 1) | function Zs(t,e,n){return Xs[t](n,e)}
  function Qs (line 1) | function Qs(t,e){return t.idx-e.idx}
  function Ks (line 1) | function Ks(){this.valid=0,this.missing=0,this._ops.forEach((t=>null==t....
  function tu (line 1) | function tu(t,e){null!=t&&""!==t?t==t&&(++this.valid,this._ops.forEach((...
  function eu (line 1) | function eu(t,e){null!=t&&""!==t?t==t&&(--this.valid,this._ops.forEach((...
  function nu (line 1) | function nu(t){return this._out.forEach((e=>t[e.out]=e.value(this))),t}
  function ru (line 1) | function ru(t,e){const n=e||f,r=function(t){const e={};t.forEach((t=>e[t...
  function iu (line 1) | function iu(t){this._key=t?l(t):ya,this.reset()}
  function au (line 1) | function au(t){Ja.call(this,null,t),this._adds=[],this._mods=[],this._al...
  method transform (line 1) | transform(t,e){const n=this,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.modifi...
  method cross (line 1) | cross(){const t=this,e=t.value,n=t._dnames,r=n.map((()=>({}))),i=n.lengt...
  method init (line 1) | init(t){const e=this._inputs=[],i=this._outputs=[],o={};function a(t){co...
  method cell (line 1) | cell(t,e){let n=this.value[t];return n?0===n.num&&this._drop&&n.stamp...
  function lu (line 1) | function lu(t){Ja.call(this,[],t)}
  function cu (line 1) | function cu(t){Sa.call(this,null,fu,t)}
  function fu (line 1) | function fu(t){return this.value&&!t.modified()?this.value:Q(t.fields,t....
  function hu (line 1) | function hu(t){Ja.call(this,null,t)}
  function du (line 1) | function du(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=!1!==t.interval,i=this._bins(t),o=i.start,a=i.ste...
  method _bins (line 1) | _bins(t){if(this.value&&!t.modified())return this.value;const i=t.field,...
  method transform (line 1) | transform(t,e){const n=e.fork(e.ALL),r=uu(ya,this.value,n.materialize(n....
  method transform (line 1) | transform(t,e){const n=e=>n=>{for(var r,i=function(t,e,n){switch(e){case...
  method _parameterCheck (line 1) | _parameterCheck(t,e){let n=!1;return!t.modified("stopwords")&&this._stop...
  method _finish (line 1) | _finish(t,e){const n=this._counts,r=this._tuples||(this._tuples={}),i=e[...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.as||["a","b"],i=r[0],o=r[...
  function mu (line 1) | function mu(t,e){const n=t[gu];lt(pu,n)||s("Unknown distribution functio...
  function yu (line 1) | function yu(t){Ja.call(this,null,t)}
  function xu (line 1) | function xu(t,e){return t?t.map(((t,r)=>e[r]||n(t))):null}
  function bu (line 1) | function bu(t,e,n){const r=[],i=t=>t(u);let o,a,s,u,l,c;if(null==e)r.pus...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function wu (line 1) | function wu(t){Ja.call(this,null,t)}
  function ku (line 1) | function ku(t){Sa.call(this,null,Au,t),this.modified(!0)}
  function Au (line 1) | function Au(t){const i=t.expr;return this.value&&!t.modified("expr")?thi...
  function Mu (line 1) | function Mu(t){Ja.call(this,[void 0,void 0],t)}
  function Eu (line 1) | function Eu(t,e){Sa.call(this,t),this.parent=e,this.count=0}
  function Du (line 1) | function Du(t){Ja.call(this,{},t),this._keys=ft();const e=this._targets=...
  function Cu (line 1) | function Cu(t){Sa.call(this,null,Fu,t)}
  function Fu (line 1) | function Fu(t){return this.value&&!t.modified()?this.value:k(t.name)?V(t...
  function Su (line 1) | function Su(t){Ja.call(this,ft(),t)}
  function $u (line 1) | function $u(t){Ja.call(this,[],t)}
  function Tu (line 1) | function Tu(t){Ja.call(this,[],t)}
  function Bu (line 1) | function Bu(t){Ja.call(this,null,t)}
  function zu (line 1) | function zu(t){Ja.call(this,[],t)}
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified()&&!e.changed())return e;const...
  method transform (line 1) | transform(t,e){const r=this.value,i=t.field,o=e.changed()||e.modified(i....
  method connect (line 1) | connect(t){return this.detachSubflow=t.detachSubflow,this.targets().add(...
  method add (line 1) | add(t){this.count+=1,this.value.add.push(t)}
  method rem (line 1) | rem(t){this.count-=1,this.value.rem.push(t)}
  method mod (line 1) | mod(t){this.value.mod.push(t)}
  method init (line 1) | init(t){this.value.init(t,t.NO_SOURCE)}
  method evaluate (line 1) | evaluate(){return this.value}
  method activate (line 1) | activate(t){this._targets[this._targets.active++]=t}
  method subflow (line 1) | subflow(t,e,n,r){const i=this.value;let o,a,s=lt(i,t)&&i[t];return s?s.v...
  method clean (line 1) | clean(){const t=this.value;let e=0;for(const n in t)if(0===t[n].count){c...
  method initTargets (line 1) | initTargets(t){const e=this._targets,n=e.length,r=t?t.length:0;let i=0;f...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.key,i=t.subflow,o=this._keys,a=t.m...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=this.value,i=e.fork(),o=i.add,a=i.re...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.fields,i=xu(r,t.as||[]),o...
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE),i=t.fields,o=i.map(n),a=t.as|...
  method transform (line 1) | transform(t,e){const n=t.expr,r=t.as,i=t.modified(),o=t.initonly?e.ADD:i...
  method transform (line 1) | transform(t,e){const n=e.fork(e.ALL),r=t.generator;let i,o,a,s=this.valu...
  function Ru (line 1) | function Ru(t){Ja.call(this,[],t)}
  function Uu (line 1) | function Uu(t){au.call(this,t)}
  function Lu (line 1) | function Lu(t){Ja.call(this,null,t)}
  function qu (line 1) | function qu(t){Sa.call(this,null,Pu,t)}
  function Pu (line 1) | function Pu(t){return this.value&&!t.modified()?this.value:bt(t.fields,t...
  function ju (line 1) | function ju(t){Ja.call(this,[],t),this._pending=null}
  function Iu (line 1) | function Iu(t,e,n){n.forEach(_a);const r=e.fork(e.NO_FIELDS&e.NO_SOURCE)...
  function Wu (line 1) | function Wu(t){Ja.call(this,{},t)}
  function Hu (line 1) | function Hu(t){Sa.call(this,null,Yu,t)}
  function Yu (line 1) | function Yu(t){if(this.value&&!t.modified())return this.value;const e=t....
  function Gu (line 1) | function Gu(t){Sa.call(this,null,Vu,t)}
  function Vu (line 1) | function Vu(t){return this.value&&!t.modified()?this.value:t.values.redu...
  function Xu (line 1) | function Xu(t){Ja.call(this,null,t)}
  function Ju (line 1) | function Ju(t){au.call(this,t)}
  function Zu (line 1) | function Zu(t){Du.call(this,t)}
  function Qu (line 1) | function Qu(t){Ja.call(this,null,t)}
  function Ku (line 1) | function Ku(t){Ja.call(this,null,t)}
  function tl (line 1) | function tl(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var r,i,o,a,u,l,c,f,h,d,p=e.fork(e.ALL),g=function(t){var...
  method transform (line 1) | transform(t,e){const n=this,r=t.modified();let i;return n.value&&(r||e.m...
  method changes (line 1) | changes(){const t=this._adds,e=this._mods;let n,r;for(n=0,r=this._alen;n...
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  method transform (line 1) | transform(t,e){const n=e.dataflow;if(this._pending)return Iu(this,e,this...
  method transform (line 1) | transform(t,e){const r=t.fields,i=t.index,o=t.values,a=null==t.default?n...
  method transform (line 1) | transform(t,e){return this.modified(t.modified()),this.value=t,e.fork(e....
  method transform (line 1) | transform(t,n){return this._transform(function(t,n){const i=t.field,o=t....
  method transform (line 1) | transform(t,e){const n=t.subflow,i=t.field,o=t=>this.subflow(ya(t),n,e,t...
  method transform (line 1) | transform(t,e){const n=e.fork(e.NO_SOURCE),r=t.fields,i=xu(t.fields,t.as...
  method transform (line 1) | transform(t,e){return this.value=t.value,t.modified("value")?e.fork(e.NO...
  function el (line 1) | function el(t){Ja.call(this,null,t)}
  function nl (line 1) | function nl(t){Ja.call(this,[],t),this.count=0}
  function rl (line 1) | function rl(t){Ja.call(this,null,t)}
  function il (line 1) | function il(t){Ja.call(this,null,t),this.modified(!0)}
  function ol (line 1) | function ol(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.as||["prob","...
  method transform (line 1) | transform(t,e){let n,r;return this.value?r=this.value:(n=e=e.addAll(),r=...
  method transform (line 1) | transform(e,n){const r=n.fork(n.NO_SOURCE),i=e.modified("size"),o=e.size...
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified())return;const n=e.materialize...
  method transform (line 1) | transform(t,e){return this.value=e.source,e.changed()?e.fork(e.NO_SOURCE...
  function sl (line 1) | function sl(t){Ja.call(this,ft(),t)}
  function ul (line 1) | function ul(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=t.field,i=!1!==t.interval,o="utc"===t.timezone,a=...
  method _floor (line 1) | _floor(t,e){const n="utc"===t.timezone,{units:r,step:i}=t.units?{units:t...
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.field,i=this.value,o=t=>i.set(r(t)...
  method transform (line 1) | transform(t,e){(!this.value||t.modified("field")||t.modified("sort")||e....
  function fl (line 1) | function fl(t){const e=V(t.ops),i=V(t.fields),o=V(t.params),a=V(t.aggreg...
  function dl (line 1) | function dl(t){Ja.call(this,{},t),this._mlen=0,this._mods=[]}
  function pl (line 1) | function pl(t,e,n,r){const i=r.sort,o=i&&!r.ignorePeers,a=r.frame||[null...
  function gl (line 1) | function gl(t,e,n,r){t.p0=t.i0,t.p1=t.i1,t.i0=null==e[0]?0:Math.max(0,n-...
  function ml (line 1) | function ml(t,e){const n=t.i0,r=t.i1-1,i=t.compare,o=t.data,a=o.length-1...
  method transform (line 1) | transform(t,e){this.stamp=e.stamp;const n=t.modified(),r=ka(t.sort),i=Hs...
  method group (line 1) | group(t){let e=this.value[t];return e||(e=this.value[t]=uu(ya),e.stamp=-...
  function vl (line 1) | function vl(t){return function(){return t}}
  function Sl (line 1) | function Sl(t){return t>=1?Cl:t<=-1?-Cl:Math.asin(t)}
  function Nl (line 1) | function Nl(t){this._+=t[0];for(let e=1,n=t.length;eEl){v...
  function pc (line 1) | function pc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new pc(t,e):new sc(t,0)}
  function mc (line 1) | function mc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new mc(t,e):new lc(t,0)}
  function vc (line 1) | function vc(t,e){this._context=t,this._alpha=e}
  function n (line 1) | function n(t){return e?new vc(t,e):new fc(t,0)}
  function xc (line 1) | function xc(t){this._context=t}
  function bc (line 1) | function bc(t){return t<0?-1:1}
  function wc (line 1) | function wc(t,e,n){var r=t._x1-t._x0,i=e-t._x1,o=(t._y1-t._y0)/(r||i<0&&...
  function kc (line 1) | function kc(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}
  function Ac (line 1) | function Ac(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,s=(o-r)/3;t._cont...
  function Mc (line 1) | function Mc(t){this._context=t}
  function Ec (line 1) | function Ec(t){this._context=new Dc(t)}
  function Dc (line 1) | function Dc(t){this._context=t}
  function Cc (line 1) | function Cc(t){this._context=t}
  function Fc (line 1) | function Fc(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new ...
  function Sc (line 1) | function Sc(t,e){this._context=t,this._t=e}
  function $c (line 1) | function $c(t,e){if("undefined"!=typeof document&&document.createElement...
  function Bc (line 1) | function Bc(t,e){switch(arguments.length){case 0:break;case 1:this.range...
  function zc (line 1) | function zc(t,e){switch(arguments.length){case 0:break;case 1:"function"...
  function Oc (line 1) | function Oc(){var t=new ue,e=[],n=[],r=Nc;function i(i){let o=t.get(i);i...
  function Rc (line 1) | function Rc(t,e,n){t.prototype=e.prototype=n,n.constructor=t}
  function Uc (line 1) | function Uc(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[...
  function Lc (line 1) | function Lc(){}
  function Kc (line 1) | function Kc(){return this.rgb().formatHex()}
  function tf (line 1) | function tf(){return this.rgb().formatRgb()}
  function ef (line 1) | function ef(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Hc.exec(t...
  function nf (line 1) | function nf(t){return new sf(t>>16&255,t>>8&255,255&t,1)}
  function rf (line 1) | function rf(t,e,n,r){return r<=0&&(t=e=n=NaN),new sf(t,e,n,r)}
  function of (line 1) | function of(t){return t instanceof Lc||(t=ef(t)),t?new sf((t=t.rgb()).r,...
  function af (line 1) | function af(t,e,n,r){return 1===arguments.length?of(t):new sf(t,e,n,null...
  function sf (line 1) | function sf(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}
  function uf (line 1) | function uf(){return`#${hf(this.r)}${hf(this.g)}${hf(this.b)}`}
  function lf (line 1) | function lf(){const t=cf(this.opacity);return`${1===t?"rgb(":"rgba("}${f...
  function cf (line 1) | function cf(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}
  function ff (line 1) | function ff(t){return Math.max(0,Math.min(255,Math.round(t)||0))}
  function hf (line 1) | function hf(t){return((t=ff(t))<16?"0":"")+t.toString(16)}
  function df (line 1) | function df(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=N...
  function pf (line 1) | function pf(t){if(t instanceof mf)return new mf(t.h,t.s,t.l,t.opacity);i...
  function gf (line 1) | function gf(t,e,n,r){return 1===arguments.length?pf(t):new mf(t,e,n,null...
  function mf (line 1) | function mf(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}
  function yf (line 1) | function yf(t){return(t=(t||0)%360)<0?t+360:t}
  function vf (line 1) | function vf(t){return Math.max(0,Math.min(1,t||0))}
  function _f (line 1) | function _f(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(...
  method copy (line 1) | copy(t){return Object.assign(new this.constructor,this,t)}
  method displayable (line 1) | displayable(){return this.rgb().displayable()}
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new sf(this.r*t,this.g*t,...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new sf(this.r*t,this.g*t,th...
  method rgb (line 1) | rgb(){return this}
  method clamp (line 1) | clamp(){return new sf(ff(this.r),ff(this.g),ff(this.b),cf(this.opacity))}
  method displayable (line 1) | displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5...
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new mf(this.h,this.s,this...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new mf(this.h,this.s,this.l...
  method rgb (line 1) | rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s...
  method clamp (line 1) | clamp(){return new mf(yf(this.h),vf(this.s),vf(this.l),cf(this.opacity))}
  method displayable (line 1) | displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&th...
  method formatHsl (line 1) | formatHsl(){const t=cf(this.opacity);return`${1===t?"hsl(":"hsla("}${yf(...
  function Ff (line 1) | function Ff(t){if(t instanceof $f)return new $f(t.l,t.a,t.b,t.opacity);i...
  function Sf (line 1) | function Sf(t,e,n,r){return 1===arguments.length?Ff(t):new $f(t,e,n,null...
  function $f (line 1) | function $f(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}
  function Tf (line 1) | function Tf(t){return t>Cf?Math.pow(t,1/3):t/Df+Mf}
  function Bf (line 1) | function Bf(t){return t>Ef?t*t*t:Df*(t-Mf)}
  function zf (line 1) | function zf(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-....
  function Nf (line 1) | function Nf(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}
  function Of (line 1) | function Of(t,e,n,r){return 1===arguments.length?function(t){if(t instan...
  function Rf (line 1) | function Rf(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}
  function Uf (line 1) | function Uf(t){if(isNaN(t.h))return new $f(t.l,0,0,t.opacity);var e=t.h*...
  method brighter (line 1) | brighter(t){return new $f(this.l+18*(null==t?1:t),this.a,this.b,this.opa...
  method darker (line 1) | darker(t){return new $f(this.l-18*(null==t?1:t),this.a,this.b,this.opaci...
  method rgb (line 1) | rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this....
  method brighter (line 1) | brighter(t){return new Rf(this.h,this.c,this.l+18*(null==t?1:t),this.opa...
  method darker (line 1) | darker(t){return new Rf(this.h,this.c,this.l-18*(null==t?1:t),this.opaci...
  method rgb (line 1) | rgb(){return Uf(this).rgb()}
  function Gf (line 1) | function Gf(t,e,n,r){return 1===arguments.length?function(t){if(t instan...
  function Vf (line 1) | function Vf(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}
  function Xf (line 1) | function Xf(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a...
  function Jf (line 1) | function Jf(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(...
  function Zf (line 1) | function Zf(t){var e=t.length;return function(n){var r=Math.floor(((n%=1...
  method brighter (line 1) | brighter(t){return t=null==t?Pc:Math.pow(Pc,t),new Vf(this.h,this.s,this...
  method darker (line 1) | darker(t){return t=null==t?qc:Math.pow(qc,t),new Vf(this.h,this.s,this.l...
  method rgb (line 1) | rgb(){var t=isNaN(this.h)?0:(this.h+120)*xf,e=+this.l,n=isNaN(this.s)?0:...
  function Kf (line 1) | function Kf(t,e){return function(n){return t+n*e}}
  function th (line 1) | function th(t,e){var n=e-t;return n?Kf(t,n>180||n<-180?n-360*Math.round(...
  function eh (line 1) | function eh(t){return 1==(t=+t)?nh:function(e,n){return n-e?function(t,e...
  function nh (line 1) | function nh(t,e){var n=e-t;return n?Kf(t,n):Qf(isNaN(t)?e:t)}
  function r (line 1) | function r(t,e){var r=n((t=af(t)).r,(e=af(e)).r),i=n(t.g,e.g),o=n(t.b,e....
  function ih (line 1) | function ih(t){return function(e){var n,r,i=e.length,o=new Array(i),a=ne...
  function sh (line 1) | function sh(t,e){e||(e=[]);var n,r=t?Math.min(e.length,t.length):0,i=e.s...
  function uh (line 1) | function uh(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}
  function lh (line 1) | function lh(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,o=new A...
  function ch (line 1) | function ch(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.se...
  function fh (line 1) | function fh(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}
  function hh (line 1) | function hh(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||...
  function gh (line 1) | function gh(t,e){var n,r,i,o=dh.lastIndex=ph.lastIndex=0,a=-1,s=[],u=[];...
  function mh (line 1) | function mh(t,e){var n,r=typeof e;return null==e||"boolean"===r?Qf(e):("...
  function yh (line 1) | function yh(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+...
  function bh (line 1) | function bh(t,e,n,r,i,o){var a,s,u;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e...
  function wh (line 1) | function wh(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return...
  function Mh (line 1) | function Mh(t){return((t=Math.exp(t))+1/t)/2}
  function i (line 1) | function i(t,i){var o,a,s=t[0],u=t[1],l=t[2],c=i[0],f=i[1],h=i[2],d=c-s,...
  function Dh (line 1) | function Dh(t){return function(e,n){var r=t((e=gf(e)).h,(n=gf(n)).h),i=n...
  function Sh (line 1) | function Sh(t){return function(e,n){var r=t((e=Of(e)).h,(n=Of(n)).h),i=n...
  function Bh (line 1) | function Bh(t){return function e(n){function r(e,r){var i=t((e=Gf(e)).h,...
  function Oh (line 1) | function Oh(t,e){void 0===e&&(e=t,t=mh);for(var n=0,r=e.length-1,i=e[0],...
  function Uh (line 1) | function Uh(t){return+t}
  function qh (line 1) | function qh(t){return t}
  function Ph (line 1) | function Ph(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:function(t){...
  function jh (line 1) | function jh(t,e,n){var r=t[0],i=t[1],o=e[0],a=e[1];return i-t(-e,n)}
  function nd (line 1) | function nd(t){const e=t(Jh,Zh),n=e.domain;let r,i,o=10;function a(){ret...
  function rd (line 1) | function rd(t){return function(e){return Math.sign(e)*Math.log1p(Math.ab...
  function id (line 1) | function id(t){return function(e){return Math.sign(e)*Math.expm1(Math.ab...
  function od (line 1) | function od(t){var e=1,n=t(rd(e),id(e));return n.constant=function(n){re...
  function ad (line 1) | function ad(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,...
  function sd (line 1) | function sd(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}
  function ud (line 1) | function ud(t){return t<0?-t*t:t*t}
  function ld (line 1) | function ld(t){var e=t(qh,qh),n=1;return e.exponent=function(e){return a...
  function cd (line 1) | function cd(){var t=ld(Hh());return t.copy=function(){return Wh(t,cd())....
  function fd (line 1) | function fd(t){return new Date(t)}
  function hd (line 1) | function hd(t){return t instanceof Date?+t:+new Date(+t)}
  function dd (line 1) | function dd(t,e,n,r,i,o,a,s,u,l){var c=Yh(),f=c.invert,h=c.domain,d=l("....
  function pd (line 1) | function pd(){var t,e,n,r,i,o=0,a=1,s=qh,u=!1;function l(e){return null=...
  function gd (line 1) | function gd(t,e){return e.domain(t.domain()).interpolator(t.interpolator...
  function md (line 1) | function md(){var t=Vh(pd()(qh));return t.copy=function(){return gd(t,md...
  function yd (line 1) | function yd(){var t=ld(pd());return t.copy=function(){return gd(t,yd())....
  function vd (line 1) | function vd(){var t,e,n,r,i,o,a,s=0,u=.5,l=1,c=1,f=qh,h=!1;function d(t)...
  function _d (line 1) | function _d(){var t=ld(vd());return t.copy=function(){return gd(t,_d())....
  function xd (line 1) | function xd(t){for(var e=t.length/6|0,n=new Array(e),r=0;r0?r:1:0}
  function Kd (line 1) | function Kd(){const t=Oc().unknown(void 0),e=t.domain,n=t.range;let r,i,...
  function tp (line 1) | function tp(t){const e=t.copy;return t.padding=t.paddingOuter,delete t.p...
  function op (line 1) | function op(t){return t[ip]=!0,t}
  function ap (line 1) | function ap(t,e,n){return arguments.length>1?(rp.set(t,function(t,e,n){c...
  function sp (line 1) | function sp(t){return rp.has(t)}
  function up (line 1) | function up(t,e){const n=rp.get(t);return n&&n.metadata[e]}
  function lp (line 1) | function lp(t){return up(t,Vd)}
  function cp (line 1) | function cp(t){return up(t,Xd)}
  function fp (line 1) | function fp(t){return up(t,Jd)}
  function hp (line 1) | function hp(t){return up(t,Bd)}
  function dp (line 1) | function dp(t){return up(t,Zd)}
  function pp (line 1) | function pp(t){return up(t,Pd)}
  function r (line 1) | function r(t){return null==t||isNaN(t=+t)?n:t}
  function o (line 1) | function o(){var t=0,e=Math.max(1,r.length);for(i=new Array(e-1);++t1?(kp[t]=e...
  function Sp (line 1) | function Sp(t,e,n){let r;return vt(e)&&(t.bins&&(e=Math.max(e,t.bins.len...
  function $p (line 1) | function $p(t,e,n){let r=t.range(),i=r[0],o=F(r),a=Cp;if(i>o&&(r=o,o=i,i...
  function Tp (line 1) | function Tp(t,e){return t.bins?$p(t,t.bins,e):t.ticks?t.ticks(e):t.domai...
  function Bp (line 1) | function Bp(t,e,n,r,i,o){const a=e.type;let s=Dp;if(a===Rd||i===Rd)s=t.t...
  function zp (line 1) | function zp(t,e,n){const r=Tp(t,e),i=t.base(),o=Math.log(i),a=Math.max(1...
  function Rp (line 1) | function Rp(t,e){return t.bins?function(t){const e=t.slice(0,-1);return ...
  function Lp (line 1) | function Lp(t,e,n,r,i,o,a){const s=Op[e.type]&&o!==Rd&&o!==Ud?function(t...
  function Hp (line 1) | function Hp(t,e,n,r){const i=r||e.type;return xt(n)&&function(t){return ...
  function Yp (line 1) | function Yp(t,e,n){n=n||{};const r=Math.max(3,n.maxlen||7),i=Hp(t,e,n.fo...
  function Xp (line 1) | function Xp(t){return t&&t.gradient}
  function Jp (line 1) | function Jp(t,e,n){const r=t.gradient;let i=t.id,o="radial"===r?Vp:"";re...
  function Zp (line 1) | function Zp(t,e){return null!=t?t:e}
  function Qp (line 1) | function Qp(t,e){var n,r=[];return n={gradient:"linear",x1:t?t[0]:0,y1:t...
  function tg (line 1) | function tg(t,e,n){var r=lt(Kp,t)&&Kp[t],i=null;return r&&(i=r.curve||r[...
  function ag (line 1) | function ag(t){const e=[];return(t.match(ng)||[]).forEach((t=>{let n=t[0...
  function pg (line 1) | function pg(t){const e=dg.call(t);if(hg[e])return hg[e];var n=t[0],r=t[1...
  function mg (line 1) | function mg(t,e,n){const r=gg[0]=t[0];if("a"===r||"A"===r)gg[1]=e*t[1],g...
  function yg (line 1) | function yg(t,e,n,r,i,o){var a,s,u,l,c,f=null,h=0,d=0,p=0,g=0,m=0,y=0;nu...
  function vg (line 1) | function vg(t,e,n,r){const i=function(t,e,n,r,i,o,a,s,u){const l=dg.call...
  function bg (line 1) | function bg(t){return lt(xg,t)?xg[t]:function(t){if(!lt(wg,t)){const e=a...
  function Ag (line 1) | function Ag(t){return t.x}
  function Mg (line 1) | function Mg(t){return t.y}
  function Eg (line 1) | function Eg(t){return t.width}
  function Dg (line 1) | function Dg(t){return t.height}
  function Cg (line 1) | function Cg(t){return"function"==typeof t?t:()=>+t}
  function Fg (line 1) | function Fg(t,e,n){return Math.max(e,Math.min(t,n))}
  function Sg (line 1) | function Sg(){var t=Ag,e=Mg,n=Eg,r=Dg,i=Cg(0),o=i,a=i,s=i,u=null;functio...
  function $g (line 1) | function $g(){var t,e,n,r,i,o,a,s,u=null;function l(t,e,n){const r=n/2;i...
  function Tg (line 1) | function Tg(t,e){return null!=t?t:e}
  function l (line 1) | function l(){var l,c,f=+t.apply(this,arguments),h=+e.apply(this,argument...
  function i (line 1) | function i(){let i;if(n||(n=i=r()),t.apply(this,arguments).draw(n,+e.app...
  function Ig (line 1) | function Ig(t){return t.cornerRadius||t.cornerRadiusTopLeft||t.cornerRad...
  function Wg (line 1) | function Wg(t,e,n,r){return qg.context(t)(e,n,r)}
  function Yg (line 1) | function Yg(){Hg=1}
  function Gg (line 1) | function Gg(t,e,n){var r=e.clip,i=t._defs,o=e.clip_id||(e.clip_id="clip"...
  function Vg (line 1) | function Vg(t){this.clear(),t&&this.union(t)}
  function Xg (line 1) | function Xg(t){this.mark=t,this.bounds=this.bounds||new Vg}
  function Jg (line 1) | function Jg(t){Xg.call(this,t),this.items=this.items||[]}
  method clone (line 1) | clone(){return new Vg(this)}
  method clear (line 1) | clear(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this....
  method empty (line 1) | empty(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&...
  method equals (line 1) | equals(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2...
  method set (line 1) | set(t,e,n,r){return nthis.x2&...
  method expand (line 1) | expand(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this}
  method round (line 1) | round(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),t...
  method scale (line 1) | scale(t){return this.x1*=t,this.y1*=t,this.x2*=t,this.y2*=t,this}
  method translate (line 1) | translate(t,e){return this.x1+=t,this.x2+=t,this.y1+=e,this.y2+=e,this}
  method rotate (line 1) | rotate(t,e,n){const r=this.rotatedPoints(t,e,n);return this.clear().add(...
  method rotatedPoints (line 1) | rotatedPoints(t,e,n){var{x1:r,y1:i,x2:o,y2:a}=this,s=Math.cos(t),u=Math....
  method union (line 1) | union(t){return t.x1this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=...
  method encloses (line 1) | encloses(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this....
  method alignsWith (line 1) | alignsWith(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||th...
  method intersects (line 1) | intersects(t){return t&&!(this.x2t.x2||this.y2this.x2||ethis.y2)}
  method width (line 1) | width(){return this.x2-this.x1}
  method height (line 1) | height(){return this.y2-this.y1}
  class Zg (line 1) | class Zg{constructor(t){this._pending=0,this._loader=t||fa()}pending(){r...
    method constructor (line 1) | constructor(t){this._pending=0,this._loader=t||fa()}
    method pending (line 1) | pending(){return this._pending}
    method sanitizeURL (line 1) | sanitizeURL(t){const e=this;return Qg(e),e._loader.sanitize(t,{context...
    method loadImage (line 1) | loadImage(t){const e=this,n=Tc();return Qg(e),e._loader.sanitize(t,{co...
    method ready (line 1) | ready(){const t=this;return new Promise((e=>{!function n(r){t.pending(...
  function Qg (line 1) | function Qg(t){t._pending+=1}
  function Kg (line 1) | function Kg(t){t._pending-=1}
  function tm (line 1) | function tm(t,e,n){if(e.stroke&&0!==e.opacity&&0!==e.strokeOpacity){cons...
  function vm (line 1) | function vm(t,e){return nm=t,e?(om=e*sg,am=lm=Math.cos(om),sm=Math.sin(o...
  method beginPath (line 1) | beginPath(){}
  method closePath (line 1) | closePath(){}
  method rect (line 1) | rect(t,e,n,r){om?(mm(t+n,e),mm(t+n,e+r),mm(t,e+r),ym(t,e)):(cm(t+n,e+r),...
  method quadraticCurveTo (line 1) | quadraticCurveTo(t,e,n,r){const i=pm(t,e),o=gm(t,e),a=pm(n,r),s=gm(n,r);...
  method bezierCurveTo (line 1) | bezierCurveTo(t,e,n,r,i,o){const a=pm(t,e),s=gm(t,e),u=pm(n,r),l=gm(n,r)...
  method arc (line 1) | arc(t,e,n,r,i,o){if(r+=om,i+=om,rm=n*Math.cos(i)+t,im=n*Math.sin(i)+e,Ma...
  function xm (line 1) | function xm(t,e,n,r){const i=(t-e)/(t+n-2*e);00&&(t....
  function Om (line 1) | function Om(t,e,n){var r=null!=(r=e.strokeWidth)?r:1;return!(r<=0)&&((n*...
  function Rm (line 1) | function Rm(t,e){return t.zindex-e.zindex||t.index-e.index}
  function Um (line 1) | function Um(t){if(!t.zdirty)return t.zitems;var e,n,r,i=t.items,o=[];for...
  function Lm (line 1) | function Lm(t,e){var n,r,i=t.items;if(!i||!i.length)return;const o=Um(t)...
  function qm (line 1) | function qm(t,e){var n,r,i=t.items;if(!i||!i.length)return null;const o=...
  function Pm (line 1) | function Pm(t){return function(e,n,r){Lm(n,(n=>{r&&!r.intersects(n.bound...
  function jm (line 1) | function jm(t){return function(e,n,r){!n.items.length||r&&!r.intersects(...
  function Im (line 1) | function Im(t,e,n,r){var i=null==n.opacity?1:n.opacity;0!==i&&(t(e,r)||(...
  function Wm (line 1) | function Wm(t){return t=t||p,function(e,n,r,i,o,a){return r*=e.pixelRati...
  function Hm (line 1) | function Hm(t,e){return function(n,r,i,o){var a,s,u=Array.isArray(r)?r[0...
  function Ym (line 1) | function Ym(t){return Wm(Hm(t))}
  function Gm (line 1) | function Gm(t,e){return"translate("+t+","+e+")"}
  function Vm (line 1) | function Vm(t){return"rotate("+t+")"}
  function Xm (line 1) | function Xm(t){return Gm(t.x||0,t.y||0)}
  function Jm (line 1) | function Jm(t,e,n){function r(t,n){var r=n.x||0,i=n.y||0,o=n.angle||0;t....
  function Qm (line 1) | function Qm(t,e,n){function r(t,n){t.beginPath(),e(t,n)}const i=Hm(r);re...
  function ty (line 1) | function ty(t,e){t.beginPath(),Ig(e)?Wg(t,e,0,0):t.rect(0,0,e.width||0,e...
  function ey (line 1) | function ey(t){const e=$m(t.strokeWidth,1);return null!=t.strokeOffset?t...
  function ny (line 1) | function ny(t,e){const n=ey(e);t("d",Wg(null,e,n,n))}
  function ry (line 1) | function ry(t,e,n,r){const i=ey(e);t.beginPath(),Wg(t,e,(n||0)+i,(r||0)+i)}
  function ly (line 1) | function ly(t,e){var n=t.image;return(!n||t.url&&t.url!==n.url)&&(n={com...
  function cy (line 1) | function cy(t,e){return null!=t.width?t.width:e&&e.width?!1!==t.aspect&&...
  function fy (line 1) | function fy(t,e){return null!=t.height?t.height:e&&e.height?!1!==t.aspec...
  function hy (line 1) | function hy(t,e){return"center"===t?e/2:"right"===t?e:0}
  function dy (line 1) | function dy(t,e){return"middle"===t?e/2:"bottom"===t?e:0}
  function my (line 1) | function my(t,e){var n=e.path;if(null==n)return!0;var r=e.x||0,i=e.y||0,...
  function vy (line 1) | function vy(t,e){t.beginPath(),Wg(t,e)}
  function xy (line 1) | function xy(t,e,n){var r,i,o,a;return!(!e.stroke||!Om(t,e,n))&&(r=e.x||0...
  function Ey (line 1) | function Ey(t){My.width=t&&km?Fy:Dy}
  function Dy (line 1) | function Dy(t,e){return Cy(Ny(t,e),$y(t))}
  function Cy (line 1) | function Cy(t,e){return~~(.8*t.length*e)}
  function Fy (line 1) | function Fy(t,e){return $y(t)<=0||!(e=Ny(t,e))?0:Sy(e,Ry(t))}
  function Sy (line 1) | function Sy(t,e){const n=`(${e}) ${t}`;let r=Ay.get(n);return void 0===r...
  function $y (line 1) | function $y(t){return null!=t.fontSize?+t.fontSize||0:11}
  function Ty (line 1) | function Ty(t){return null!=t.lineHeight?t.lineHeight:$y(t)+2}
  function By (line 1) | function By(t){return e=t.lineBreak&&t.text&&!k(t.text)?t.text.split(t.l...
  function zy (line 1) | function zy(t){const e=By(t);return(k(e)?e.length-1:0)*Ty(t)}
  function Ny (line 1) | function Ny(t,e){const n=null==e?"":(e+"").trim();return t.limit>0&&n.le...
  function Oy (line 1) | function Oy(t,e){var n=t.font;return(e&&n?String(n).replace(/"/g,"'"):n)...
  function Ry (line 1) | function Ry(t,e){return(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t...
  function Uy (line 1) | function Uy(t){var e=t.baseline,n=$y(t);return Math.round("top"===e?.79*...
  function Py (line 1) | function Py(t){var e,n=t.x||0,r=t.y||0,i=t.radius||0;return i&&(e=(t.the...
  function jy (line 1) | function jy(t,e,n){var r,i=My.height(e),o=e.align,a=Py(e),s=a.x1,u=a.y1,...
  function Yy (line 1) | function Yy(t,e,n){var r=Hy[t.mark.marktype],i=e||r.bound;return r.neste...
  function Vy (line 1) | function Vy(t,e,n){var r,i,o,a,s=Hy[t.marktype],u=s.bound,l=t.items,c=l&...
  function Jy (line 1) | function Jy(t,e){return JSON.stringify(t,Xy,e)}
  function Zy (line 1) | function Zy(t){return Qy("string"==typeof t?JSON.parse(t):t)}
  function Qy (line 1) | function Qy(t){var e,n,r,i=t.marktype,o=t.items;if(o)for(n=0,r=o.length;...
  class Ky (line 1) | class Ky{constructor(t){arguments.length?this.root=Zy(t):(this.root=tv({...
    method constructor (line 1) | constructor(t){arguments.length?this.root=Zy(t):(this.root=tv({marktyp...
    method toJSON (line 1) | toJSON(t){return Jy(this.root,t||0)}
    method mark (line 1) | mark(t,e,n){const r=tv(t,e=e||this.root.items[0]);return e.items[n]=r,...
  function tv (line 1) | function tv(t,e){const n={bounds:new Vg,clip:!!t.clip,group:e,interactiv...
  function ev (line 1) | function ev(t,e,n){return!t&&"undefined"!=typeof document&&document.crea...
  function nv (line 1) | function nv(t,e){e=e.toLowerCase();for(var n=t.childNodes,r=0,i=n.length...
  function rv (line 1) | function rv(t,e,n,r){var i,o=t.childNodes[e];return o&&o.tagName.toLower...
  function iv (line 1) | function iv(t,e){for(var n=t.childNodes,r=n.length;r>e;)t.removeChild(n[...
  function ov (line 1) | function ov(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.n...
  function av (line 1) | function av(t,e){const n=e.getBoundingClientRect();return[t.clientX-n.le...
  class sv (line 1) | class sv{constructor(t,e){this._active=null,this._handlers={},this._load...
    method constructor (line 1) | constructor(t,e){this._active=null,this._handlers={},this._loader=t||f...
    method initialize (line 1) | initialize(t,e,n){return this._el=t,this._obj=n||null,this.origin(e)}
    method element (line 1) | element(){return this._el}
    method canvas (line 1) | canvas(){return this._el&&this._el.firstChild}
    method origin (line 1) | origin(t){return arguments.length?(this._origin=t||[0,0],this):this._o...
    method scene (line 1) | scene(t){return arguments.length?(this._scene=t,this):this._scene}
    method on (line 1) | on(){}
    method off (line 1) | off(){}
    method _handlerIndex (line 1) | _handlerIndex(t,e,n){for(let r=t?t.length:0;--r>=0;)if(t[r].type===e&&...
    method handlers (line 1) | handlers(t){const e=this._handlers,n=[];if(t)n.push(...e[this.eventNam...
    method eventName (line 1) | eventName(t){const e=t.indexOf(".");return e<0?t:t.slice(0,e)}
    method handleHref (line 1) | handleHref(t,e,n){this._loader.sanitize(n,{context:"href"}).then((e=>{...
    method handleTooltip (line 1) | handleTooltip(t,e,n){if(e&&null!=e.tooltip){e=function(t,e,n,r){var i,...
    method getItemBoundingClientRect (line 1) | getItemBoundingClientRect(t){const e=this.canvas();if(!e)return;const ...
  function uv (line 1) | function uv(t,e,n,r){t.element().setAttribute("title",r||"")}
  class lv (line 1) | class lv{constructor(t){this._el=null,this._bgcolor=null,this._loader=ne...
    method constructor (line 1) | constructor(t){this._el=null,this._bgcolor=null,this._loader=new Zg(t)}
    method initialize (line 1) | initialize(t,e,n,r,i){return this._el=t,this.resize(e,n,r,i)}
    method element (line 1) | element(){return this._el}
    method canvas (line 1) | canvas(){return this._el&&this._el.firstChild}
    method background (line 1) | background(t){return 0===arguments.length?this._bgcolor:(this._bgcolor...
    method resize (line 1) | resize(t,e,n,r){return this._width=t,this._height=e,this._origin=n||[0...
    method dirty (line 1) | dirty(){}
    method render (line 1) | render(t,e){const n=this;return n._call=function(){n._render(t,e)},n._...
    method _render (line 1) | _render(){}
    method renderAsync (line 1) | renderAsync(t,e){const n=this.render(t,e);return this._ready?this._rea...
    method _load (line 1) | _load(t,e){var n=this,r=n._loader[t](e);if(!n._ready){const t=n._call;...
    method sanitizeURL (line 1) | sanitizeURL(t){return this._load("sanitizeURL",t)}
    method loadImage (line 1) | loadImage(t){return this._load("loadImage",t)}
  class Sv (line 1) | class Sv extends sv{constructor(t,e){super(t,e),this._down=null,this._to...
    method constructor (line 1) | constructor(t,e){super(t,e),this._down=null,this._touch=null,this._fir...
    method initialize (line 1) | initialize(t,e,n){return this._canvas=t&&nv(t,"canvas"),[bv,yv,dv,pv,g...
    method canvas (line 1) | canvas(){return this._canvas}
    method context (line 1) | context(){return this._canvas.getContext("2d")}
    method DOMMouseScroll (line 1) | DOMMouseScroll(t){this.fire(wv,t)}
    method pointerdown (line 1) | pointerdown(t){this._down=this._active,this.fire(dv,t)}
    method mousedown (line 1) | mousedown(t){this._down=this._active,this.fire(yv,t)}
    method click (line 1) | click(t){this._down===this._active&&(this.fire(bv,t),this._down=null)}
    method touchstart (line 1) | touchstart(t){this._touch=this.pickEvent(t.changedTouches[0]),this._fi...
    method touchmove (line 1) | touchmove(t){this.fire(Av,t,!0)}
    method touchend (line 1) | touchend(t){this.fire(Mv,t,!0),this._touch=null}
    method fire (line 1) | fire(t,e,n){const r=n?this._touch:this._active,i=this._handlers[t];if(...
    method on (line 1) | on(t,e){const n=this.eventName(t),r=this._handlers;return this._handle...
    method off (line 1) | off(t,e){const n=this.eventName(t),r=this._handlers[n],i=this._handler...
    method pickEvent (line 1) | pickEvent(t){const e=av(t,this._canvas),n=this._origin;return this.pic...
    method pick (line 1) | pick(t,e,n,r,i){const o=this.context();return Hy[t.marktype].pick.call...
  function Tv (line 1) | function Tv(t,e){$v(e).forEach((e=>function(t,e){const n=t.canvas();n&&!...
  function Bv (line 1) | function Bv(t,e,n){e.forEach((e=>t.fire(e,n)))}
  function zv (line 1) | function zv(t,e,n){return function(r){const i=this._active,o=this.pickEv...
  function Nv (line 1) | function Nv(t){return function(e){Bv(this,t,e),this._active=null}}
  function Ov (line 1) | function Ov(t,e,n,r,i,o){const a="undefined"!=typeof HTMLElement&&t inst...
  class Rv (line 1) | class Rv extends lv{constructor(t){super(t),this._options={},this._redra...
    method constructor (line 1) | constructor(t){super(t),this._options={},this._redraw=!1,this._dirty=n...
    method initialize (line 1) | initialize(t,e,n,r,i,o){return this._options=o||{},this._canvas=this._...
    method resize (line 1) | resize(t,e,n,r){if(super.resize(t,e,n,r),this._canvas)Ov(this._canvas,...
    method canvas (line 1) | canvas(){return this._canvas}
    method context (line 1) | context(){return this._options.externalContext||(this._canvas?this._ca...
    method dirty (line 1) | dirty(t){const e=this._tempb.clear().union(t.bounds);let n=t.mark.grou...
    method _render (line 1) | _render(t,e){const n=this.context(),r=this._origin,i=this._width,o=thi...
    method draw (line 1) | draw(t,e,n,r){if("group"!==e.marktype&&null!=r&&!r.includes(e.marktype...
    method clear (line 1) | clear(t,e,n,r){const i=this._options,o=this.context();"pdf"===i.type||...
  class Lv (line 1) | class Lv extends sv{constructor(t,e){super(t,e);const n=this;n._hrefHand...
    method constructor (line 1) | constructor(t,e){super(t,e);const n=this;n._hrefHandler=qv(n,((t,e)=>{...
    method initialize (line 1) | initialize(t,e,n){let r=this._svg;return r&&(r.removeEventListener(Fv,...
    method canvas (line 1) | canvas(){return this._svg}
    method on (line 1) | on(t,e){const n=this.eventName(t),r=this._handlers;if(this._handlerInd...
    method off (line 1) | off(t,e){const n=this.eventName(t),r=this._handlers[n],i=this._handler...
  function Zv (line 1) | function Zv(t,e){const n=!1===e.aria;if(t(Pv,n||void 0),n||null==e.descr...
  function Qv (line 1) | function Qv(t){return!1===t.aria?{[Pv]:!0}:Vv[t.role]?null:Xv[t.role]?fu...
  function Kv (line 1) | function Kv(t){return V(t.text).join(" ")}
  function t_ (line 1) | function t_(t){try{return V(F(t.items).items[0].text).join(" ")}catch(t)...
  function n_ (line 1) | function n_(){let t="",e="",n="";const r=[],i=()=>e=n="",o=(t,n)=>{var r...
  function i_ (line 1) | function i_(t,e){if(t.open(e.tagName),e.hasAttributes()){const n=e.attri...
  class c_ (line 1) | class c_ extends lv{constructor(t){super(t),this._dirtyID=0,this._dirty=...
    method constructor (line 1) | constructor(t){super(t),this._dirtyID=0,this._dirty=[],this._svg=null,...
    method initialize (line 1) | initialize(t,e,n,r,i){return this._defs={},this._clearDefs(),t&&(this....
    method background (line 1) | background(t){return arguments.length&&this._svg&&this._svg.style.setP...
    method resize (line 1) | resize(t,e,n,r){return super.resize(t,e,n,r),this._svg&&(x_(this._svg,...
    method canvas (line 1) | canvas(){return this._svg}
    method svg (line 1) | svg(){const t=this._svg,e=this._bgcolor;if(!t)return null;let n;e&&(t....
    method _render (line 1) | _render(t,e){return this._dirtyCheck()&&(this._dirtyAll&&this._clearDe...
    method dirty (line 1) | dirty(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.p...
    method isDirty (line 1) | isDirty(t){return this._dirtyAll||!t._svg||!t._svg.ownerSVGElement||t....
    method _dirtyCheck (line 1) | _dirtyCheck(){this._dirtyAll=!0;const t=this._dirty;if(!t.length||!thi...
    method mark (line 1) | mark(t,e,n,r){if(!this.isDirty(e))return e._svg;const i=this._svg,o=e....
    method _update (line 1) | _update(t,e,n){g_=e,m_=e.__values__,Zv(v_,n),t.attr(v_,n,this);const r...
    method style (line 1) | style(t,e){if(null!=e){for(const n in o_){let r="font"===n?Oy(e):e[n];...
    method defs (line 1) | defs(){const t=this._svg,e=this._defs;let n=e.el,r=0;for(const i in e....
    method _clearDefs (line 1) | _clearDefs(){const t=this._defs;t.gradient={},t.clipping={}}
  function f_ (line 1) | function f_(t,e){for(;t&&t.dirty!==e;t=t.mark.group){if(t.dirty=e,!t.mar...
  function h_ (line 1) | function h_(t,e,n){let r,i,o;if("radial"===e.gradient){let r=rv(t,n++,"p...
  function d_ (line 1) | function d_(t,e,n){let r;return(t=rv(t,n,"clipPath",l_)).setAttribute("i...
  function p_ (line 1) | function p_(t,e,n,r,i){let o,a=t._svg;if(!a&&(o=e.ownerDocument,a=ev(o,r...
  method group (line 1) | group(t,e,n){const r=g_=e.childNodes[2];m_=r.__values__,t.foreground(v_,...
  method image (line 1) | image(t,e,n){!1===n.smooth?(__(e,"image-rendering","optimizeSpeed"),__(e...
  method text (line 1) | text(t,e,n){const r=By(n);let i,o,a,s;k(r)?(o=r.map((t=>Ny(n,t))),i=o.jo...
  function v_ (line 1) | function v_(t,e,n){e!==m_[t]&&(n?function(t,e,n,r){null!=n?t.setAttribut...
  function __ (line 1) | function __(t,e,n){n!==m_[e]&&(null==n?t.style.removeProperty(e):t.style...
  function x_ (line 1) | function x_(t,e){for(const n in e)b_(t,n,e[n])}
  function b_ (line 1) | function b_(t,e,n){null!=n?t.setAttribute(e,n):t.removeAttribute(e)}
  function w_ (line 1) | function w_(){let t;return"undefined"==typeof window?"":(t=window.locati...
  class k_ (line 1) | class k_ extends lv{constructor(t){super(t),this._text=null,this._defs={...
    method constructor (line 1) | constructor(t){super(t),this._text=null,this._defs={gradient:{},clippi...
    method svg (line 1) | svg(){return this._text}
    method _render (line 1) | _render(t){const e=n_();e.open("svg",ot({},uy,{class:"marks",width:thi...
    method mark (line 1) | mark(t,e){const n=Hy[e.marktype],r=n.tag,i=[Zv,n.attr];t.open("g",{cla...
    method href (line 1) | href(t){const e=t.href;let n;if(e){if(n=this._hrefs&&this._hrefs[e])re...
    method attr (line 1) | attr(t,e,n,r){const i={},o=(t,e,n,r)=>{i[r||t]=e};return Array.isArray...
    method defs (line 1) | defs(t){const e=this._defs.gradient,n=this._defs.clipping;if(0!==Objec...
  class M_ (line 1) | class M_ extends lv{constructor(t){super(t),this._svgRenderer=new c_(t),...
    method constructor (line 1) | constructor(t){super(t),this._svgRenderer=new c_(t),this._canvasRender...
    method initialize (line 1) | initialize(t,e,n,r,i){this._root_el=rv(t,0,"div");const o=rv(this._roo...
    method dirty (line 1) | dirty(t){return A_.svgMarkTypes.includes(t.mark.marktype)?this._svgRen...
    method _render (line 1) | _render(t,e){const n=(e??["arc","area","image","line","path","rect","r...
    method resize (line 1) | resize(t,e,n,r){return super.resize(t,e,n,r),this._svgRenderer.resize(...
    method background (line 1) | background(t){return A_.svgOnTop?this._canvasRenderer.background(t):th...
  class E_ (line 1) | class E_ extends Sv{constructor(t,e){super(t,e)}initialize(t,e,n){const ...
    method constructor (line 1) | constructor(t,e){super(t,e)}
    method initialize (line 1) | initialize(t,e,n){const r=rv(rv(t,0,"div"),A_.svgOnTop?0:1,"div");retu...
  function T_ (line 1) | function T_(t,e){return t=String(t||"").toLowerCase(),arguments.length>1...
  function B_ (line 1) | function B_(t,e,n){const r=[],i=(new Vg).union(e),o=t.marktype;return o?...
  function z_ (line 1) | function z_(t,e,n,r){if(function(t,e,n){return t.bounds&&e.intersects(t....
  function N_ (line 1) | function N_(t,e,n,r){n&&n(t.mark)&&O_(t,e,Hy.group.isect)&&r.push(t);con...
  function O_ (line 1) | function O_(t,e,n){const r=t.bounds;return e.encloses(r)||e.intersects(r...
  function U_ (line 1) | function U_(t){const e=t.clip;if(J(e))e(vm(R_.clear()));else{if(!e)retur...
  function q_ (line 1) | function q_(t,e,n){return t===e||("path"===n?P_(t,e):t instanceof Date&&...
  function P_ (line 1) | function P_(t,e){return q_(ag(t),ag(e))}
  function Mx (line 1) | function Mx(t){Ja.call(this,null,t)}
  function Ex (line 1) | function Ex(t,e,n){return e(t.bounds.clear(),t,n)}
  method transform (line 1) | transform(t,e){const n=e.dataflow,r=t.mark,i=r.marktype,o=Hy[i],a=o.boun...
  function Cx (line 1) | function Cx(t){Ja.call(this,0,t)}
  function Fx (line 1) | function Fx(t){Ja.call(this,null,t)}
  function Sx (line 1) | function Sx(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=(i=e.dataflow)._signals[Dx]||(i._signals[Dx]=i.ad...
  method transform (line 1) | transform(t,e){let n=this.value;n||(n=e.dataflow.scenegraph().mark(t.mar...
  function Rx (line 1) | function Rx(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=$x[t.method]||$x.parity,r=t.separation||0;let i,o...
  method transform (line 1) | transform(t,e){const n=e.dataflow;if(e.visit(e.ALL,(t=>n.dirty(t))),e.fi...
  function Lx (line 1) | function Lx(t,e,n){return t[e]===n?0:(t[e]=n,1)}
  function qx (line 1) | function qx(t){var e=t.items[0].orient;return e===I_||e===W_}
  function Px (line 1) | function Px(t,e,n,r){var i,o,a=e.items[0],s=a.datum,u=null!=a.translate?...
  function jx (line 1) | function jx(t,e,n,r,i,o,a,s){const u=e.bounds;if(e.auto){const s=a*(n+i+...
  function Hx (line 1) | function Hx(t){return(new Vg).set(0,0,t.width||0,t.height||0)}
  function Yx (line 1) | function Yx(t){const e=t.bounds.clone();return e.empty()?e.set(0,0,0,0):...
  function Gx (line 1) | function Gx(t,e,n){const r=A(t)?t[e]:t;return null!=r?r:void 0!==n?n:0}
  function Vx (line 1) | function Vx(t){return t<0?Math.ceil(-t):0}
  function Xx (line 1) | function Xx(t,e,n){var r,i,o,a,s,u,l,c,f,h,d,p=!n.nodirty,g=n.bounds===w...
  function Jx (line 1) | function Jx(t,e,n){var r,i,o,a,s,u,l,c=function(t){var e,n,r=t.items,i=r...
  function Zx (line 1) | function Zx(t,e){return"x1"===e?t.x||0:"y1"===e?t.y||0:"x2"===e?(t.x||0)...
  function Qx (line 1) | function Qx(t,e){return t.bounds[e]}
  function Kx (line 1) | function Kx(t,e,n,r,i,o,a,s,u,l,c,f,h,d){var p,g,m,y,v,_,x,b,w,k=n.lengt...
  function tb (line 1) | function tb(t,e,n,r,i,o){if(e){t.dirty(e);var a=n,s=n;r?a=Math.round(i.x...
  function eb (line 1) | function eb(t,e,n,r,i,o,a){const s=function(t,e){const n=t[e]||{};return...
  function nb (line 1) | function nb(t,e){var n,r,i=e.items[0],o=i.datum,a=i.orient,s=i.bounds,u=...
  function rb (line 1) | function rb(t,e,n,r,i,o,a){const s="symbol"!==t.datum.type,u=n.datum.vgr...
  function ib (line 1) | function ib(t,e,n,r){e.x+=n,e.y+=r,e.bounds.translate(n,r),e.mark.bounds...
  function ob (line 1) | function ob(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=e.dataflow;return t.mark.items.forEach((e=>{t.lay...
  function sb (line 1) | function sb(t){Ja.call(this,null,t)}
  function ub (line 1) | function ub(t){Ja.call(this,null,t)}
  function lb (line 1) | function lb(){return _a({})}
  function cb (line 1) | function cb(t){Ja.call(this,null,t)}
  function fb (line 1) | function fb(t){Ja.call(this,[],t)}
  method transform (line 1) | transform(t,e){if(this.value&&!t.modified())return e.StopPropagation;var...
  method transform (line 1) | transform(t,e){var n=e.dataflow,r=e.fork(e.NO_SOURCE|e.NO_FIELDS),i=t.it...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ADD_REM),r=t.mod||!1,i=t.encoders,o=e.enco...
  method transform (line 1) | transform(t,e){if(null!=this.value&&!t.modified())return e.StopPropagati...
  function mb (line 1) | function mb(t){Ja.call(this,{},t)}
  method transform (line 1) | transform(t,e){var n=t.sourceX||hb,r=t.sourceY||db,i=t.targetX||pb,o=t.t...
  function bb (line 1) | function bb(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var n,r,i,o=t.as||["startAngle","endAngle"],a=o[0],s=o[1]...
  function kb (line 1) | function kb(t){return lp(t)&&t!==Ld}
  function Mb (line 1) | function Mb(t){Ja.call(this,null,t),this.modified(!0)}
  function Eb (line 1) | function Eb(t,e,n){hp(t)&&(Math.abs(e.reduce(((t,e)=>t+(e<0?-1:e>0?1:0))...
  function Db (line 1) | function Db(t,e,n){return J(t)&&(e||n)?mp(t,Cb(e||[0,1],n)):t}
  function Cb (line 1) | function Cb(t,e){return e?t.slice().reverse():t}
  function Fb (line 1) | function Fb(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){var n=e.dataflow,r=this.value,i=function(t){var e,n=t.typ...
  method transform (line 1) | transform(t,e){const n=t.modified("sort")||e.changed(e.ADD)||e.modified(...
  function zb (line 1) | function zb(t){Ja.call(this,null,t)}
  function Nb (line 1) | function Nb(t,e,n,r,i){for(var o,a=(e-t.sum)/2,s=t.length,u=0;u1?0:t<-1?Pb:Math.acos(t)}
  function sw (line 1) | function sw(t){return t>1?jb:t<-1?-jb:Math.asin(t)}
  function uw (line 1) | function uw(){}
  function lw (line 1) | function lw(t,e){t&&fw.hasOwnProperty(t.type)&&fw[t.type](t,e)}
  function hw (line 1) | function hw(t,e,n){var r,i=-1,o=t.length-n;for(e.lineStart();++i=0?1:-1,i=r*n,o=Jb(e=(e*=Yb)/2+Ib)...
  function Uw (line 1) | function Uw(t){return[Xb(t[1],t[0]),sw(t[2])]}
  function Lw (line 1) | function Lw(t){var e=t[0],n=t[1],r=Jb(n);return[r*Jb(e),r*nw(e),nw(n)]}
  function qw (line 1) | function qw(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}
  function Pw (line 1) | function Pw(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1...
  function jw (line 1) | function jw(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}
  function Iw (line 1) | function Iw(t,e){return[t[0]*e,t[1]*e,t[2]*e]}
  function Ww (line 1) | function Ww(t){var e=iw(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t...
  function uk (line 1) | function uk(t,e){Fw.push(Sw=[xw=t,ww=t]),ekw&&(kw=e)}
  function lk (line 1) | function lk(t,e){var n=Lw([t*Yb,e*Yb]);if(Dw){var r=Pw(Dw,n),i=Pw([r[1],...
  function ck (line 1) | function ck(){sk.point=lk}
  function fk (line 1) | function fk(){Sw[0]=xw,Sw[1]=ww,sk.point=uk,Dw=null}
  function hk (line 1) | function hk(t,e){if(Dw){var n=t-Aw;Cw.add(Gb(n)>180?n+(n>0?360:-360):n)}...
  function dk (line 1) | function dk(){Bw.lineStart()}
  function pk (line 1) | function pk(){hk(Mw,Ew),Bw.lineEnd(),Gb(Cw)>Lb&&(xw=-(ww=180)),Sw[0]=xw,...
  function gk (line 1) | function gk(t,e){return(e-=t)<0?e+360:e}
  function mk (line 1) | function mk(t,e){return t[0]-e[0]}
  function yk (line 1) | function yk(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:ePb&&(t-=Math.round(t/Wb)*Wb),[t,e]}
  function $k (line 1) | function $k(t,e,n){return(t%=Wb)?e||n?Fk(Bk(t),zk(e,n)):Bk(t):e||n?zk(e,...
  function Tk (line 1) | function Tk(t){return function(e,n){return Gb(e+=t)>Pb&&(e-=Math.round(e...
  function Bk (line 1) | function Bk(t){var e=Tk(t);return e.invert=Tk(-t),e}
  function zk (line 1) | function zk(t,e){var n=Jb(t),r=nw(t),i=Jb(e),o=nw(e);function a(t,e){var...
  function Nk (line 1) | function Nk(t,e){(e=Lw(e))[0]-=t,Ww(e);var n=aw(-e[1]);return((-e[2]<0?-...
  function Ok (line 1) | function Ok(){var t,e=[];return{point:function(e,n,r){t.push([e,n,r])},l...
  function Rk (line 1) | function Rk(t,e){return Gb(t[0]-e[0])1}
  function Wk (line 1) | function Wk(t,e){return((t=t.x)[0]<0?t[1]-jb-Lb:jb-t[1])-((e=e.x)[0]<0?e...
  function Yk (line 1) | function Yk(t){var e=Jb(t),n=6*Yb,r=e>0,i=Gb(e)>Lb;function o(t,n){retur...
  function Xk (line 1) | function Xk(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}funct...
  function Jk (line 1) | function Jk(t,e,n){var r=Se(t,e-Lb,n).concat(e);return function(t){retur...
  function Zk (line 1) | function Zk(t,e,n){var r=Se(t,e-Lb,n).concat(e);return function(t){retur...
  function aA (line 1) | function aA(){oA.point=sA}
  function sA (line 1) | function sA(t,e){oA.point=uA,Qk=tA=t,Kk=eA=e}
  function uA (line 1) | function uA(t,e){iA.add(eA*t-tA*e),tA=t,eA=e}
  function lA (line 1) | function lA(){uA(Qk,Kk)}
  function FA (line 1) | function FA(t,e){_A+=t,xA+=e,++bA}
  function SA (line 1) | function SA(){CA.point=$A}
  function $A (line 1) | function $A(t,e){CA.point=TA,FA(yA=t,vA=e)}
  function TA (line 1) | function TA(t,e){var n=t-yA,r=e-vA,i=iw(n*n+r*r);wA+=i*(yA+t)/2,kA+=i*(v...
  function BA (line 1) | function BA(){CA.point=FA}
  function zA (line 1) | function zA(){CA.point=OA}
  function NA (line 1) | function NA(){RA(gA,mA)}
  function OA (line 1) | function OA(t,e){CA.point=RA,FA(gA=yA=t,mA=vA=e)}
  function RA (line 1) | function RA(t,e){var n=t-yA,r=e-vA,i=iw(n*n+r*r);wA+=i*(yA+t)/2,kA+=i*(v...
  function UA (line 1) | function UA(t){this._context=t}
  function YA (line 1) | function YA(t,e){HA.point=GA,qA=jA=t,PA=IA=e}
  function GA (line 1) | function GA(t,e){jA-=t,IA-=e,WA.add(iw(jA*jA+IA*IA)),jA=t,IA=e}
  class QA (line 1) | class QA{constructor(t){this._append=null==t?KA:function(t){const e=Math...
    method constructor (line 1) | constructor(t){this._append=null==t?KA:function(t){const e=Math.floor(...
    method pointRadius (line 1) | pointRadius(t){return this._radius=+t,this}
    method polygonStart (line 1) | polygonStart(){this._line=0}
    method polygonEnd (line 1) | polygonEnd(){this._line=NaN}
    method lineStart (line 1) | lineStart(){this._point=0}
    method lineEnd (line 1) | lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}
    method point (line 1) | point(t,e){switch(this._point){case 0:this._append`M${t},${e}`,this._p...
    method result (line 1) | result(){const t=this._;return this._="",t.length?t:null}
  function KA (line 1) | function KA(t){let e=1;this._+=t[0];for(const n=t.length;e1?HM:t<-1?-HM:Math.asin(t)}
  function VM (line 1) | function VM(t,e){var n,r=t*jM(e),i=30;do{e-=n=(e+jM(e)-r)/(1+PM(e))}whil...
  function r (line 1) | function r(r,i){return[t*r*PM(i=VM(n,i)),e*jM(i)]}
  function QM (line 1) | function QM(t,e){if(!t||"string"!=typeof t)throw new Error("Projection t...
  function KM (line 1) | function KM(t){return t&&t.path||JM}
  function c (line 1) | function c(t){var e=t[0],a=t[1];return o=null,n.point(e,a),o||(r.point(e...
  function f (line 1) | function f(){return t=e=null,c}
  function v (line 1) | function v(){return p=s*c,g=s*f,o=a=null,_}
  function _ (line 1) | function _(n){var r=n[0]*p,i=n[1]*g;if(h){var o=i*t-r*e;r=r*t+i*e,i=o}re...
  function eE (line 1) | function eE(){}
  function rE (line 1) | function rE(){var t=1,e=1,n=a;function r(t,e){return e.map((e=>i(t,e)))}...
  function iE (line 1) | function iE(t,e){for(var n,r=-1,i=e.length;++r=0?t:rs(e,n);return Math.round((Math.sqrt(4...
  function fE (line 1) | function fE(t){return J(t)?t:rt(+t)}
  function hE (line 1) | function hE(){var t=t=>t[0],e=t=>t[1],n=d,r=[-1,-1],i=960,o=500,a=2;func...
  function dE (line 1) | function dE(t,e,n,r,i){const o=1+(i<<1);for(let a=0;anull!=e[n]?t[n](e[n]):0)),t}
  function vE (line 1) | function vE(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopP...
  method transform (line 1) | transform(t,e){if(this.value&&!e.changed()&&!t.modified())return e.StopP...
  function bE (line 1) | function bE(t){Ja.call(this,null,t)}
  function wE (line 1) | function wE(t){Ja.call(this,null,t)}
  function kE (line 1) | function kE(t){Ja.call(this,null,t)}
  function AE (line 1) | function AE(t){Ja.call(this,null,t)}
  function ME (line 1) | function ME(t){Ja.call(this,[],t),this.generator=function(){var t,e,n,r,...
  function EE (line 1) | function EE(t){Ja.call(this,null,t)}
  function DE (line 1) | function DE(t){if(!J(t))return!1;const e=Bt(r(t));return e.$x||e.$y||e.$...
  function CE (line 1) | function CE(t){Ja.call(this,null,t),this.modified(!0)}
  function FE (line 1) | function FE(t,e,n){J(t[e])&&t[e](n)}
  method transform (line 1) | transform(t,e){var n,i=this._features,o=this._points,a=t.fields,s=a&&a[0...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ALL),r=this.value,i=t.field||f,o=t.as||"pa...
  method transform (line 1) | transform(t,e){var n,r=t.projection,i=t.fields[0],o=t.fields[1],a=t.as||...
  method transform (line 1) | transform(t,e){var n=e.fork(e.ALL),r=this.value,i=t.as||"shape",o=n.ADD;...
  method transform (line 1) | transform(t,e){var n,r=this.value,i=this.generator;if(!r.length||t.modif...
  method transform (line 1) | transform(t,e){if(!e.changed()&&!t.modified())return e.StopPropagation;v...
  method transform (line 1) | transform(t,e){let n=this.value;return!n||t.modified("type")?(this.value...
  function $E (line 1) | function $E(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,s,u,l,c,f,...
  function TE (line 1) | function TE(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}
  function BE (line 1) | function BE(t){return t[0]}
  function zE (line 1) | function zE(t){return t[1]}
  function NE (line 1) | function NE(t,e,n){var r=new OE(null==e?BE:e,null==n?zE:n,NaN,NaN,NaN,Na...
  function OE (line 1) | function OE(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this....
  function RE (line 1) | function RE(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.da...
  function LE (line 1) | function LE(t){return function(){return t}}
  function qE (line 1) | function qE(t){return 1e-6*(t()-.5)}
  function PE (line 1) | function PE(t){return t.x+t.vx}
  function jE (line 1) | function jE(t){return t.y+t.vy}
  function IE (line 1) | function IE(t){return t.index}
  function WE (line 1) | function WE(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "...
  function YE (line 1) | function YE(){for(var t,e=0,n=arguments.length,r={};eeD&&(iD-=e,nD=t)}
  function dD (line 1) | function dD(t){QE||(KE&&(KE=clearTimeout(KE)),t-rD>24?(t<1/0&&(KE=setTim...
  function yD (line 1) | function yD(t){return t.x}
  function vD (line 1) | function vD(t){return t.y}
  function bD (line 1) | function bD(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,s=new Map...
  function i (line 1) | function i(){var i,o,a=n.length,s=0,u=0;for(i=0;ie(t,n):e)}
  method transform (line 1) | transform(t,e){var n,r,i=this.value,o=e.changed(e.ADD_REM),a=t.modified(...
  method finish (line 1) | finish(t,e){const n=e.dataflow;for(let t,e=this._argops,s=0,u=e.length;s...
  function BD (line 1) | function BD(t,e){return t.parent===e.parent?1:2}
  function zD (line 1) | function zD(t,e){return t+e.x}
  function ND (line 1) | function ND(t,e){return Math.max(t,e.y)}
  function OD (line 1) | function OD(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n...
  function RD (line 1) | function RD(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=LD)):void...
  function UD (line 1) | function UD(t){return t.children}
  function LD (line 1) | function LD(t){return Array.isArray(t)?t[1]:null}
  function qD (line 1) | function qD(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.da...
  function PD (line 1) | function PD(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}
  function jD (line 1) | function jD(t){this.data=t,this.depth=this.height=0,this.parent=null}
  function ID (line 1) | function ID(t){return null==t?null:WD(t)}
  function WD (line 1) | function WD(t){if("function"!=typeof t)throw new Error;return t}
  function HD (line 1) | function HD(){return 0}
  function YD (line 1) | function YD(t){return function(){return t}}
  function JD (line 1) | function JD(t,e){var n,r;if(KD(e,t))return[e];for(n=0;n0&&n*n>...
  function oC (line 1) | function oC(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,o=(e...
  function aC (line 1) | function aC(t){this._=t,this.next=null,this.previous=null}
  function sC (line 1) | function sC(t,e){if(!(o=(t=function(t){return"object"==typeof t&&"length...
  function uC (line 1) | function uC(t){return Math.sqrt(t.value)}
  function lC (line 1) | function lC(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}
  function cC (line 1) | function cC(t,e,n){return function(r){if(i=r.children){var i,o,a,s=i.len...
  function fC (line 1) | function fC(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e....
  function hC (line 1) | function hC(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.rou...
  function dC (line 1) | function dC(t,e,n,r,i){for(var o,a=t.children,s=-1,u=a.length,l=t.value&...
  function yC (line 1) | function yC(t){return t.id}
  function vC (line 1) | function vC(t){return t.parentId}
  function _C (line 1) | function _C(){var t,e=yC,n=vC;function r(r){var i,o,a,s,u,l,c,f,h=Array....
  function xC (line 1) | function xC(t){let e=t.length;if(e<2)return"";for(;--e>1&&!bC(t,e););ret...
  function bC (line 1) | function bC(t,e){if("/"===t[e]){let n=0;for(;e>0&&"\\"===t[--e];)++n;if(...
  function wC (line 1) | function wC(t,e){return t.parent===e.parent?1:2}
  function kC (line 1) | function kC(t){var e=t.children;return e?e[0]:t.t}
  function AC (line 1) | function AC(t){var e=t.children;return e?e[e.length-1]:t.t}
  function MC (line 1) | function MC(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}
  function EC (line 1) | function EC(t,e,n){return t.a.parent===e.parent?t.a:n}
  function DC (line 1) | function DC(t,e){this._=t,this.parent=null,this.children=null,this.A=nul...
  function CC (line 1) | function CC(t,e,n,r,i){for(var o,a=t.children,s=-1,u=a.length,l=t.value&...
  function SC (line 1) | function SC(t,e,n,r,i,o){for(var a,s,u,l,c,f,h,d,p,g,m,y=[],v=e.children...
  function n (line 1) | function n(t,n,r,i,o){SC(e,t,n,r,i,o)}
  function n (line 1) | function n(t,n,r,i,o){if((a=t._squarify)&&a.ratio===e)for(var a,s,u,l,c,...
  function BC (line 1) | function BC(t,e,n){const r={};return t.each((t=>{const i=t.data;n(i)&&(r...
  function zC (line 1) | function zC(t){Ja.call(this,null,t)}
  function OC (line 1) | function OC(){const t=[],e={entries:t=>r(n(t,0),0),key:n=>(t.push(n),e)}...
  function RC (line 1) | function RC(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){e.source||s("Nest transform requires an upstream data sou...
  method transform (line 1) | transform(t,e){e.source&&e.source.root||s(this.constructor.name+" transf...
  function qC (line 1) | function qC(t){RC.call(this,t)}
  function i (line 1) | function i(i){const o=function(){let t=1;return()=>(t=(GD*t+VD)%XD)/XD}(...
  function jC (line 1) | function jC(t){RC.call(this,t)}
  function IC (line 1) | function IC(t){Ja.call(this,null,t)}
  function i (line 1) | function i(i){var o=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/o,i.each...
  method transform (line 1) | transform(t,e){e.source||s("Stratify transform requires an upstream data...
  function i (line 1) | function i(i){var u=function(t){for(var e,n,r,i,o,a=new DC(t,0),s=[a];e=...
  function o (line 1) | function o(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;i...
  function a (line 1) | function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}
  function s (line 1) | function s(t){t.x*=e,t.y=t.depth*n}
  function i (line 1) | function i(i){var o,a=0;i.eachAfter((function(e){var n=e.children;n?(e.x...
  function YC (line 1) | function YC(t){RC.call(this,t)}
  function GC (line 1) | function GC(t){Ja.call(this,[],t)}
  method layout (line 1) | layout(t){const e=t||"tidy";if(lt(WC,e))return WC[e]();s("Unrecognized T...
  method transform (line 1) | transform(t,e){const n=this.value,r=e.source&&e.source.root,i=e.fork(e.N...
  function JC (line 1) | function JC(t){RC.call(this,t)}
  method layout (line 1) | layout(){const t=function(){var t=$C,e=!1,n=1,r=1,i=[0],o=HD,a=HD,s=HD,u...
  function KC (line 1) | function KC(t,e,n){return new Uint32Array(t.getImageData(0,0,e,n).data.b...
  function tF (line 1) | function tF(t,e,n){if(!e.length)return;const r=e[0].mark.marktype;"group...
  function eF (line 1) | function eF(t){const e=ba(t,{});return e.stroke&&0!==e.strokeOpacity||e....
  function sF (line 1) | function sF(t,e,n){const r=Math.max(1,Math.sqrt(t*e/1e6)),i=~~((t+2*n+r)...
  function uF (line 1) | function uF(t,e,n,r,i,o){let a=n/2;return t-a<0||t+a>i||e-(a=r/2)<0||e+a>o}
  function lF (line 1) | function lF(t,e,n,r,i,o,a,s){const u=i*o/(2*r),l=t(e-u),c=t(e+u),f=t(n-(...
  function pF (line 1) | function pF(t,e,n,r,i,o,a,s,u,l,c,f){return!(i.outOfBounds(t,n,e,r)||(f&...
  function u (line 1) | function u(e,n,r,u,l){const c=t.invert(e),f=t.invert(n);let h,d=r,p=o;if...
  function yF (line 1) | function yF(t,e,n,r,i,o,a,s,u,l,c){if(!t.length)return t;const f=Math.ma...
  function xF (line 1) | function xF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const n=t.modified();if(!(n||e.changed(e.ADD_REM)||functi...
  function wF (line 1) | function wF(t,e){var n,r,i,o,a,s,u=[],l=function(t){return t(o)};if(null...
  function kF (line 1) | function kF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function MF (line 1) | function MF(t){Ja.call(this,null,t)}
  method transform (line 1) | transform(t,e){const r=e.fork(e.NO_SOURCE|e.NO_FIELDS);if(!this.value||e...
  function FF (line 1) | function FF(t,e,n,r,i){let o,a,s,u,l=e[0],c=r[0],f=0,h=0;c>l==c>-l?(o=l,...
  function SF (line 1) | function SF(t){return new Float64Array(t)}
  function UF (line 1) | function UF(t,e,n,r,i,o){const a=(e-o)*(n-i),s=(t-i)*(r-o),u=a-s;if(0===...
  class PF (line 1) | class PF{static from(t){let e=arguments.length>1&&void 0!==arguments[1]?...
    method from (line 1) | static from(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method constructor (line 1) | constructor(t){const e=t.length>>1;if(e>0&&"number"!=typeof t[0])throw...
    method update (line 1) | update(){const{coords:t,_hullPrev:e,_hullNext:n,_hullTri:r,_hullHash:i...
    method _hashKey (line 1) | _hashKey(t,e){return Math.floor(function(t,e){const n=t/(Math.abs(t)+M...
    method _legalize (line 1) | _legalize(t){const{_triangles:e,_halfedges:n,coords:r}=this;let i=0,o=...
    method _link (line 1) | _link(t,e){this._halfedges[t]=e,-1!==e&&(this._halfedges[e]=t)}
    method _addTriangle (line 1) | _addTriangle(t,e,n,r,i,o){const a=this.trianglesLen;return this._trian...
  function jF (line 1) | function jF(t,e,n,r){const i=t-n,o=e-r;return i*i+o*o}
  function IF (line 1) | function IF(t,e,n,r,i,o,a,s){const u=t-a,l=e-s,c=n-a,f=r-s,h=i-a,d=o-s,p...
  function WF (line 1) | function WF(t,e,n,r,i,o){const a=n-t,s=r-e,u=i-t,l=o-e,c=a*a+s*s,f=u*u+l...
  function HF (line 1) | function HF(t,e,n,r){if(r-n<=20)for(let i=n+1;i<=r;i++){const r=t[i],o=e...
  function YF (line 1) | function YF(t,e,n){const r=t[e];t[e]=t[n],t[n]=r}
  function GF (line 1) | function GF(t){return t[0]}
  function VF (line 1) | function VF(t){return t[1]}
  class JF (line 1) | class JF{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._="...
    method constructor (line 1) | constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}
    method moveTo (line 1) | moveTo(t,e){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}
    method closePath (line 1) | closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this...
    method lineTo (line 1) | lineTo(t,e){this._+=`L${this._x1=+t},${this._y1=+e}`}
    method arc (line 1) | arc(t,e,n){const r=(t=+t)+(n=+n),i=e=+e;if(n<0)throw new Error("negati...
    method rect (line 1) | rect(t,e,n,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+e...
    method value (line 1) | value(){return this._||null}
  class ZF (line 1) | class ZF{constructor(){this._=[]}moveTo(t,e){this._.push([t,e])}closePat...
    method constructor (line 1) | constructor(){this._=[]}
    method moveTo (line 1) | moveTo(t,e){this._.push([t,e])}
    method closePath (line 1) | closePath(){this._.push(this._[0].slice())}
    method lineTo (line 1) | lineTo(t,e){this._.push([t,e])}
    method value (line 1) | value(){return this._.length?this._:null}
  method constructor (line 1) | constructor(t){let[e,n,r,i]=arguments.length>1&&void 0!==arguments[1]?ar...
  method update (line 1) | update(){return this.delaunay.update(),this._init(),this}
  method _init (line 1) | _init(){const{delaunay:{points:t,hull:e,triangles:n},vectors:r}=this;let...
  method render (line 1) | render(t){const e=null==t?t=new JF:void 0,{delaunay:{halfedges:n,inedges...
  method renderBounds (line 1) | renderBounds(t){const e=null==t?t=new JF:void 0;return t.rect(this.xmin,...
  method renderCell (line 1) | renderCell(t,e){const n=null==e?e=new JF:void 0,r=this._clip(t);if(null=...
  method cellPolygons (line 1) | *cellPolygons(){const{delaunay:{points:t}}=this;for(let e=0,n=t.length/2...
  method cellPolygon (line 1) | cellPolygon(t){const e=new ZF;return this.renderCell(t,e),e.value()}
  method _renderSegment (line 1) | _renderSegment(t,e,n,r,i){let o;const a=this._regioncode(t,e),s=this._re...
  method contains (line 1) | contains(t,e,n){return(e=+e)==e&&(n=+n)==n&&this.delaunay._step(t,e,n)===t}
  method neighbors (line 1) | *neighbors(t){const e=this._clip(t);if(e)for(const n of this.delaunay.ne...
  method _cell (line 1) | _cell(t){const{circumcenters:e,delaunay:{inedges:n,halfedges:r,triangles...
  method _clip (line 1) | _clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.y...
  method _clipFinite (line 1) | _clipFinite(t,e){const n=e.length;let r,i,o,a,s=null,u=e[n-2],l=e[n-1],c...
  method _clipSegment (line 1) | _clipSegment(t,e,n,r,i,o){const a=ithis.xmax?2:0)|(e...
  method _simplify (line 1) | _simplify(t){if(t&&t.length>4){for(let e=0;e1&&void 0!==arguments[1]?...
    method from (line 1) | static from(t){let e=arguments.length>1&&void 0!==arguments[1]?argumen...
    method constructor (line 1) | constructor(t){this._delaunator=new PF(t),this.inedges=new Int32Array(...
    method update (line 1) | update(){return this._delaunator.update(),this._init(),this}
    method _init (line 1) | _init(){const t=this._delaunator,e=this.points;if(t.hull&&t.hull.lengt...
    method voronoi (line 1) | voronoi(t){return new QF(this,t)}
    method neighbors (line 1) | *neighbors(t){const{inedges:e,hull:n,_hullIndex:r,halfedges:i,triangle...
    method find (line 1) | find(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]...
    method _step (line 1) | _step(t,e,n){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles...
    method render (line 1) | render(t){const e=null==t?t=new JF:void 0,{points:n,halfedges:r,triang...
    method renderPoints (line 1) | renderPoints(t,e){void 0!==e||t&&"function"==typeof t.moveTo||(e=t,t=n...
    method renderHull (line 1) | renderHull(t){const e=null==t?t=new JF:void 0,{hull:n,points:r}=this,i...
    method hullPolygon (line 1) | hullPolygon(){const t=new ZF;return this.renderHull(t),t.value()}
    method renderTriangle (line 1) | renderTriangle(t,e){const n=null==e?e=new JF:void 0,{points:r,triangle...
    method trianglePolygons (line 1) | *trianglePolygons(){const{triangles:t}=this;for(let e=0,n=t.length/3;e...
    method trianglePolygon (line 1) | trianglePolygon(t){const e=new ZF;return this.renderTriangle(t,e),e.va...
  function oS (line 1) | function oS(t){Ja.call(this,null,t)}
  function sS (line 1) | function sS(t){const e=t[0][0],n=t[0][1];let r=t.length-1;for(;t[r][0]==...
  method transform (line 1) | transform(t,e){const n=t.as||"path",r=e.source;if(!r||!r.length)return e...
  function hS (line 1) | function hS(){var t,e,n,r,i,o,a,s=[256,256],u=yS,l=[],c=Math.random,f={}...
  function dS (line 1) | function dS(t,e,n,r){if(!e.sprite){var i=t.context,o=t.ratio;i.clearRect...
  function pS (line 1) | function pS(t,e,n){n>>=5;for(var r,i=t.sprite,o=t.width>>5,a=t.x-(o<<4),...
  function gS (line 1) | function gS(t,e){var n=t[0],r=t[1];e.x+e.x0e[0].x&&t.x+t.x0e[0]....
  function yS (line 1) | function yS(t){var e=t[0]/t[1];return function(t){return[e*(t*=.1)*Math....
  function vS (line 1) | function vS(t){return"function"==typeof t?t:function(){return t}}
  function wS (line 1) | function wS(t){Ja.call(this,hS(),t)}
  method transform (line 1) | transform(e,n){!e.size||e.size[0]&&e.size[1]||s("Wordcloud size dimensio...
  function DS (line 1) | function DS(t,e,n){const r=(e<257?AS:e<65537?MS:ES)(t);return n&&r.set(n...
  function CS (line 1) | function CS(t,e,n){const r=1<{const...
  method update (line 1) | update(t,e,n){const r=this._dims,i=t.query,o=e.stamp,a=r.length;let s,u,...
  method incrementAll (line 1) | incrementAll(t,e,n,r){const i=this.value,o=i.seen(),a=i.curr(),s=i.prev(...
  method incrementOne (line 1) | incrementOne(t,e,n,r){const i=this.value.curr(),o=t.index(),a=t.bisect(t...
  method transform (line 1) | transform(t,e){const n=~(t.ignore||0),r=t.filter,i=r.mask;if(0==(i&n))re...
  function IS (line 1) | function IS(t){this.type=t}
  function C$ (line 1) | function C$(t,e){if(!t)throw new Error("ASSERT: "+e)}
  function F$ (line 1) | function F$(t){return t>=48&&t<=57}
  function S$ (line 1) | function S$(t){return"0123456789abcdefABCDEF".includes(t)}
  function $$ (line 1) | function $$(t){return"01234567".includes(t)}
  function T$ (line 1) | function T$(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[...
  function B$ (line 1) | function B$(t){return 10===t||13===t||8232===t||8233===t}
  function z$ (line 1) | function z$(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===...
  function N$ (line 1) | function N$(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48...
  function R$ (line 1) | function R$(){for(;YS=GS)return{type:JS,start:YS,end:YS};const t=HS....
  function Y$ (line 1) | function Y$(){const t=VS;return YS=t.end,VS=H$(),YS=t.end,t}
  function G$ (line 1) | function G$(){const t=YS;VS=H$(),YS=t}
  function V$ (line 1) | function V$(t,e,n){const r=new IS("||"===t||"&&"===t?l$:i$);return r.ope...
  function X$ (line 1) | function X$(t,e){const n=new IS(o$);return n.callee=t,n.arguments=e,n}
  function J$ (line 1) | function J$(t){const e=new IS(s$);return e.name=t,e}
  function Z$ (line 1) | function Z$(t){const e=new IS(u$);return e.value=t.value,e.raw=HS.slice(...
  function Q$ (line 1) | function Q$(t,e,n){const r=new IS(c$);return r.computed="["===t,r.object...
  function K$ (line 1) | function K$(t,e,n){const r=new IS(h$);return r.key=e,r.value=n,r.kind=t,r}
  function tT (line 1) | function tT(t,e){var n,r=Array.prototype.slice.call(arguments,2),i=e.rep...
  function eT (line 1) | function eT(t){t.type===JS&&tT(t,_$),t.type===t$&&tT(t,g$),t.type===n$&&...
  function nT (line 1) | function nT(t){const e=Y$();e.type===e$&&e.value===t||eT(e)}
  function rT (line 1) | function rT(t){return VS.type===e$&&VS.value===t}
  function iT (line 1) | function iT(t){return VS.type===QS&&VS.value===t}
  function oT (line 1) | function oT(){const t=[];for(YS=VS.start,nT("[");!rT("]");)rT(",")?(Y$()...
  function aT (line 1) | function aT(){YS=VS.start;const t=Y$();return t.type===n$||t.type===t$?(...
  function sT (line 1) | function sT(){var t,e,n;return YS=VS.start,(t=VS).type===ZS?(n=aT(),nT("...
  function uT (line 1) | function uT(){var t,e,n=[],r={},i=String;for(YS=VS.start,nT("{");!rT("}"...
  function cT (line 1) | function cT(){var t,e,n;if(rT("("))return function(){nT("(");const t=vT(...
  function fT (line 1) | function fT(){const t=[];if(nT("("),!rT(")"))for(;YSfunction(e,n,r,i){let o=t(n[0...
  function wT (line 1) | function wT(t){const e=(t=t||{}).allowed?Bt(t.allowed):{},n=t.forbidden?...
  function AT (line 1) | function AT(t){return t.getter&&t.getter[kT]||(t.getter=l(t.field),t.get...
  function NT (line 1) | function NT(t,e){for(var n,r,i=e.fields,o=e.values,a=i.length,s=0;st&&t.bandwidth?t.bandwidth():0,n._ba...
  function rB (line 1) | function rB(t,e){return function(n,r,i){if(n){const e=eB(n,(i||this).con...
  function sB (line 1) | function sB(t,e,n){try{t[e].apply(t,["EXPRESSION"].concat([].slice.call(...
  function uB (line 1) | function uB(t){const e=t/255;return e<=.03928?e/12.92:Math.pow((e+.055)/...
  function lB (line 1) | function lB(t){const e=af(t);return.2126*uB(e.r)+.7152*uB(e.g)+.0722*uB(...
  function cB (line 1) | function cB(t,e){return t===e||t!=t&&e!=e||(k(t)?!(!k(e)||t.length!==e.l...
  function fB (line 1) | function fB(t,e){for(const n in t)if(!cB(t[n],e[n]))return!1;return!0}
  function hB (line 1) | function hB(t){return e=>fB(t,e)}
  function pB (line 1) | function pB(t){return k(t)||ArrayBuffer.isView(t)?t:null}
  function gB (line 1) | function gB(t){return pB(t)||(xt(t)?t:null)}
  function yB (line 1) | function yB(t,e){const n=PT.call(e,t);return n.root&&n.root.lookup||{}}
  function _B (line 1) | function _B(t,e,n){if(!t)return[];const[r,i]=t,o=(new Vg).set(r[0],r[1],...
  function EB (line 1) | function EB(t,e,n){return 1===arguments.length?xB[t]:(xB[t]=e,n&&(kB[t]=...
  function DB (line 1) | function DB(t,e){const n={};let r;try{r=_T(t=xt(t)?t:Ct(t)+"")}catch(e){...
  function SB (line 1) | function SB(t){return(t+"").toLowerCase()}
  function $B (line 1) | function $B(t,e,n){n.endsWith(";")||(n="return("+n+");");const r=Functio...
  method get (line 1) | get(t){const e=`[${t.map(Ct).join("][")}]`,n=Function("_",`return _${e};...
  method comparator (line 1) | comparator(t,e){let n;const r=Function("a","b","var u, v; return "+t.map...
  function BB (line 1) | function BB(t,e,n){if(!t||!A(t))return t;for(let r,i=0,o=zB.length;ie!==t));const e=Obj...
  method get (line 1) | get(t){return this.nodes[t]}
  method set (line 1) | set(t,e){return this.nodes[t]=e}
  method add (line 1) | add(t,e){const n=this,r=n.dataflow,i=t.value;if(n.set(t.id,e),function(t...
  method resolve (line 1) | resolve(){return(this.unresolved||[]).forEach((t=>t())),delete this.unre...
  method operator (line 1) | operator(t,e){this.add(t,this.dataflow.add(t.value,e))}
  method transform (line 1) | transform(t,e){this.add(t,this.dataflow.add(this.transforms[SB(e)]))}
  method stream (line 1) | stream(t,e){this.set(t.id,e)}
  method update (line 1) | update(t,e,n,r,i){this.dataflow.on(e,n,r,i,t.options)}
  method operatorExpression (line 1) | operatorExpression(t){return this.expr.operator(this,t)}
  method parameterExpression (line 1) | parameterExpression(t){return this.expr.parameter(this,t)}
  method eventExpression (line 1) | eventExpression(t){return this.expr.event(this,t)}
  method handlerExpression (line 1) | handlerExpression(t){return this.expr.handler(this,t)}
  method encodeExpression (line 1) | encodeExpression(t){return this.expr.encode(this,t)}
  function PB (line 1) | function PB(t,e){const n=t.globalCursor()?"undefined"!=typeof document&&...
  function jB (line 1) | function jB(t,e){var n=t._runtime.data;return lt(n,e)||s("Unrecognized d...
  function IB (line 1) | function IB(t,e){Aa(e)||s("Second argument to changes must be a changese...
  function WB (line 1) | function WB(t){var e=t.padding();return Math.max(0,t._viewWidth+e.left+e...
  function HB (line 1) | function HB(t){var e=t.padding();return Math.max(0,t._viewHeight+e.top+e...
  function YB (line 1) | function YB(t){var e=t.padding(),n=t._origin;return[e.left+n[0],e.top+n[...
  function GB (line 1) | function GB(t,e,n){var r,i,o=t._renderer,a=o&&o.canvas();return a&&(i=YB...
  function JB (line 1) | function JB(t,e,n,r){t._eventListeners.push({type:n,sources:V(e),handler...
  function ZB (line 1) | function ZB(t,e,n){const r=t._eventConfig&&t._eventConfig[e];return!(!1=...
  function QB (line 1) | function QB(t){return t.item}
  function KB (line 1) | function KB(t){return t.item.mark.source}
  function tz (line 1) | function tz(t){return function(e,n){return n.vega.view().changeset().enc...
  function ez (line 1) | function ez(t,e,n){const r=document.createElement(t);for(const t in e)r....
  function oz (line 1) | function oz(t,e,n,r){const i=n.event||"input",o=()=>t.update(e.value);r....
  function az (line 1) | function az(t,e,n,r){const i=r.signal(n.signal),o=ez("div",{class:nz}),a...
  function sz (line 1) | function sz(t,e,n,r){const i=ez("input");for(const t in n)"signal"!==t&&...
  function uz (line 1) | function uz(t,e,n,r){const i={type:"checkbox",name:n.signal};r&&(i.check...
  function lz (line 1) | function lz(t,e,n,r){const i=ez("select",{name:n.signal}),o=n.labels||[]...
  function cz (line 1) | function cz(t,e,n,r){const i=ez("span",{class:iz}),o=n.labels||[];e.appe...
  function fz (line 1) | function fz(t,e,n,r){r=void 0!==r?r:(+n.max+ +n.min)/2;const i=null!=n.m...
  function hz (line 1) | function hz(t,e){return t===e||t+""==e+""}
  function dz (line 1) | function dz(t,e,n,r,i,o){return(e=e||new r(t.loader())).initialize(n,WB(...
  function pz (line 1) | function pz(t,e){return e?function(){try{e.apply(this,arguments)}catch(e...
  function gz (line 1) | function gz(t,e,n){if("string"==typeof e){if("undefined"==typeof documen...
  function yz (line 1) | function yz(t){return A(t)?{top:mz(t.top),bottom:mz(t.bottom),left:mz(t....
  function vz (line 1) | async function vz(t,e,n,r){const i=T_(e),o=i&&i.headless;return o||s("Un...
  function kz (line 1) | function kz(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contain...
  function Az (line 1) | function Az(t,e){var n=t.autosize(),r=t.padding();return e-(n&&n.contain...
  function Mz (line 1) | function Mz(t,e){return e.modified&&k(e.input.value)&&!t.startsWith("_:v...
  function Ez (line 1) | function Ez(t,e){return!("parent"===t||e instanceof Za.proxy)}
  function Dz (line 1) | function Dz(t,e,n,r){const i=t.element();i&&i.setAttribute("title",funct...
  function Cz (line 1) | function Cz(t){return"["+t.map(Fz).join(", ")+"]"}
  function Fz (line 1) | function Fz(t){return k(t)?"[…]":A(t)&&!mt(t)?"{…}":t}
  function Sz (line 1) | function Sz(t,e){const n=this;if(e=e||{},Va.call(n),e.loader&&n.loader(e...
  function $z (line 1) | function $z(t,e){return lt(t._signals,e)?t._signals[e]:s("Unrecognized s...
  function Tz (line 1) | function Tz(t,e){const n=(t._targets||[]).filter((t=>t._update&&t._updat...
  function Bz (line 1) | function Bz(t,e,n,r){let i=Tz(n,r);return i||(i=pz(t,(()=>r(e,n.value)))...
  function zz (line 1) | function zz(t,e,n){const r=Tz(e,n);return r&&e._targets.remove(r),t}
  method evaluate (line 1) | async evaluate(t,e,n){if(await Va.prototype.evaluate.call(this,t,e),this...
  method dirty (line 1) | dirty(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)}
  method description (line 1) | description(t){if(arguments.length){const e=null!=t?t+"":null;return e!=...
  method container (line 1) | container(){return this._el}
  method scenegraph (line 1) | scenegraph(){return this._scenegraph}
  method origin (line 1) | origin(){return this._origin.slice()}
  method signal (line 1) | signal(t,e,n){const r=$z(this,t);return 1===arguments.length?r.value:thi...
  method width (line 1) | width(t){return arguments.length?this.signal("width",t):this.signal("wid...
  method height (line 1) | height(t){return arguments.length?this.signal("height",t):this.signal("h...
  method padding (line 1) | padding(t){return arguments.length?this.signal("padding",yz(t)):yz(this....
  method autosize (line 1) | autosize(t){return arguments.length?this.signal("autosize",t):this.signa...
  method background (line 1) | background(t){return arguments.length?this.signal("background",t):this.s...
  method renderer (line 1) | renderer(t){return arguments.length?(T_(t)||s("Unrecognized renderer typ...
  method tooltip (line 1) | tooltip(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,...
  method loader (line 1) | loader(t){return arguments.length?(t!==this._loader&&(Va.prototype.loade...
  method resize (line 1) | resize(){return this._autosize=1,this.touch($z(this,"autosize"))}
  method _resetRenderer (line 1) | _resetRenderer(){this._renderer&&(this._renderer=null,this.initialize(th...
  method addEventListener (line 1) | addEventListener(t,e,n){let r=e;return n&&!1===n.trap||(r=pz(this,e),r.r...
  method removeEventListener (line 1) | removeEventListener(t,e){for(var n,r,i=this._handler.handlers(t),o=i.len...
  method addResizeListener (line 1) | addResizeListener(t){const e=this._resizeListeners;return e.includes(t)|...
  method removeResizeListener (line 1) | removeResizeListener(t){var e=this._resizeListeners,n=e.indexOf(t);retur...
  method addSignalListener (line 1) | addSignalListener(t,e){return Bz(this,t,$z(this,t),e)}
  method removeSignalListener (line 1) | removeSignalListener(t,e){return zz(this,$z(this,t),e)}
  method addDataListener (line 1) | addDataListener(t,e){return Bz(this,t,jB(this,t).values,e)}
  method removeDataListener (line 1) | removeDataListener(t,e){return zz(this,jB(this,t).values,e)}
  method globalCursor (line 1) | globalCursor(t){if(arguments.length){if(this._globalCursor!==!!t){const ...
  method preventDefault (line 1) | preventDefault(t){return arguments.length?(this._preventDefault=t,this):...
  function Vz (line 1) | function Vz(t,e,n){return Yz=e||Nz,Gz=n||Hz,Jz(t.trim()).map(Zz)}
  function Xz (line 1) | function Xz(t,e,n,r,i){const o=t.length;let a,s=0;for(;er[t]=1...
  function UN (line 1) | function UN(t,e){s(t+' for "outer" push: '+Ct(e))}
  function LN (line 1) | function LN(t,e){const n=t.name;if(t.push===ON)e.signals[n]||UN("No prio...
  function qN (line 1) | function qN(t,e,n,r){this.id=-1,this.type=t,this.value=e,this.params=n,r...
  function PN (line 1) | function PN(t,e,n,r){return new qN(t,e,n,r)}
  function jN (line 1) | function jN(t,e){return PN("operator",t,e)}
  function IN (line 1) | function IN(t){const e={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).pu...
  function WN (line 1) | function WN(t,e){return e?{$field:t,$name:e}:{$field:t}}
  function YN (line 1) | function YN(t,e){return{$compare:t,$order:e}}
  function VN (line 1) | function VN(t,e){return(t&&t.signal?"$"+t.signal:t||"")+(t&&e?"_":"")+(e...
  function ZN (line 1) | function ZN(t){return t&&t.signal}
  function QN (line 1) | function QN(t){if(ZN(t))return!0;if(A(t))for(const e in t)if(QN(t[e]))re...
  function KN (line 1) | function KN(t,e){return null!=t?t:e}
  function tO (line 1) | function tO(t){return t&&t.signal||t}
  function nO (line 1) | function nO(t,e){return(t.merge?rO:t.stream?iO:t.type?oO:s("Invalid stre...
  function rO (line 1) | function rO(t,e){const n=aO({merge:t.merge.map((t=>nO(t,e)))},t,e);retur...
  function iO (line 1) | function iO(t,e){const n=aO({stream:nO(t.stream,e)},t,e);return e.addStr...
  function oO (line 1) | function oO(t,e){let n;t.type===eO?(n=e.event(eO,t.throttle),t={between:...
  function aO (line 1) | function aO(t,e,n){let r=e.between;return r&&(2!==r.length&&s('Stream "b...
  function uO (line 1) | function uO(t,e,n){const r=t.encode,i={target:n};let o=t.events,a=t.upda...
  function lO (line 1) | function lO(t){return{signal:"["+t.map((t=>t.scale?'scale("'+t.scale+'")...
  function PO (line 1) | function PO(t,e){const n=e.getScale(t.name).params;let r;for(r in n.doma...
  function jO (line 1) | function jO(t,e){return A(t)?t.signal?e.signalRef(t.signal):s("Unsupport...
  function IO (line 1) | function IO(t,e){return t.signal?e.signalRef(t.signal):t.map((t=>jO(t,e)))}
  function WO (line 1) | function WO(t){s("Can not find data set: "+Ct(t))}
  function HO (line 1) | function HO(t,e,n){if(t)return t.signal?n.signalRef(t.signal):(k(t)?YO:t...
  function YO (line 1) | function YO(t,e,n){return t.map((t=>jO(t,n)))}
  function GO (line 1) | function GO(t,e,n){const r=n.getData(t.data);return r||WO(t.data),cp(e.t...
  function VO (line 1) | function VO(t,e,n){const r=t.data,i=t.fields.reduce(((t,e)=>(e=xt(e)?{da...
  function XO (line 1) | function XO(t,e,n){const r=JO(t.sort,!0);let i,o;const a=n.map((t=>{cons...
  function JO (line 1) | function JO(t,e){return t&&(t.field||t.op?t.field||"count"===t.op?e&&t.f...
  function ZO (line 1) | function ZO(t,e,n){const r=n.map((t=>{const n=e.getData(t.data);return n...
  function QO (line 1) | function QO(t,e,n){const r=n.map((t=>{const n=e.getData(t.data);return n...
  function KO (line 1) | function KO(t,e,n){const r=e.config.range;let i=t.range;if(i.signal)retu...
  function tR (line 1) | function tR(t,e,n){return k(t)?t.map((t=>tR(t,e,n))):A(t)?t.signal?n.sig...
  function TR (line 1) | function TR(t){return t.type=DR,t.interactive=t.interactive||!1,t}
  function BR (line 1) | function BR(t,e){const n=(n,r)=>KN(t[n],KN(e[n],r));return n.isVertical=...
  function zR (line 1) | function zR(t,e){const n=e&&(e.update&&e.update[t]||e.enter&&e.enter[t])...
  function NR (line 1) | function NR(t,e,n){return`item.anchor === '${sR}' ? ${t} : item.anchor =...
  function RR (line 1) | function RR(t,e){return e?t?A(t)?Object.assign({},t,{offset:RR(t.offset,...
  function UR (line 1) | function UR(t,e){return e?(t.name=e.name,t.style=e.style||t.style,t.inte...
  function LR (line 1) | function LR(t,e,n,r){const i=BR(t,n),o=i.isVertical(),a=i.gradientThickn...
  function qR (line 1) | function qR(t,e,n,r,i){const o=BR(t,n),a=o.isVertical(),s=o.gradientThic...
  function IR (line 1) | function IR(t,e,n,r){const i=BR(t,e),o=i.isVertical(),a=nN(i.gradientThi...
  function WR (line 1) | function WR(t,e,n,r,i){const o=BR(t,e),a=n.entries,s=!(!a||!a.interactiv...
  function tU (line 1) | function tU(t,e){let n;return A(t)&&(t.signal?n=t.signal:t.path?n="pathS...
  function eU (line 1) | function eU(t){return A(t)&&t.signal?t.signal:Ct(t)}
  function nU (line 1) | function nU(t){const e=t.role||"";return e.startsWith("axis")||e.startsW...
  function rU (line 1) | function rU(t){return{marktype:t.type,name:t.name||void 0,role:t.role||n...
  function iU (line 1) | function iU(t,e){return t&&t.signal?e.signalRef(t.signal):!1!==t}
  function oU (line 1) | function oU(t,e){const n=Qa(t.type);n||s("Unrecognized transform type: "...
  function aU (line 1) | function aU(t,e,n){const r={},i=t.params.length;for(let o=0;o{n.push...
  function SU (line 1) | function SU(t){const e=pO({},t);return e.metadata={source:!0},e}
  function $U (line 1) | function $U(t,e){return kO({url:e.url?t.property(e.url):void 0,async:e.a...
  function JU (line 1) | function JU(t,e,n,r){let i;if(e&<(e,t))return e[t];if(lt(n,t))return n...
  function ZU (line 1) | function ZU(t){const e={};for(const n of t)if(n)for(const t in n)e[t]=1;...
  function QU (line 1) | function QU(t,e){return{scale:t.scale,range:e}}
  function KU (line 1) | function KU(t,e,n,r,i){const o=BR(t,e),a=t.orient,s=t.gridScale,u=BU(a,1...
  function tL (line 1) | function tL(t,e,n,r,i){return{signal:'flush(range("'+t+'"), scale("'+t+'...
  function eL (line 1) | function eL(t,e,n,r){const i=BR(t,e),o=t.orient,a=BU(o,-1,1);let s,u;con...
  function nL (line 1) | function nL(t,e){const n=function(t,e){var n,r,i,o=e.config,a=o.style,s=...
  function rL (line 1) | function rL(t,e){const n={enter:{},update:{}};return iN(n,{orient:t("ori...
  function iL (line 1) | function iL(t,e,n){const r=V(t.signals),i=V(t.scales);return n||r.forEac...
  function aL (line 1) | function aL(t,e){const n=e.config,r=IN(e.root=e.add(jN())),i=function(t,...
  function sL (line 1) | function sL(t,e){return e&&e.signal?{name:t,update:e.signal}:{name:t,val...
  function uL (line 1) | function uL(t,e){this.config=t||{},this.options=e||{},this.bindings=[],t...
  function lL (line 1) | function lL(t){this.config=t.config,this.options=t.options,this.legends=...
  function cL (line 1) | function cL(t){return(k(t)?fL:hL)(t)}
  function fL (line 1) | function fL(t){const e=t.length;let n="[";for(let r=0;r1?",":"")+Ct(...
  method parse (line 1) | parse(t){return iL(t,this)}
  method fork (line 1) | fork(){return new lL(this)}
  method isSubscope (line 1) | isSubscope(){return this._subid>0}
  method toRuntime (line 1) | toRuntime(){return this.finish(),{description:this.description,operators...
  method id (line 1) | id(){return(this._subid?this._subid+":":0)+this._id++}
  method add (line 1) | add(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forE...
  method proxy (line 1) | proxy(t){const e=t instanceof qN?IN(t):t;return this.add($O({value:e}))}
  method addStream (line 1) | addStream(t){return this.streams.push(t),t.id=this.id(),t}
  method addUpdate (line 1) | addUpdate(t){return this.updates.push(t),t}
  method finish (line 1) | finish(){let t,e;for(t in this.root&&(this.root.root=!0),this.signals)th...
  method pushState (line 1) | pushState(t,e,n){this._encode.push(IN(this.add(NO({pulse:t})))),this._pa...
  method popState (line 1) | popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this...
  method parent (line 1) | parent(){return F(this._parent)}
  method encode (line 1) | encode(){return F(this._encode)}
  method lookup (line 1) | lookup(){return F(this._lookup)}
  method markpath (line 1) | markpath(){const t=this._markpath;return++t[t.length-1]}
  method fieldRef (line 1) | fieldRef(t,e){if(xt(t))return WN(t,e);t.signal||s("Unsupported field ref...
  method compareRef (line 1) | compareRef(t){let e=!1;const n=t=>ZN(t)?(e=!0,this.signalRef(t.signal)):...
  method keyRef (line 1) | keyRef(t,e){let n=!1;const r=this.signals;return t=V(t).map((t=>ZN(t)?(n...
  method sortRef (line 1) | sortRef(t){if(!t)return t;const e=VN(t.op,t.field),n=t.order||"ascending...
  method event (line 1) | event(t,e){const n=t+":"+e;if(!this.events[n]){const r=this.id();this.st...
  method hasOwnSignal (line 1) | hasOwnSignal(t){return lt(this.signals,t)}
  method addSignal (line 1) | addSignal(t,e){this.hasOwnSignal(t)&&s("Duplicate signal name: "+Ct(t));...
  method getSignal (line 1) | getSignal(t){return this.signals[t]||s("Unrecognized signal name: "+Ct(t...
  method signalRef (line 1) | signalRef(t){return this.signals[t]?IN(this.signals[t]):(lt(this.lambdas...
  method parseLambdas (line 1) | parseLambdas(){const t=Object.keys(this.lambdas);for(let e=0,n=t.length;...
  method property (line 1) | property(t){return t&&t.signal?this.signalRef(t.signal):t}
  method objectProperty (line 1) | objectProperty(t){return t&&A(t)?this.signalRef(t.signal||cL(t)):t}
  method exprRef (line 1) | exprRef(t,e){const n={expr:DB(t,this)};return e&&(n.expr.$name=e),IN(thi...
  method addBinding (line 1) | addBinding(t,e){this.bindings||s("Nested signals do not support binding:...
  method addScaleProj (line 1) | addScaleProj(t,e){lt(this.scales,t)&&s("Duplicate scale or projection na...
  method addScale (line 1) | addScale(t,e){this.addScaleProj(t,zO(e))}
  method addProjection (line 1) | addProjection(t,e){this.addScaleProj(t,SO(e))}
  method getScale (line 1) | getScale(t){return this.scales[t]||s("Unrecognized scale name: "+Ct(t)),...
  method scaleRef (line 1) | scaleRef(t){return IN(this.getScale(t))}
  method scaleType (line 1) | scaleType(t){return this.getScale(t).params.type}
  method projectionRef (line 1) | projectionRef(t){return this.scaleRef(t)}
  method projectionType (line 1) | projectionType(t){return this.scaleType(t)}
  method addData (line 1) | addData(t,e){return lt(this.data,t)&&s("Duplicate data set name: "+Ct(t)...
  method getData (line 1) | getData(t){return this.data[t]||s("Undefined data set name: "+Ct(t)),thi...
  method addDataPipeline (line 1) | addDataPipeline(t,e){return lt(this.data,t)&&s("Duplicate data set name:...
  method min (line 1) | min(t){return arguments.length?(r=t||0,o=i-r,a):r}
  method max (line 1) | max(t){return arguments.length?(i=t||0,o=i-r,a):i}
  method cdf (line 1) | cdf(t){const e=Math.floor(t);return e=i?1:(e-r+1)/o}

FILE: examples/discord_bot.py
  class BBOTDiscordBot (line 8) | class BBOTDiscordBot(commands.Cog):
    method __init__ (line 34) | def __init__(self):
    method scan (line 38) | async def scan(self, ctx, target: str):
  function on_ready (line 67) | async def on_ready():