diff options
author | Thomas Voss <mail@thomasvoss.com> | 2025-06-06 02:49:26 +0200 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2025-06-06 02:49:26 +0200 |
commit | 746a09a5854b9ce17e40caead51e1a42c2721bb1 (patch) | |
tree | 474d9a11c3b82196577b61333dffe3c94c5258fb /vendor/golang.org/x/text/feature | |
parent | efa0bd7df5f51d47c50efc446fd2f32996ab79be (diff) |
Unvendor dependencies
Diffstat (limited to 'vendor/golang.org/x/text/feature')
-rw-r--r-- | vendor/golang.org/x/text/feature/plural/common.go | 70 | ||||
-rw-r--r-- | vendor/golang.org/x/text/feature/plural/message.go | 244 | ||||
-rw-r--r-- | vendor/golang.org/x/text/feature/plural/plural.go | 262 | ||||
-rw-r--r-- | vendor/golang.org/x/text/feature/plural/tables.go | 552 |
4 files changed, 0 insertions, 1128 deletions
diff --git a/vendor/golang.org/x/text/feature/plural/common.go b/vendor/golang.org/x/text/feature/plural/common.go deleted file mode 100644 index fdcb373..0000000 --- a/vendor/golang.org/x/text/feature/plural/common.go +++ /dev/null @@ -1,70 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package plural - -// Form defines a plural form. -// -// Not all languages support all forms. Also, the meaning of each form varies -// per language. It is important to note that the name of a form does not -// necessarily correspond one-to-one with the set of numbers. For instance, -// for Croation, One matches not only 1, but also 11, 21, etc. -// -// Each language must at least support the form "other". -type Form byte - -const ( - Other Form = iota - Zero - One - Two - Few - Many -) - -var countMap = map[string]Form{ - "other": Other, - "zero": Zero, - "one": One, - "two": Two, - "few": Few, - "many": Many, -} - -type pluralCheck struct { - // category: - // 3..7: opID - // 0..2: category - cat byte - setID byte -} - -// opID identifies the type of operand in the plural rule, being i, n or f. -// (v, w, and t are treated as filters in our implementation.) -type opID byte - -const ( - opMod opID = 0x1 // is '%' used? - opNotEqual opID = 0x2 // using "!=" to compare - opI opID = 0 << 2 // integers after taking the absolute value - opN opID = 1 << 2 // full number (must be integer) - opF opID = 2 << 2 // fraction - opV opID = 3 << 2 // number of visible digits - opW opID = 4 << 2 // number of visible digits without trailing zeros - opBretonM opID = 5 << 2 // hard-wired rule for Breton - opItalian800 opID = 6 << 2 // hard-wired rule for Italian - opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan -) -const ( - // Use this plural form to indicate the next rule needs to match as well. - // The last condition in the list will have the correct plural form. - andNext = 0x7 - formMask = 0x7 - - opShift = 3 - - // numN indicates the maximum integer, or maximum mod value, for which we - // have inclusion masks. - numN = 100 - // The common denominator of the modulo that is taken. - maxMod = 100 -) diff --git a/vendor/golang.org/x/text/feature/plural/message.go b/vendor/golang.org/x/text/feature/plural/message.go deleted file mode 100644 index 56d518c..0000000 --- a/vendor/golang.org/x/text/feature/plural/message.go +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package plural - -import ( - "fmt" - "io" - "reflect" - "strconv" - - "golang.org/x/text/internal/catmsg" - "golang.org/x/text/internal/number" - "golang.org/x/text/language" - "golang.org/x/text/message/catalog" -) - -// TODO: consider deleting this interface. Maybe VisibleDigits is always -// sufficient and practical. - -// Interface is used for types that can determine their own plural form. -type Interface interface { - // PluralForm reports the plural form for the given language of the - // underlying value. It also returns the integer value. If the integer value - // is larger than fits in n, PluralForm may return a value modulo - // 10,000,000. - PluralForm(t language.Tag, scale int) (f Form, n int) -} - -// Selectf returns the first case for which its selector is a match for the -// arg-th substitution argument to a formatting call, formatting it as indicated -// by format. -// -// The cases argument are pairs of selectors and messages. Selectors are of type -// string or Form. Messages are of type string or catalog.Message. A selector -// matches an argument if: -// - it is "other" or Other -// - it matches the plural form of the argument: "zero", "one", "two", "few", -// or "many", or the equivalent Form -// - it is of the form "=x" where x is an integer that matches the value of -// the argument. -// - it is of the form "<x" where x is an integer that is larger than the -// argument. -// -// The format argument determines the formatting parameters for which to -// determine the plural form. This is especially relevant for non-integer -// values. -// -// The format string may be "", in which case a best-effort attempt is made to -// find a reasonable representation on which to base the plural form. Examples -// of format strings are: -// - %.2f decimal with scale 2 -// - %.2e scientific notation with precision 3 (scale + 1) -// - %d integer -func Selectf(arg int, format string, cases ...interface{}) catalog.Message { - var p parser - // Intercept the formatting parameters of format by doing a dummy print. - fmt.Fprintf(io.Discard, format, &p) - m := &message{arg, kindDefault, 0, cases} - switch p.verb { - case 'g': - m.kind = kindPrecision - m.scale = p.scale - case 'f': - m.kind = kindScale - m.scale = p.scale - case 'e': - m.kind = kindScientific - m.scale = p.scale - case 'd': - m.kind = kindScale - m.scale = 0 - default: - // TODO: do we need to handle errors? - } - return m -} - -type parser struct { - verb rune - scale int -} - -func (p *parser) Format(s fmt.State, verb rune) { - p.verb = verb - p.scale = -1 - if prec, ok := s.Precision(); ok { - p.scale = prec - } -} - -type message struct { - arg int - kind int - scale int - cases []interface{} -} - -const ( - // Start with non-ASCII to allow skipping values. - kindDefault = 0x80 + iota - kindScale // verb f, number of fraction digits follows - kindScientific // verb e, number of fraction digits follows - kindPrecision // verb g, number of significant digits follows -) - -var handle = catmsg.Register("golang.org/x/text/feature/plural:plural", execute) - -func (m *message) Compile(e *catmsg.Encoder) error { - e.EncodeMessageType(handle) - - e.EncodeUint(uint64(m.arg)) - - e.EncodeUint(uint64(m.kind)) - if m.kind > kindDefault { - e.EncodeUint(uint64(m.scale)) - } - - forms := validForms(cardinal, e.Language()) - - for i := 0; i < len(m.cases); { - if err := compileSelector(e, forms, m.cases[i]); err != nil { - return err - } - if i++; i >= len(m.cases) { - return fmt.Errorf("plural: no message defined for selector %v", m.cases[i-1]) - } - var msg catalog.Message - switch x := m.cases[i].(type) { - case string: - msg = catalog.String(x) - case catalog.Message: - msg = x - default: - return fmt.Errorf("plural: message of type %T; must be string or catalog.Message", x) - } - if err := e.EncodeMessage(msg); err != nil { - return err - } - i++ - } - return nil -} - -func compileSelector(e *catmsg.Encoder, valid []Form, selector interface{}) error { - form := Other - switch x := selector.(type) { - case string: - if x == "" { - return fmt.Errorf("plural: empty selector") - } - if c := x[0]; c == '=' || c == '<' { - val, err := strconv.ParseUint(x[1:], 10, 16) - if err != nil { - return fmt.Errorf("plural: invalid number in selector %q: %v", selector, err) - } - e.EncodeUint(uint64(c)) - e.EncodeUint(val) - return nil - } - var ok bool - form, ok = countMap[x] - if !ok { - return fmt.Errorf("plural: invalid plural form %q", selector) - } - case Form: - form = x - default: - return fmt.Errorf("plural: selector of type %T; want string or Form", selector) - } - - ok := false - for _, f := range valid { - if f == form { - ok = true - break - } - } - if !ok { - return fmt.Errorf("plural: form %q not supported for language %q", selector, e.Language()) - } - e.EncodeUint(uint64(form)) - return nil -} - -func execute(d *catmsg.Decoder) bool { - lang := d.Language() - argN := int(d.DecodeUint()) - kind := int(d.DecodeUint()) - scale := -1 // default - if kind > kindDefault { - scale = int(d.DecodeUint()) - } - form := Other - n := -1 - if arg := d.Arg(argN); arg == nil { - // Default to Other. - } else if x, ok := arg.(number.VisibleDigits); ok { - d := x.Digits(nil, lang, scale) - form, n = cardinal.matchDisplayDigits(lang, &d) - } else if x, ok := arg.(Interface); ok { - // This covers lists and formatters from the number package. - form, n = x.PluralForm(lang, scale) - } else { - var f number.Formatter - switch kind { - case kindScale: - f.InitDecimal(lang) - f.SetScale(scale) - case kindScientific: - f.InitScientific(lang) - f.SetScale(scale) - case kindPrecision: - f.InitDecimal(lang) - f.SetPrecision(scale) - case kindDefault: - // sensible default - f.InitDecimal(lang) - if k := reflect.TypeOf(arg).Kind(); reflect.Int <= k && k <= reflect.Uintptr { - f.SetScale(0) - } else { - f.SetScale(2) - } - } - var dec number.Decimal // TODO: buffer in Printer - dec.Convert(f.RoundingContext, arg) - v := number.FormatDigits(&dec, f.RoundingContext) - if !v.NaN && !v.Inf { - form, n = cardinal.matchDisplayDigits(d.Language(), &v) - } - } - for !d.Done() { - f := d.DecodeUint() - if (f == '=' && n == int(d.DecodeUint())) || - (f == '<' && 0 <= n && n < int(d.DecodeUint())) || - form == Form(f) || - Other == Form(f) { - return d.ExecuteMessage() - } - d.SkipMessage() - } - return false -} diff --git a/vendor/golang.org/x/text/feature/plural/plural.go b/vendor/golang.org/x/text/feature/plural/plural.go deleted file mode 100644 index e9f2d42..0000000 --- a/vendor/golang.org/x/text/feature/plural/plural.go +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:generate go run gen.go gen_common.go - -// Package plural provides utilities for handling linguistic plurals in text. -// -// The definitions in this package are based on the plural rule handling defined -// in CLDR. See -// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules for -// details. -package plural - -import ( - "golang.org/x/text/internal/language/compact" - "golang.org/x/text/internal/number" - "golang.org/x/text/language" -) - -// Rules defines the plural rules for all languages for a certain plural type. -// -// This package is UNDER CONSTRUCTION and its API may change. -type Rules struct { - rules []pluralCheck - index []byte - langToIndex []byte - inclusionMasks []uint64 -} - -var ( - // Cardinal defines the plural rules for numbers indicating quantities. - Cardinal *Rules = cardinal - - // Ordinal defines the plural rules for numbers indicating position - // (first, second, etc.). - Ordinal *Rules = ordinal - - ordinal = &Rules{ - ordinalRules, - ordinalIndex, - ordinalLangToIndex, - ordinalInclusionMasks[:], - } - - cardinal = &Rules{ - cardinalRules, - cardinalIndex, - cardinalLangToIndex, - cardinalInclusionMasks[:], - } -) - -// getIntApprox converts the digits in slice digits[start:end] to an integer -// according to the following rules: -// - Let i be asInt(digits[start:end]), where out-of-range digits are assumed -// to be zero. -// - Result n is big if i / 10^nMod > 1. -// - Otherwise the result is i % 10^nMod. -// -// For example, if digits is {1, 2, 3} and start:end is 0:5, then the result -// for various values of nMod is: -// - when nMod == 2, n == big -// - when nMod == 3, n == big -// - when nMod == 4, n == big -// - when nMod == 5, n == 12300 -// - when nMod == 6, n == 12300 -// - when nMod == 7, n == 12300 -func getIntApprox(digits []byte, start, end, nMod, big int) (n int) { - // Leading 0 digits just result in 0. - p := start - if p < 0 { - p = 0 - } - // Range only over the part for which we have digits. - mid := end - if mid >= len(digits) { - mid = len(digits) - } - // Check digits more significant that nMod. - if q := end - nMod; q > 0 { - if q > mid { - q = mid - } - for ; p < q; p++ { - if digits[p] != 0 { - return big - } - } - } - for ; p < mid; p++ { - n = 10*n + int(digits[p]) - } - // Multiply for trailing zeros. - for ; p < end; p++ { - n *= 10 - } - return n -} - -// MatchDigits computes the plural form for the given language and the given -// decimal floating point digits. The digits are stored in big-endian order and -// are of value byte(0) - byte(9). The floating point position is indicated by -// exp and the number of visible decimals is scale. All leading and trailing -// zeros may be omitted from digits. -// -// The following table contains examples of possible arguments to represent -// the given numbers. -// -// decimal digits exp scale -// 123 []byte{1, 2, 3} 3 0 -// 123.4 []byte{1, 2, 3, 4} 3 1 -// 123.40 []byte{1, 2, 3, 4} 3 2 -// 100000 []byte{1} 6 0 -// 100000.00 []byte{1} 6 3 -func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form { - index := tagToID(t) - - // Differentiate up to including mod 1000000 for the integer part. - n := getIntApprox(digits, 0, exp, 6, 1000000) - - // Differentiate up to including mod 100 for the fractional part. - f := getIntApprox(digits, exp, exp+scale, 2, 100) - - return matchPlural(p, index, n, f, scale) -} - -func (p *Rules) matchDisplayDigits(t language.Tag, d *number.Digits) (Form, int) { - n := getIntApprox(d.Digits, 0, int(d.Exp), 6, 1000000) - return p.MatchDigits(t, d.Digits, int(d.Exp), d.NumFracDigits()), n -} - -func validForms(p *Rules, t language.Tag) (forms []Form) { - offset := p.langToIndex[tagToID(t)] - rules := p.rules[p.index[offset]:p.index[offset+1]] - - forms = append(forms, Other) - last := Other - for _, r := range rules { - if cat := Form(r.cat & formMask); cat != andNext && last != cat { - forms = append(forms, cat) - last = cat - } - } - return forms -} - -func (p *Rules) matchComponents(t language.Tag, n, f, scale int) Form { - return matchPlural(p, tagToID(t), n, f, scale) -} - -// MatchPlural returns the plural form for the given language and plural -// operands (as defined in -// https://unicode.org/reports/tr35/tr35-numbers.html#Language_Plural_Rules): -// -// where -// n absolute value of the source number (integer and decimals) -// input -// i integer digits of n. -// v number of visible fraction digits in n, with trailing zeros. -// w number of visible fraction digits in n, without trailing zeros. -// f visible fractional digits in n, with trailing zeros (f = t * 10^(v-w)) -// t visible fractional digits in n, without trailing zeros. -// -// If any of the operand values is too large to fit in an int, it is okay to -// pass the value modulo 10,000,000. -func (p *Rules) MatchPlural(lang language.Tag, i, v, w, f, t int) Form { - return matchPlural(p, tagToID(lang), i, f, v) -} - -func matchPlural(p *Rules, index compact.ID, n, f, v int) Form { - nMask := p.inclusionMasks[n%maxMod] - // Compute the fMask inline in the rules below, as it is relatively rare. - // fMask := p.inclusionMasks[f%maxMod] - vMask := p.inclusionMasks[v%maxMod] - - // Do the matching - offset := p.langToIndex[index] - rules := p.rules[p.index[offset]:p.index[offset+1]] - for i := 0; i < len(rules); i++ { - rule := rules[i] - setBit := uint64(1 << rule.setID) - var skip bool - switch op := opID(rule.cat >> opShift); op { - case opI: // i = x - skip = n >= numN || nMask&setBit == 0 - - case opI | opNotEqual: // i != x - skip = n < numN && nMask&setBit != 0 - - case opI | opMod: // i % m = x - skip = nMask&setBit == 0 - - case opI | opMod | opNotEqual: // i % m != x - skip = nMask&setBit != 0 - - case opN: // n = x - skip = f != 0 || n >= numN || nMask&setBit == 0 - - case opN | opNotEqual: // n != x - skip = f == 0 && n < numN && nMask&setBit != 0 - - case opN | opMod: // n % m = x - skip = f != 0 || nMask&setBit == 0 - - case opN | opMod | opNotEqual: // n % m != x - skip = f == 0 && nMask&setBit != 0 - - case opF: // f = x - skip = f >= numN || p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opNotEqual: // f != x - skip = f < numN && p.inclusionMasks[f%maxMod]&setBit != 0 - - case opF | opMod: // f % m = x - skip = p.inclusionMasks[f%maxMod]&setBit == 0 - - case opF | opMod | opNotEqual: // f % m != x - skip = p.inclusionMasks[f%maxMod]&setBit != 0 - - case opV: // v = x - skip = v < numN && vMask&setBit == 0 - - case opV | opNotEqual: // v != x - skip = v < numN && vMask&setBit != 0 - - case opW: // w == 0 - skip = f != 0 - - case opW | opNotEqual: // w != 0 - skip = f == 0 - - // Hard-wired rules that cannot be handled by our algorithm. - - case opBretonM: - skip = f != 0 || n == 0 || n%1000000 != 0 - - case opAzerbaijan00s: - // 100,200,300,400,500,600,700,800,900 - skip = n == 0 || n >= 1000 || n%100 != 0 - - case opItalian800: - skip = (f != 0 || n >= numN || nMask&setBit == 0) && n != 800 - } - if skip { - // advance over AND entries. - for ; i < len(rules) && rules[i].cat&formMask == andNext; i++ { - } - continue - } - // return if we have a final entry. - if cat := rule.cat & formMask; cat != andNext { - return Form(cat) - } - } - return Other -} - -func tagToID(t language.Tag) compact.ID { - id, _ := compact.RegionalID(compact.Tag(t)) - return id -} diff --git a/vendor/golang.org/x/text/feature/plural/tables.go b/vendor/golang.org/x/text/feature/plural/tables.go deleted file mode 100644 index b06b9cb..0000000 --- a/vendor/golang.org/x/text/feature/plural/tables.go +++ /dev/null @@ -1,552 +0,0 @@ -// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. - -package plural - -// CLDRVersion is the CLDR version from which the tables in this package are derived. -const CLDRVersion = "32" - -var ordinalRules = []pluralCheck{ // 64 elements - 0: {cat: 0x2f, setID: 0x4}, - 1: {cat: 0x3a, setID: 0x5}, - 2: {cat: 0x22, setID: 0x1}, - 3: {cat: 0x22, setID: 0x6}, - 4: {cat: 0x22, setID: 0x7}, - 5: {cat: 0x2f, setID: 0x8}, - 6: {cat: 0x3c, setID: 0x9}, - 7: {cat: 0x2f, setID: 0xa}, - 8: {cat: 0x3c, setID: 0xb}, - 9: {cat: 0x2c, setID: 0xc}, - 10: {cat: 0x24, setID: 0xd}, - 11: {cat: 0x2d, setID: 0xe}, - 12: {cat: 0x2d, setID: 0xf}, - 13: {cat: 0x2f, setID: 0x10}, - 14: {cat: 0x35, setID: 0x3}, - 15: {cat: 0xc5, setID: 0x11}, - 16: {cat: 0x2, setID: 0x1}, - 17: {cat: 0x5, setID: 0x3}, - 18: {cat: 0xd, setID: 0x12}, - 19: {cat: 0x22, setID: 0x1}, - 20: {cat: 0x2f, setID: 0x13}, - 21: {cat: 0x3d, setID: 0x14}, - 22: {cat: 0x2f, setID: 0x15}, - 23: {cat: 0x3a, setID: 0x16}, - 24: {cat: 0x2f, setID: 0x17}, - 25: {cat: 0x3b, setID: 0x18}, - 26: {cat: 0x2f, setID: 0xa}, - 27: {cat: 0x3c, setID: 0xb}, - 28: {cat: 0x22, setID: 0x1}, - 29: {cat: 0x23, setID: 0x19}, - 30: {cat: 0x24, setID: 0x1a}, - 31: {cat: 0x22, setID: 0x1b}, - 32: {cat: 0x23, setID: 0x2}, - 33: {cat: 0x24, setID: 0x1a}, - 34: {cat: 0xf, setID: 0x15}, - 35: {cat: 0x1a, setID: 0x16}, - 36: {cat: 0xf, setID: 0x17}, - 37: {cat: 0x1b, setID: 0x18}, - 38: {cat: 0xf, setID: 0x1c}, - 39: {cat: 0x1d, setID: 0x1d}, - 40: {cat: 0xa, setID: 0x1e}, - 41: {cat: 0xa, setID: 0x1f}, - 42: {cat: 0xc, setID: 0x20}, - 43: {cat: 0xe4, setID: 0x0}, - 44: {cat: 0x5, setID: 0x3}, - 45: {cat: 0xd, setID: 0xe}, - 46: {cat: 0xd, setID: 0x21}, - 47: {cat: 0x22, setID: 0x1}, - 48: {cat: 0x23, setID: 0x19}, - 49: {cat: 0x24, setID: 0x1a}, - 50: {cat: 0x25, setID: 0x22}, - 51: {cat: 0x22, setID: 0x23}, - 52: {cat: 0x23, setID: 0x19}, - 53: {cat: 0x24, setID: 0x1a}, - 54: {cat: 0x25, setID: 0x22}, - 55: {cat: 0x22, setID: 0x24}, - 56: {cat: 0x23, setID: 0x19}, - 57: {cat: 0x24, setID: 0x1a}, - 58: {cat: 0x25, setID: 0x22}, - 59: {cat: 0x21, setID: 0x25}, - 60: {cat: 0x22, setID: 0x1}, - 61: {cat: 0x23, setID: 0x2}, - 62: {cat: 0x24, setID: 0x26}, - 63: {cat: 0x25, setID: 0x27}, -} // Size: 152 bytes - -var ordinalIndex = []uint8{ // 22 elements - 0x00, 0x00, 0x02, 0x03, 0x04, 0x05, 0x07, 0x09, - 0x0b, 0x0f, 0x10, 0x13, 0x16, 0x1c, 0x1f, 0x22, - 0x28, 0x2f, 0x33, 0x37, 0x3b, 0x40, -} // Size: 46 bytes - -var ordinalLangToIndex = []uint8{ // 775 elements - // Entry 0 - 3F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x00, 0x00, 0x05, 0x05, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 40 - 7F - 0x12, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 80 - BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - // Entry C0 - FF - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 100 - 13F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - // Entry 140 - 17F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 180 - 1BF - 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 1C0 - 1FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x0d, 0x0d, 0x02, 0x02, 0x02, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 200 - 23F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x13, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 240 - 27F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 280 - 2BF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0x0b, 0x0b, 0x0b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, - // Entry 2C0 - 2FF - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 300 - 33F - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0c, -} // Size: 799 bytes - -var ordinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000002000010009, 0x00000018482000d3, 0x0000000042840195, 0x000000410a040581, - 0x00000041040c0081, 0x0000009840040041, 0x0000008400045001, 0x0000003850040001, - 0x0000003850060001, 0x0000003800049001, 0x0000000800052001, 0x0000000040660031, - 0x0000000041840331, 0x0000000100040f01, 0x00000001001c0001, 0x0000000040040001, - 0x0000000000045001, 0x0000000070040001, 0x0000000070040001, 0x0000000000049001, - 0x0000000080050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000000010001, 0x0000000040200011, - // Entry 20 - 3F - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000200050001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - // Entry 40 - 5F - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000080010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, - 0x0000000080070001, 0x0000000040200011, 0x0000000040800111, 0x0000000100000501, - 0x0000000100080001, 0x0000000040000001, 0x0000000000005001, 0x0000000050000001, - 0x0000000050000001, 0x0000000000009001, 0x0000000200010001, 0x0000000040200011, - 0x0000000040800111, 0x0000000100000501, 0x0000000100080001, 0x0000000040000001, - // Entry 60 - 7F - 0x0000000000005001, 0x0000000050000001, 0x0000000050000001, 0x0000000000009001, -} // Size: 824 bytes - -// Slots used for ordinal: 40 of 0xFF rules; 16 of 0xFF indexes; 40 of 64 sets - -var cardinalRules = []pluralCheck{ // 166 elements - 0: {cat: 0x2, setID: 0x3}, - 1: {cat: 0x22, setID: 0x1}, - 2: {cat: 0x2, setID: 0x4}, - 3: {cat: 0x2, setID: 0x4}, - 4: {cat: 0x7, setID: 0x1}, - 5: {cat: 0x62, setID: 0x3}, - 6: {cat: 0x22, setID: 0x4}, - 7: {cat: 0x7, setID: 0x3}, - 8: {cat: 0x42, setID: 0x1}, - 9: {cat: 0x22, setID: 0x4}, - 10: {cat: 0x22, setID: 0x4}, - 11: {cat: 0x22, setID: 0x5}, - 12: {cat: 0x22, setID: 0x1}, - 13: {cat: 0x22, setID: 0x1}, - 14: {cat: 0x7, setID: 0x4}, - 15: {cat: 0x92, setID: 0x3}, - 16: {cat: 0xf, setID: 0x6}, - 17: {cat: 0x1f, setID: 0x7}, - 18: {cat: 0x82, setID: 0x3}, - 19: {cat: 0x92, setID: 0x3}, - 20: {cat: 0xf, setID: 0x6}, - 21: {cat: 0x62, setID: 0x3}, - 22: {cat: 0x4a, setID: 0x6}, - 23: {cat: 0x7, setID: 0x8}, - 24: {cat: 0x62, setID: 0x3}, - 25: {cat: 0x1f, setID: 0x9}, - 26: {cat: 0x62, setID: 0x3}, - 27: {cat: 0x5f, setID: 0x9}, - 28: {cat: 0x72, setID: 0x3}, - 29: {cat: 0x29, setID: 0xa}, - 30: {cat: 0x29, setID: 0xb}, - 31: {cat: 0x4f, setID: 0xb}, - 32: {cat: 0x61, setID: 0x2}, - 33: {cat: 0x2f, setID: 0x6}, - 34: {cat: 0x3a, setID: 0x7}, - 35: {cat: 0x4f, setID: 0x6}, - 36: {cat: 0x5f, setID: 0x7}, - 37: {cat: 0x62, setID: 0x2}, - 38: {cat: 0x4f, setID: 0x6}, - 39: {cat: 0x72, setID: 0x2}, - 40: {cat: 0x21, setID: 0x3}, - 41: {cat: 0x7, setID: 0x4}, - 42: {cat: 0x32, setID: 0x3}, - 43: {cat: 0x21, setID: 0x3}, - 44: {cat: 0x22, setID: 0x1}, - 45: {cat: 0x22, setID: 0x1}, - 46: {cat: 0x23, setID: 0x2}, - 47: {cat: 0x2, setID: 0x3}, - 48: {cat: 0x22, setID: 0x1}, - 49: {cat: 0x24, setID: 0xc}, - 50: {cat: 0x7, setID: 0x1}, - 51: {cat: 0x62, setID: 0x3}, - 52: {cat: 0x74, setID: 0x3}, - 53: {cat: 0x24, setID: 0x3}, - 54: {cat: 0x2f, setID: 0xd}, - 55: {cat: 0x34, setID: 0x1}, - 56: {cat: 0xf, setID: 0x6}, - 57: {cat: 0x1f, setID: 0x7}, - 58: {cat: 0x62, setID: 0x3}, - 59: {cat: 0x4f, setID: 0x6}, - 60: {cat: 0x5a, setID: 0x7}, - 61: {cat: 0xf, setID: 0xe}, - 62: {cat: 0x1f, setID: 0xf}, - 63: {cat: 0x64, setID: 0x3}, - 64: {cat: 0x4f, setID: 0xe}, - 65: {cat: 0x5c, setID: 0xf}, - 66: {cat: 0x22, setID: 0x10}, - 67: {cat: 0x23, setID: 0x11}, - 68: {cat: 0x24, setID: 0x12}, - 69: {cat: 0xf, setID: 0x1}, - 70: {cat: 0x62, setID: 0x3}, - 71: {cat: 0xf, setID: 0x2}, - 72: {cat: 0x63, setID: 0x3}, - 73: {cat: 0xf, setID: 0x13}, - 74: {cat: 0x64, setID: 0x3}, - 75: {cat: 0x74, setID: 0x3}, - 76: {cat: 0xf, setID: 0x1}, - 77: {cat: 0x62, setID: 0x3}, - 78: {cat: 0x4a, setID: 0x1}, - 79: {cat: 0xf, setID: 0x2}, - 80: {cat: 0x63, setID: 0x3}, - 81: {cat: 0x4b, setID: 0x2}, - 82: {cat: 0xf, setID: 0x13}, - 83: {cat: 0x64, setID: 0x3}, - 84: {cat: 0x4c, setID: 0x13}, - 85: {cat: 0x7, setID: 0x1}, - 86: {cat: 0x62, setID: 0x3}, - 87: {cat: 0x7, setID: 0x2}, - 88: {cat: 0x63, setID: 0x3}, - 89: {cat: 0x2f, setID: 0xa}, - 90: {cat: 0x37, setID: 0x14}, - 91: {cat: 0x65, setID: 0x3}, - 92: {cat: 0x7, setID: 0x1}, - 93: {cat: 0x62, setID: 0x3}, - 94: {cat: 0x7, setID: 0x15}, - 95: {cat: 0x64, setID: 0x3}, - 96: {cat: 0x75, setID: 0x3}, - 97: {cat: 0x7, setID: 0x1}, - 98: {cat: 0x62, setID: 0x3}, - 99: {cat: 0xf, setID: 0xe}, - 100: {cat: 0x1f, setID: 0xf}, - 101: {cat: 0x64, setID: 0x3}, - 102: {cat: 0xf, setID: 0x16}, - 103: {cat: 0x17, setID: 0x1}, - 104: {cat: 0x65, setID: 0x3}, - 105: {cat: 0xf, setID: 0x17}, - 106: {cat: 0x65, setID: 0x3}, - 107: {cat: 0xf, setID: 0xf}, - 108: {cat: 0x65, setID: 0x3}, - 109: {cat: 0x2f, setID: 0x6}, - 110: {cat: 0x3a, setID: 0x7}, - 111: {cat: 0x2f, setID: 0xe}, - 112: {cat: 0x3c, setID: 0xf}, - 113: {cat: 0x2d, setID: 0xa}, - 114: {cat: 0x2d, setID: 0x17}, - 115: {cat: 0x2d, setID: 0x18}, - 116: {cat: 0x2f, setID: 0x6}, - 117: {cat: 0x3a, setID: 0xb}, - 118: {cat: 0x2f, setID: 0x19}, - 119: {cat: 0x3c, setID: 0xb}, - 120: {cat: 0x55, setID: 0x3}, - 121: {cat: 0x22, setID: 0x1}, - 122: {cat: 0x24, setID: 0x3}, - 123: {cat: 0x2c, setID: 0xc}, - 124: {cat: 0x2d, setID: 0xb}, - 125: {cat: 0xf, setID: 0x6}, - 126: {cat: 0x1f, setID: 0x7}, - 127: {cat: 0x62, setID: 0x3}, - 128: {cat: 0xf, setID: 0xe}, - 129: {cat: 0x1f, setID: 0xf}, - 130: {cat: 0x64, setID: 0x3}, - 131: {cat: 0xf, setID: 0xa}, - 132: {cat: 0x65, setID: 0x3}, - 133: {cat: 0xf, setID: 0x17}, - 134: {cat: 0x65, setID: 0x3}, - 135: {cat: 0xf, setID: 0x18}, - 136: {cat: 0x65, setID: 0x3}, - 137: {cat: 0x2f, setID: 0x6}, - 138: {cat: 0x3a, setID: 0x1a}, - 139: {cat: 0x2f, setID: 0x1b}, - 140: {cat: 0x3b, setID: 0x1c}, - 141: {cat: 0x2f, setID: 0x1d}, - 142: {cat: 0x3c, setID: 0x1e}, - 143: {cat: 0x37, setID: 0x3}, - 144: {cat: 0xa5, setID: 0x0}, - 145: {cat: 0x22, setID: 0x1}, - 146: {cat: 0x23, setID: 0x2}, - 147: {cat: 0x24, setID: 0x1f}, - 148: {cat: 0x25, setID: 0x20}, - 149: {cat: 0xf, setID: 0x6}, - 150: {cat: 0x62, setID: 0x3}, - 151: {cat: 0xf, setID: 0x1b}, - 152: {cat: 0x63, setID: 0x3}, - 153: {cat: 0xf, setID: 0x21}, - 154: {cat: 0x64, setID: 0x3}, - 155: {cat: 0x75, setID: 0x3}, - 156: {cat: 0x21, setID: 0x3}, - 157: {cat: 0x22, setID: 0x1}, - 158: {cat: 0x23, setID: 0x2}, - 159: {cat: 0x2c, setID: 0x22}, - 160: {cat: 0x2d, setID: 0x5}, - 161: {cat: 0x21, setID: 0x3}, - 162: {cat: 0x22, setID: 0x1}, - 163: {cat: 0x23, setID: 0x2}, - 164: {cat: 0x24, setID: 0x23}, - 165: {cat: 0x25, setID: 0x24}, -} // Size: 356 bytes - -var cardinalIndex = []uint8{ // 36 elements - 0x00, 0x00, 0x02, 0x03, 0x04, 0x06, 0x09, 0x0a, - 0x0c, 0x0d, 0x10, 0x14, 0x17, 0x1d, 0x28, 0x2b, - 0x2d, 0x2f, 0x32, 0x38, 0x42, 0x45, 0x4c, 0x55, - 0x5c, 0x61, 0x6d, 0x74, 0x79, 0x7d, 0x89, 0x91, - 0x95, 0x9c, 0xa1, 0xa6, -} // Size: 60 bytes - -var cardinalLangToIndex = []uint8{ // 775 elements - // Entry 0 - 3F - 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x06, 0x06, - 0x01, 0x01, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, - 0x01, 0x01, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x00, 0x00, 0x1a, 0x1a, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x00, 0x00, - // Entry 40 - 7F - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x1e, - 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x18, 0x18, 0x00, 0x00, 0x22, 0x22, 0x09, 0x09, - 0x09, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x00, 0x00, 0x16, 0x16, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 80 - BF - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - // Entry C0 - FF - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - // Entry 100 - 13F - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, - 0x08, 0x08, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x0c, 0x0c, - 0x08, 0x08, 0x08, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - // Entry 140 - 17F - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x08, 0x08, 0x04, 0x04, 0x1f, 0x1f, - 0x14, 0x14, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, - 0x01, 0x01, 0x06, 0x00, 0x00, 0x20, 0x20, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x17, 0x17, 0x01, - 0x01, 0x13, 0x13, 0x13, 0x16, 0x16, 0x08, 0x08, - 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 180 - 1BF - 0x00, 0x04, 0x0a, 0x0a, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x10, 0x17, 0x00, 0x00, 0x00, 0x08, 0x08, - 0x04, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x02, - 0x02, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x00, 0x0f, 0x0f, 0x08, 0x10, - // Entry 1C0 - 1FF - 0x10, 0x08, 0x08, 0x0e, 0x0e, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x08, - 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, - 0x00, 0x00, 0x08, 0x08, 0x0b, 0x0b, 0x08, 0x08, - 0x08, 0x08, 0x12, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 200 - 23F - 0x00, 0x08, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, - 0x06, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x08, 0x19, 0x19, 0x0d, 0x0d, - 0x08, 0x08, 0x03, 0x04, 0x03, 0x04, 0x04, 0x04, - // Entry 240 - 27F - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x12, - 0x12, 0x12, 0x08, 0x08, 0x1d, 0x1d, 0x1d, 0x1d, - 0x1d, 0x1d, 0x1d, 0x00, 0x00, 0x08, 0x08, 0x00, - 0x00, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, - 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x13, 0x11, 0x11, 0x11, 0x11, 0x11, - 0x05, 0x05, 0x18, 0x18, 0x15, 0x15, 0x10, 0x10, - // Entry 280 - 2BF - 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, - 0x08, 0x08, 0x08, 0x0c, 0x08, 0x00, 0x00, 0x08, - // Entry 2C0 - 2FF - 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x07, 0x08, 0x08, 0x1d, 0x1d, 0x04, 0x04, 0x04, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x00, 0x00, 0x04, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - // Entry 300 - 33F - 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, 0x04, -} // Size: 799 bytes - -var cardinalInclusionMasks = []uint64{ // 100 elements - // Entry 0 - 1F - 0x0000000200500419, 0x0000000000512153, 0x000000000a327105, 0x0000000ca23c7101, - 0x00000004a23c7201, 0x0000000482943001, 0x0000001482943201, 0x0000000502943001, - 0x0000000502943001, 0x0000000522943201, 0x0000000540543401, 0x00000000454128e1, - 0x000000005b02e821, 0x000000006304e821, 0x000000006304ea21, 0x0000000042842821, - 0x0000000042842a21, 0x0000000042842821, 0x0000000042842821, 0x0000000062842a21, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, - // Entry 20 - 3F - 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, - 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000000400421, 0x0000000000400061, - 0x000000000a004021, 0x0000000022004021, 0x0000000022004221, 0x0000000002800021, - 0x0000000002800221, 0x0000000002800021, 0x0000000002800021, 0x0000000022800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - // Entry 40 - 5F - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, - 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, - 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, - 0x0000000200400421, 0x0000000000400061, 0x000000000a004021, 0x0000000022004021, - 0x0000000022004221, 0x0000000002800021, 0x0000000002800221, 0x0000000002800021, - 0x0000000002800021, 0x0000000022800221, 0x0000000040400421, 0x0000000044400061, - 0x000000005a004021, 0x0000000062004021, 0x0000000062004221, 0x0000000042800021, - // Entry 60 - 7F - 0x0000000042800221, 0x0000000042800021, 0x0000000042800021, 0x0000000062800221, -} // Size: 824 bytes - -// Slots used for cardinal: A6 of 0xFF rules; 24 of 0xFF indexes; 37 of 64 sets - -// Total table size 3860 bytes (3KiB); checksum: AAFBF21 |