"use strict";
// /*!
//  * Modified version of htmlparser2 which has been stripped down to only provide
//  * the functionality needed by Autolinker in order to make the final bundle as
//  * small as possible. Original: https://github.com/fb55/htmlparser2
//  * 
//  * Original copyright:
//  * 
//  * Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
//  * Permission is hereby granted, free of charge, to any person obtaining a copy
//  * of this software and associated documentation files (the "Software"), to
//  * deal in the Software without restriction, including without limitation the
//  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
//  * sell copies of the Software, and to permit persons to whom the Software is
//  * furnished to do so, subject to the following conditions:
// */
// var i = 0;
// var TEXT = i++;
// var BEFORE_TAG_NAME = i++; //after <
// var IN_TAG_NAME = i++;
// var IN_SELF_CLOSING_TAG = i++;
// var BEFORE_CLOSING_TAG_NAME = i++;
// var IN_CLOSING_TAG_NAME = i++;
// var AFTER_CLOSING_TAG_NAME = i++;
// //attributes
// var BEFORE_ATTRIBUTE_NAME = i++;
// var IN_ATTRIBUTE_NAME = i++;
// var AFTER_ATTRIBUTE_NAME = i++;
// var BEFORE_ATTRIBUTE_VALUE = i++;
// var IN_ATTRIBUTE_VALUE_DQ = i++; // "
// var IN_ATTRIBUTE_VALUE_SQ = i++; // '
// var IN_ATTRIBUTE_VALUE_NQ = i++;
// //declarations
// var BEFORE_DECLARATION = i++; // !
// var IN_DECLARATION = i++;
// //processing instructions
// var IN_PROCESSING_INSTRUCTION = i++; // ?
// //comments
// var BEFORE_COMMENT = i++;
// var IN_COMMENT = i++;
// var AFTER_COMMENT_1 = i++;
// var AFTER_COMMENT_2 = i++;
// //cdata
// var BEFORE_CDATA_1 = i++; // [
// var BEFORE_CDATA_2 = i++; // C
// var BEFORE_CDATA_3 = i++; // D
// var BEFORE_CDATA_4 = i++; // A
// var BEFORE_CDATA_5 = i++; // T
// var BEFORE_CDATA_6 = i++; // A
// var IN_CDATA = i++; // [
// var AFTER_CDATA_1 = i++; // ]
// var AFTER_CDATA_2 = i++; // ]
// //special tags
// var BEFORE_SPECIAL = i++; //S
// var BEFORE_SPECIAL_END = i++; //S
// var BEFORE_SCRIPT_1 = i++; //C
// var BEFORE_SCRIPT_2 = i++; //R
// var BEFORE_SCRIPT_3 = i++; //I
// var BEFORE_SCRIPT_4 = i++; //P
// var BEFORE_SCRIPT_5 = i++; //T
// var AFTER_SCRIPT_1 = i++; //C
// var AFTER_SCRIPT_2 = i++; //R
// var AFTER_SCRIPT_3 = i++; //I
// var AFTER_SCRIPT_4 = i++; //P
// var AFTER_SCRIPT_5 = i++; //T
// var BEFORE_STYLE_1 = i++; //T
// var BEFORE_STYLE_2 = i++; //Y
// var BEFORE_STYLE_3 = i++; //L
// var BEFORE_STYLE_4 = i++; //E
// var AFTER_STYLE_1 = i++; //T
// var AFTER_STYLE_2 = i++; //Y
// var AFTER_STYLE_3 = i++; //L
// var AFTER_STYLE_4 = i++; //E
// var BEFORE_ENTITY = i++; //&
// var BEFORE_NUMERIC_ENTITY = i++; //#
// var IN_NAMED_ENTITY = i++;
// var IN_NUMERIC_ENTITY = i++;
// var IN_HEX_ENTITY = i++; //X
// var j = 0;
// var SPECIAL_NONE = j++;
// var SPECIAL_SCRIPT = j++;
// var SPECIAL_STYLE = j++;
// export function tokenizeHtml(
// 	html: string,
// 	{ ontext, onopentagname, onopentagend, onclosetag, onselfclosingtag, oncomment, onerror }: {
// 		ontext: ( text: string ) => void;
// 		onopentagname: ( name: string ) => void;
// 		onopentagend: () => void;
// 		onclosetag: ( name: string ) => void;
// 		onselfclosingtag: () => void;
// 		oncomment: ( text: string ) => void;
// 		onerror: ( err: Error, state: number ) => void;
// 	}
// ) {
// 	let _state = TEXT,
// 		_buffer = html,
// 		_sectionStart = 0,
// 		_index = 0,
// 		_baseState = TEXT,
// 		_special = SPECIAL_NONE,
// 		_decodeEntities = true,
// 		_xmlMode = false;
// 	// TEMPORARY
// 	const entityMap: any = {};
// 	const xmlMap: any = {};
// 	const legacyMap: any = {};
// 	const decodeCodePoint = (arg:any) => '';
// 	_parse();
// 	function whitespace(c: string) {
// 		return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r";
// 	}
// 	function ifElseState(upper: string, SUCCESS: number, FAILURE: number) {
// 		var lower = upper.toLowerCase();
// 		if (upper === lower) {
// 			return function(c: string) {
// 				if (c === lower) {
// 					_state = SUCCESS;
// 				} else {
// 					_state = FAILURE;
// 					_index--;
// 				}
// 			};
// 		} else {
// 			return function(c: string) {
// 				if (c === lower || c === upper) {
// 					_state = SUCCESS;
// 				} else {
// 					_state = FAILURE;
// 					_index--;
// 				}
// 			};
// 		}
// 	}
// 	function consumeSpecialNameChar(upper: string, NEXT_STATE: number) {
// 		var lower = upper.toLowerCase();
// 		return function(c: string) {
// 			if (c === lower || c === upper) {
// 				_state = NEXT_STATE;
// 			} else {
// 				_state = IN_TAG_NAME;
// 				_index--; //consume the token again
// 			}
// 		};
// 	}
// 	function _stateText(c: string) {
// 		if (c === "<") {
// 			if (_index > _sectionStart) {
// 				ontext(_getSection());
// 			}
// 			_state = BEFORE_TAG_NAME;
// 			_sectionStart = _index;
// 		} else if (
// 			_decodeEntities &&
// 			_special === SPECIAL_NONE &&
// 			c === "&"
// 		) {
// 			if (_index > _sectionStart) {
// 				ontext(_getSection());
// 			}
// 			_baseState = TEXT;
// 			_state = BEFORE_ENTITY;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateBeforeTagName(c: string) {
// 		if (c === "/") {
// 			_state = BEFORE_CLOSING_TAG_NAME;
// 		} else if (c === "<") {
// 			ontext(_getSection());
// 			_sectionStart = _index;
// 		} else if (c === ">" || _special !== SPECIAL_NONE || whitespace(c)) {
// 			_state = TEXT;
// 		} else if (c === "!") {
// 			_state = BEFORE_DECLARATION;
// 			_sectionStart = _index + 1;
// 		} else if (c === "?") {
// 			_state = IN_PROCESSING_INSTRUCTION;
// 			_sectionStart = _index + 1;
// 		} else {
// 			_state =
// 				!_xmlMode && (c === "s" || c === "S")
// 					? BEFORE_SPECIAL
// 					: IN_TAG_NAME;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateInTagName(c: string) {
// 		if (c === "/" || c === ">" || whitespace(c)) {
// 			_emitToken("onopentagname");
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 			_index--;
// 		}
// 	};
// 	function _stateBeforeCloseingTagName(c: string) {
// 		if (whitespace(c)) {}
// 		else if (c === ">") {
// 			_state = TEXT;
// 		} else if (_special !== SPECIAL_NONE) {
// 			if (c === "s" || c === "S") {
// 				_state = BEFORE_SPECIAL_END;
// 			} else {
// 				_state = TEXT;
// 				_index--;
// 			}
// 		} else {
// 			_state = IN_CLOSING_TAG_NAME;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateInCloseingTagName(c: string) {
// 		if (c === ">" || whitespace(c)) {
// 			_emitToken("onclosetag");
// 			_state = AFTER_CLOSING_TAG_NAME;
// 			_index--;
// 		}
// 	};
// 	function _stateAfterCloseingTagName(c: string) {
// 		//skip everything until ">"
// 		if (c === ">") {
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		}
// 	};
// 	function _stateBeforeAttributeName(c: string) {
// 		if (c === ">") {
// 			onopentagend();
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		} else if (c === "/") {
// 			_state = IN_SELF_CLOSING_TAG;
// 		} else if (!whitespace(c)) {
// 			_state = IN_ATTRIBUTE_NAME;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateInSelfClosingTag(c: string) {
// 		if (c === ">") {
// 			onselfclosingtag();
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		} else if (!whitespace(c)) {
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 			_index--;
// 		}
// 	};
// 	function _stateInAttributeName(c: string) {
// 		if (c === "=" || c === "/" || c === ">" || whitespace(c)) {
// 			_sectionStart = -1;
// 			_state = AFTER_ATTRIBUTE_NAME;
// 			_index--;
// 		}
// 	};
// 	function _stateAfterAttributeName(c: string) {
// 		if (c === "=") {
// 			_state = BEFORE_ATTRIBUTE_VALUE;
// 		} else if (c === "/" || c === ">") {
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 			_index--;
// 		} else if (!whitespace(c)) {
// 			_state = IN_ATTRIBUTE_NAME;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateBeforeAttributeValue(c: string) {
// 		if (c === '"') {
// 			_state = IN_ATTRIBUTE_VALUE_DQ;
// 			_sectionStart = _index + 1;
// 		} else if (c === "'") {
// 			_state = IN_ATTRIBUTE_VALUE_SQ;
// 			_sectionStart = _index + 1;
// 		} else if (!whitespace(c)) {
// 			_state = IN_ATTRIBUTE_VALUE_NQ;
// 			_sectionStart = _index;
// 			_index--; //reconsume token
// 		}
// 	};
// 	function _stateInAttributeValueDoubleQuotes(c: string) {
// 		if (c === '"') {
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 		} else if (_decodeEntities && c === "&") {
// 			_baseState = _state;
// 			_state = BEFORE_ENTITY;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateInAttributeValueSingleQuotes(c: string) {
// 		if (c === "'") {
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 		} else if (_decodeEntities && c === "&") {
// 			_baseState = _state;
// 			_state = BEFORE_ENTITY;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateInAttributeValueNoQuotes(c: string) {
// 		if (whitespace(c) || c === ">") {
// 			_state = BEFORE_ATTRIBUTE_NAME;
// 			_index--;
// 		} else if (_decodeEntities && c === "&") {
// 			_baseState = _state;
// 			_state = BEFORE_ENTITY;
// 			_sectionStart = _index;
// 		}
// 	};
// 	function _stateBeforeDeclaration(c: string) {
// 		_state =
// 			c === "["
// 				? BEFORE_CDATA_1
// 				: c === "-"
// 					? BEFORE_COMMENT
// 					: IN_DECLARATION;
// 	};
// 	function _stateInDeclaration(c: string) {
// 		if (c === ">") {
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		}
// 	};
// 	function _stateInProcessingInstruction(c: string) {
// 		if (c === ">") {
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		}
// 	};
// 	function _stateBeforeComment(c: string) {
// 		if (c === "-") {
// 			_state = IN_COMMENT;
// 			_sectionStart = _index + 1;
// 		} else {
// 			_state = IN_DECLARATION;
// 		}
// 	};
// 	function _stateInComment(c: string) {
// 		if (c === "-") _state = AFTER_COMMENT_1;
// 	};
// 	function _stateAfterComment1(c: string) {
// 		if (c === "-") {
// 			_state = AFTER_COMMENT_2;
// 		} else {
// 			_state = IN_COMMENT;
// 		}
// 	};
// 	function _stateAfterComment2(c: string) {
// 		if (c === ">") {
// 			//remove 2 trailing chars
// 			oncomment(
// 				_buffer.substring(_sectionStart, _index - 2)
// 			);
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		} else if (c !== "-") {
// 			_state = IN_COMMENT;
// 		}
// 		// else: stay in AFTER_COMMENT_2 (`--->`)
// 	};
// 	let _stateBeforeCdata1 = ifElseState(
// 		"C",
// 		BEFORE_CDATA_2,
// 		IN_DECLARATION
// 	);
// 	let _stateBeforeCdata2 = ifElseState(
// 		"D",
// 		BEFORE_CDATA_3,
// 		IN_DECLARATION
// 	);
// 	let _stateBeforeCdata3 = ifElseState(
// 		"A",
// 		BEFORE_CDATA_4,
// 		IN_DECLARATION
// 	);
// 	let _stateBeforeCdata4 = ifElseState(
// 		"T",
// 		BEFORE_CDATA_5,
// 		IN_DECLARATION
// 	);
// 	let _stateBeforeCdata5 = ifElseState(
// 		"A",
// 		BEFORE_CDATA_6,
// 		IN_DECLARATION
// 	);
// 	function _stateBeforeCdata6(c: string) {
// 		if (c === "[") {
// 			_state = IN_CDATA;
// 			_sectionStart = _index + 1;
// 		} else {
// 			_state = IN_DECLARATION;
// 			_index--;
// 		}
// 	};
// 	function _stateInCdata(c: string) {
// 		if (c === "]") _state = AFTER_CDATA_1;
// 	};
// 	function _stateAfterCdata1(c: string) {
// 		if (c === "]") _state = AFTER_CDATA_2;
// 		else _state = IN_CDATA;
// 	};
// 	function _stateAfterCdata2(c: string) {
// 		if (c === ">") {
// 			_state = TEXT;
// 			_sectionStart = _index + 1;
// 		} else if (c !== "]") {
// 			_state = IN_CDATA;
// 		}
// 		//else: stay in AFTER_CDATA_2 (`]]]>`)
// 	};
// 	function _stateBeforeSpecial(c: string) {
// 		if (c === "c" || c === "C") {
// 			_state = BEFORE_SCRIPT_1;
// 		} else if (c === "t" || c === "T") {
// 			_state = BEFORE_STYLE_1;
// 		} else {
// 			_state = IN_TAG_NAME;
// 			_index--; //consume the token again
// 		}
// 	};
// 	function _stateBeforeSpecialEnd(c: string) {
// 		if (_special === SPECIAL_SCRIPT && (c === "c" || c === "C")) {
// 			_state = AFTER_SCRIPT_1;
// 		} else if (_special === SPECIAL_STYLE && (c === "t" || c === "T")) {
// 			_state = AFTER_STYLE_1;
// 		} else _state = TEXT;
// 	};
// 	let _stateBeforeScript1 = consumeSpecialNameChar(
// 		"R",
// 		BEFORE_SCRIPT_2
// 	);
// 	let _stateBeforeScript2 = consumeSpecialNameChar(
// 		"I",
// 		BEFORE_SCRIPT_3
// 	);
// 	let _stateBeforeScript3 = consumeSpecialNameChar(
// 		"P",
// 		BEFORE_SCRIPT_4
// 	);
// 	let _stateBeforeScript4 = consumeSpecialNameChar(
// 		"T",
// 		BEFORE_SCRIPT_5
// 	);
// 	function _stateBeforeScript5(c: string) {
// 		if (c === "/" || c === ">" || whitespace(c)) {
// 			_special = SPECIAL_SCRIPT;
// 		}
// 		_state = IN_TAG_NAME;
// 		_index--; //consume the token again
// 	};
// 	let _stateAfterScript1 = ifElseState("R", AFTER_SCRIPT_2, TEXT);
// 	let _stateAfterScript2 = ifElseState("I", AFTER_SCRIPT_3, TEXT);
// 	let _stateAfterScript3 = ifElseState("P", AFTER_SCRIPT_4, TEXT);
// 	let _stateAfterScript4 = ifElseState("T", AFTER_SCRIPT_5, TEXT);
// 	function _stateAfterScript5(c: string) {
// 		if (c === ">" || whitespace(c)) {
// 			_special = SPECIAL_NONE;
// 			_state = IN_CLOSING_TAG_NAME;
// 			_sectionStart = _index - 6;
// 			_index--; //reconsume the token
// 		} else _state = TEXT;
// 	};
// 	let _stateBeforeStyle1 = consumeSpecialNameChar(
// 		"Y",
// 		BEFORE_STYLE_2
// 	);
// 	let _stateBeforeStyle2 = consumeSpecialNameChar(
// 		"L",
// 		BEFORE_STYLE_3
// 	);
// 	let _stateBeforeStyle3 = consumeSpecialNameChar(
// 		"E",
// 		BEFORE_STYLE_4
// 	);
// 	function _stateBeforeStyle4(c: string) {
// 		if (c === "/" || c === ">" || whitespace(c)) {
// 			_special = SPECIAL_STYLE;
// 		}
// 		_state = IN_TAG_NAME;
// 		_index--; //consume the token again
// 	};
// 	let _stateAfterStyle1 = ifElseState("Y", AFTER_STYLE_2, TEXT);
// 	let _stateAfterStyle2 = ifElseState("L", AFTER_STYLE_3, TEXT);
// 	let _stateAfterStyle3 = ifElseState("E", AFTER_STYLE_4, TEXT);
// 	function _stateAfterStyle4(c: string) {
// 		if (c === ">" || whitespace(c)) {
// 			_special = SPECIAL_NONE;
// 			_state = IN_CLOSING_TAG_NAME;
// 			_sectionStart = _index - 5;
// 			_index--; //reconsume the token
// 		} else _state = TEXT;
// 	};
// 	let _stateBeforeEntity = ifElseState(
// 		"#",
// 		BEFORE_NUMERIC_ENTITY,
// 		IN_NAMED_ENTITY
// 	);
// 	let _stateBeforeNumericEntity = ifElseState(
// 		"X",
// 		IN_HEX_ENTITY,
// 		IN_NUMERIC_ENTITY
// 	);
// 	//for entities terminated with a semicolon
// 	function _parseNamedEntityStrict() {
// 		// TODO: For this section, use the regex /(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/ ???
// 		//offset = 1
// 		if (_sectionStart + 1 < _index) {
// 			var entity = _buffer.substring(
// 					_sectionStart + 1,
// 					_index
// 				),
// 				map = _xmlMode ? xmlMap : entityMap;
// 			if (map.hasOwnProperty(entity)) {
// 				_emitPartial(map[entity]);
// 				_sectionStart = _index + 1;
// 			}
// 		}
// 	};
// 	//parses legacy entities (without trailing semicolon)
// 	function _parseLegacyEntity() {
// 		var start = _sectionStart + 1,
// 			limit = _index - start;
// 		if (limit > 6) limit = 6; //the max length of legacy entities is 6
// 		while (limit >= 2) {
// 			//the min length of legacy entities is 2
// 			var entity = _buffer.substr(start, limit);
// 			if (legacyMap.hasOwnProperty(entity)) {
// 				_emitPartial(legacyMap[entity]);
// 				_sectionStart += limit + 1;
// 				return;
// 			} else {
// 				limit--;
// 			}
// 		}
// 	};
// 	function _stateInNamedEntity(c: string) {
// 		if (c === ";") {
// 			_parseNamedEntityStrict();
// 			if (_sectionStart + 1 < _index && !_xmlMode) {
// 				_parseLegacyEntity();
// 			}
// 			_state = _baseState;
// 		} else if (
// 			(c < "a" || c > "z") &&
// 			(c < "A" || c > "Z") &&
// 			(c < "0" || c > "9")
// 		) {
// 			if (_xmlMode) {}
// 			else if (_sectionStart + 1 === _index) {}
// 			else if (_baseState !== TEXT) {
// 				if (c !== "=") {
// 					_parseNamedEntityStrict();
// 				}
// 			} else {
// 				_parseLegacyEntity();
// 			}
// 			_state = _baseState;
// 			_index--;
// 		}
// 	};
// 	function _decodeNumericEntity(offset: number, base: number) {
// 		var sectionStart = _sectionStart + offset;
// 		if (sectionStart !== _index) {
// 			//parse entity
// 			var entity = _buffer.substring(sectionStart, _index);
// 			var parsed = parseInt(entity, base);
// 			_emitPartial(decodeCodePoint(parsed));
// 			_sectionStart = _index;
// 		} else {
// 			_sectionStart--;
// 		}
// 		_state = _baseState;
// 	};
// 	function _stateInNumericEntity(c: string) {
// 		if (c === ";") {
// 			_decodeNumericEntity(2, 10);
// 			_sectionStart++;
// 		} else if (c < "0" || c > "9") {
// 			if (!_xmlMode) {
// 				_decodeNumericEntity(2, 10);
// 			} else {
// 				_state = _baseState;
// 			}
// 			_index--;
// 		}
// 	};
// 	function _stateInHexEntity(c: string) {
// 		if (c === ";") {
// 			_decodeNumericEntity(3, 16);
// 			_sectionStart++;
// 		} else if (
// 			(c < "a" || c > "f") &&
// 			(c < "A" || c > "F") &&
// 			(c < "0" || c > "9")
// 		) {
// 			if (!_xmlMode) {
// 				_decodeNumericEntity(3, 16);
// 			} else {
// 				_state = _baseState;
// 			}
// 			_index--;
// 		}
// 	};
// 	function _cleanup() {
// 		if (_sectionStart < 0) {
// 			_buffer = "";
// 			_index = 0;
// 		} else {
// 			if (_state === TEXT) {
// 				if (_sectionStart !== _index) {
// 					ontext(_buffer.substr(_sectionStart));
// 				}
// 				_buffer = "";
// 				_index = 0;
// 			} else if (_sectionStart === _index) {
// 				//the section just started
// 				_buffer = "";
// 				_index = 0;
// 			} else {
// 				//remove everything unnecessary
// 				_buffer = _buffer.substr(_sectionStart);
// 				_index -= _sectionStart;
// 			}
// 			_sectionStart = 0;
// 		}
// 	};
// 	function _parse() {
// 		while (_index < _buffer.length) {
// 			var c = _buffer.charAt(_index);
// 			if (_state === TEXT) {
// 				_stateText(c);
// 			} else if (_state === BEFORE_TAG_NAME) {
// 				_stateBeforeTagName(c);
// 			} else if (_state === IN_TAG_NAME) {
// 				_stateInTagName(c);
// 			} else if (_state === BEFORE_CLOSING_TAG_NAME) {
// 				_stateBeforeCloseingTagName(c);
// 			} else if (_state === IN_CLOSING_TAG_NAME) {
// 				_stateInCloseingTagName(c);
// 			} else if (_state === AFTER_CLOSING_TAG_NAME) {
// 				_stateAfterCloseingTagName(c);
// 			} else if (_state === IN_SELF_CLOSING_TAG) {
// 				_stateInSelfClosingTag(c);
// 			} else if (_state === BEFORE_ATTRIBUTE_NAME) {
// 			/*
// 			*	attributes
// 			*/
// 				_stateBeforeAttributeName(c);
// 			} else if (_state === IN_ATTRIBUTE_NAME) {
// 				_stateInAttributeName(c);
// 			} else if (_state === AFTER_ATTRIBUTE_NAME) {
// 				_stateAfterAttributeName(c);
// 			} else if (_state === BEFORE_ATTRIBUTE_VALUE) {
// 				_stateBeforeAttributeValue(c);
// 			} else if (_state === IN_ATTRIBUTE_VALUE_DQ) {
// 				_stateInAttributeValueDoubleQuotes(c);
// 			} else if (_state === IN_ATTRIBUTE_VALUE_SQ) {
// 				_stateInAttributeValueSingleQuotes(c);
// 			} else if (_state === IN_ATTRIBUTE_VALUE_NQ) {
// 				_stateInAttributeValueNoQuotes(c);
// 			} else if (_state === BEFORE_DECLARATION) {
// 			/*
// 			*	declarations
// 			*/
// 				_stateBeforeDeclaration(c);
// 			} else if (_state === IN_DECLARATION) {
// 				_stateInDeclaration(c);
// 			} else if (_state === IN_PROCESSING_INSTRUCTION) {
// 			/*
// 			*	processing instructions
// 			*/
// 				_stateInProcessingInstruction(c);
// 			} else if (_state === BEFORE_COMMENT) {
// 			/*
// 			*	comments
// 			*/
// 				_stateBeforeComment(c);
// 			} else if (_state === IN_COMMENT) {
// 				_stateInComment(c);
// 			} else if (_state === AFTER_COMMENT_1) {
// 				_stateAfterComment1(c);
// 			} else if (_state === AFTER_COMMENT_2) {
// 				_stateAfterComment2(c);
// 			} else if (_state === BEFORE_CDATA_1) {
// 			/*
// 			*	cdata
// 			*/
// 				_stateBeforeCdata1(c);
// 			} else if (_state === BEFORE_CDATA_2) {
// 				_stateBeforeCdata2(c);
// 			} else if (_state === BEFORE_CDATA_3) {
// 				_stateBeforeCdata3(c);
// 			} else if (_state === BEFORE_CDATA_4) {
// 				_stateBeforeCdata4(c);
// 			} else if (_state === BEFORE_CDATA_5) {
// 				_stateBeforeCdata5(c);
// 			} else if (_state === BEFORE_CDATA_6) {
// 				_stateBeforeCdata6(c);
// 			} else if (_state === IN_CDATA) {
// 				_stateInCdata(c);
// 			} else if (_state === AFTER_CDATA_1) {
// 				_stateAfterCdata1(c);
// 			} else if (_state === AFTER_CDATA_2) {
// 				_stateAfterCdata2(c);
// 			} else if (_state === BEFORE_SPECIAL) {
// 			/*
// 			* special tags
// 			*/
// 				_stateBeforeSpecial(c);
// 			} else if (_state === BEFORE_SPECIAL_END) {
// 				_stateBeforeSpecialEnd(c);
// 			} else if (_state === BEFORE_SCRIPT_1) {
// 			/*
// 			* script
// 			*/
// 				_stateBeforeScript1(c);
// 			} else if (_state === BEFORE_SCRIPT_2) {
// 				_stateBeforeScript2(c);
// 			} else if (_state === BEFORE_SCRIPT_3) {
// 				_stateBeforeScript3(c);
// 			} else if (_state === BEFORE_SCRIPT_4) {
// 				_stateBeforeScript4(c);
// 			} else if (_state === BEFORE_SCRIPT_5) {
// 				_stateBeforeScript5(c);
// 			} else if (_state === AFTER_SCRIPT_1) {
// 				_stateAfterScript1(c);
// 			} else if (_state === AFTER_SCRIPT_2) {
// 				_stateAfterScript2(c);
// 			} else if (_state === AFTER_SCRIPT_3) {
// 				_stateAfterScript3(c);
// 			} else if (_state === AFTER_SCRIPT_4) {
// 				_stateAfterScript4(c);
// 			} else if (_state === AFTER_SCRIPT_5) {
// 				_stateAfterScript5(c);
// 			} else if (_state === BEFORE_STYLE_1) {
// 			/*
// 			* style
// 			*/
// 				_stateBeforeStyle1(c);
// 			} else if (_state === BEFORE_STYLE_2) {
// 				_stateBeforeStyle2(c);
// 			} else if (_state === BEFORE_STYLE_3) {
// 				_stateBeforeStyle3(c);
// 			} else if (_state === BEFORE_STYLE_4) {
// 				_stateBeforeStyle4(c);
// 			} else if (_state === AFTER_STYLE_1) {
// 				_stateAfterStyle1(c);
// 			} else if (_state === AFTER_STYLE_2) {
// 				_stateAfterStyle2(c);
// 			} else if (_state === AFTER_STYLE_3) {
// 				_stateAfterStyle3(c);
// 			} else if (_state === AFTER_STYLE_4) {
// 				_stateAfterStyle4(c);
// 			} else if (_state === BEFORE_ENTITY) {
// 			/*
// 			* entities
// 			*/
// 				_stateBeforeEntity(c);
// 			} else if (_state === BEFORE_NUMERIC_ENTITY) {
// 				_stateBeforeNumericEntity(c);
// 			} else if (_state === IN_NAMED_ENTITY) {
// 				_stateInNamedEntity(c);
// 			} else if (_state === IN_NUMERIC_ENTITY) {
// 				_stateInNumericEntity(c);
// 			} else if (_state === IN_HEX_ENTITY) {
// 				_stateInHexEntity(c);
// 			} else {
// 				onerror(new Error("unknown _state"), _state);
// 			}
// 			_index++;
// 		}
// 		_cleanup();
// 	};
// 	function _getSection() {
// 		return _buffer.substring(_sectionStart, _index);
// 	};
// 	function _emitToken(name: 'onopentagname' | 'onclosetag') {
// 		if( name === 'onopentagname' ) {
// 			onopentagname(_getSection());
// 		} else if( name === 'onclosetag' ) {
// 			onclosetag(_getSection());
// 		}
// 		_sectionStart = -1;
// 	};
// 	function _emitPartial(value: string) {
// 		if (_baseState !== TEXT) {
// 			//_cbs.onattribdata(value); //TODO implement the new event
// 		} else {
// 			ontext(value);
// 		}
// 	};
// }

//# sourceMappingURL=tokenizer.js.map