// generated by go run gen.go; DO NOT EDIT

package publicsuffix

import _ "embed"

const version = "publicsuffix.org's public_suffix_list.dat, git revision e248cbc92a527a166454afe9914c4c1b4253893f (2022-11-15T18:02:38Z)"

const (
	nodesBits           = 40
	nodesBitsChildren   = 10
	nodesBitsICANN      = 1
	nodesBitsTextOffset = 16
	nodesBitsTextLength = 6

	childrenBitsWildcard = 1
	childrenBitsNodeType = 2
	childrenBitsHi       = 14
	childrenBitsLo       = 14
)

const (
	nodeTypeNormal     = 0
	nodeTypeException  = 1
	nodeTypeParentOnly = 2
)

// numTLD is the number of top level domains.
const numTLD = 1494

// text is the combined text of all labels.
//
//go:embed data/text
var text string

// nodes is the list of nodes. Each node is represented as a 40-bit integer,
// which encodes the node's children, wildcard bit and node type (as an index
// into the children array), ICANN bit and text.
//
// The layout within the node, from MSB to LSB, is:
//
//	[ 7 bits] unused
//	[10 bits] children index
//	[ 1 bits] ICANN bit
//	[16 bits] text index
//	[ 6 bits] text length
//
//go:embed data/nodes
var nodes uint40String

// children is the list of nodes' children, the parent's wildcard bit and the
// parent's node type. If a node has no children then their children index
// will be in the range [0, 6), depending on the wildcard bit and node type.
//
// The layout within the uint32, from MSB to LSB, is:
//
//	[ 1 bits] unused
//	[ 1 bits] wildcard bit
//	[ 2 bits] node type
//	[14 bits] high nodes index (exclusive) of children
//	[14 bits] low nodes index (inclusive) of children
//
//go:embed data/children
var children uint32String

// max children 718 (capacity 1023)
// max text offset 32976 (capacity 65535)
// max text length 36 (capacity 63)
// max hi 9656 (capacity 16383)
// max lo 9651 (capacity 16383)
